puppet 0.18.4 → 0.22.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (673) hide show
  1. data/CHANGELOG +288 -0
  2. data/README +2 -2
  3. data/Rakefile +78 -5
  4. data/bin/puppet +28 -36
  5. data/bin/puppetca +81 -38
  6. data/bin/puppetd +65 -62
  7. data/bin/puppetdoc +409 -140
  8. data/bin/puppetmasterd +59 -47
  9. data/bin/puppetrun +38 -23
  10. data/conf/freebsd/puppetd +26 -0
  11. data/conf/freebsd/puppetmasterd +26 -0
  12. data/conf/gentoo/conf.d/puppet +5 -0
  13. data/conf/gentoo/conf.d/puppetmaster +12 -0
  14. data/conf/gentoo/init.d/puppet +38 -0
  15. data/conf/gentoo/init.d/puppetmaster +50 -0
  16. data/conf/gentoo/puppet/fileserver.conf +12 -0
  17. data/conf/gentoo/puppet/puppetca.conf +29 -0
  18. data/conf/gentoo/puppet/puppetd.conf +29 -0
  19. data/conf/gentoo/puppet/puppetmasterd.conf +29 -0
  20. data/conf/redhat/client.init +10 -5
  21. data/conf/redhat/client.sysconfig +1 -1
  22. data/conf/redhat/fileserver.conf +2 -2
  23. data/conf/redhat/logrotate +1 -1
  24. data/conf/redhat/no-lockdir.patch +13 -0
  25. data/conf/redhat/puppet.spec +65 -8
  26. data/conf/redhat/puppetd.conf +0 -4
  27. data/conf/redhat/server.init +3 -6
  28. data/conf/solaris/pkginfo +1 -1
  29. data/conf/solaris/smf/svc-puppetd +2 -2
  30. data/conf/suse/client.init +142 -0
  31. data/conf/suse/puppet.spec +221 -0
  32. data/conf/suse/server.init +162 -0
  33. data/examples/code/mac_automount.pp +16 -0
  34. data/examples/root/bin/sleeper +3 -5
  35. data/examples/root/etc/init.d/sleeper +8 -2
  36. data/examples/root/etc/puppet/fileserver.conf +12 -2
  37. data/examples/root/etc/puppet/namespaceauth.conf +20 -0
  38. data/examples/root/etc/puppet/puppetd.conf +4 -0
  39. data/examples/root/etc/puppet/puppetmasterd.conf +6 -9
  40. data/examples/root/etc/puppet/tagmail.conf +1 -0
  41. data/ext/emacs/puppet-mode.el +46 -1
  42. data/ext/logcheck/puppet +15 -0
  43. data/ext/module_puppet +15 -23
  44. data/ext/vim/puppet.vim +4 -2
  45. data/install.rb +2 -1
  46. data/lib/puppet.rb +76 -207
  47. data/lib/puppet/configuration.rb +331 -0
  48. data/lib/puppet/daemon.rb +63 -246
  49. data/lib/puppet/dsl.rb +371 -0
  50. data/lib/puppet/element.rb +8 -26
  51. data/lib/puppet/error.rb +54 -0
  52. data/lib/puppet/event.rb +8 -243
  53. data/lib/puppet/{base64.rb → external/base64.rb} +0 -0
  54. data/lib/puppet/external/event-loop.rb +1 -0
  55. data/lib/puppet/{event-loop → external/event-loop}/better-definers.rb +0 -0
  56. data/lib/puppet/{event-loop → external/event-loop}/event-loop.rb +2 -2
  57. data/lib/puppet/{event-loop → external/event-loop}/signal-system.rb +1 -1
  58. data/lib/puppet/external/gratr.rb +33 -0
  59. data/lib/puppet/external/gratr/adjacency_graph.rb +257 -0
  60. data/lib/puppet/external/gratr/base.rb +34 -0
  61. data/lib/puppet/external/gratr/biconnected.rb +116 -0
  62. data/lib/puppet/external/gratr/chinese_postman.rb +123 -0
  63. data/lib/puppet/external/gratr/common.rb +73 -0
  64. data/lib/puppet/external/gratr/comparability.rb +92 -0
  65. data/lib/puppet/external/gratr/digraph.rb +116 -0
  66. data/lib/puppet/external/gratr/digraph_distance.rb +185 -0
  67. data/lib/puppet/external/gratr/dot.rb +90 -0
  68. data/lib/puppet/external/gratr/edge.rb +145 -0
  69. data/lib/puppet/external/gratr/graph.rb +303 -0
  70. data/lib/puppet/external/gratr/graph_api.rb +83 -0
  71. data/lib/puppet/external/gratr/import.rb +44 -0
  72. data/lib/puppet/external/gratr/labels.rb +90 -0
  73. data/lib/puppet/external/gratr/maximum_flow.rb +64 -0
  74. data/lib/puppet/external/gratr/rdot.rb +327 -0
  75. data/lib/puppet/external/gratr/search.rb +409 -0
  76. data/lib/puppet/external/gratr/strong_components.rb +127 -0
  77. data/lib/puppet/external/gratr/undirected_graph.rb +153 -0
  78. data/lib/puppet/{lock.rb → external/lock.rb} +1 -1
  79. data/lib/puppet/feature/base.rb +20 -0
  80. data/lib/puppet/feature/rails.rb +52 -0
  81. data/lib/puppet/metatype/attributes.rb +719 -0
  82. data/lib/puppet/metatype/closure.rb +111 -0
  83. data/lib/puppet/metatype/container.rb +94 -0
  84. data/lib/puppet/metatype/evaluation.rb +118 -0
  85. data/lib/puppet/metatype/instances.rb +261 -0
  86. data/lib/puppet/metatype/manager.rb +169 -0
  87. data/lib/puppet/metatype/metaparams.rb +409 -0
  88. data/lib/puppet/metatype/providers.rb +260 -0
  89. data/lib/puppet/metatype/relationships.rb +116 -0
  90. data/lib/puppet/metatype/schedules.rb +39 -0
  91. data/lib/puppet/metatype/tags.rb +39 -0
  92. data/lib/puppet/modules.rb +113 -0
  93. data/lib/puppet/network/authconfig.rb +168 -0
  94. data/lib/puppet/network/authorization.rb +84 -0
  95. data/lib/puppet/network/authstore.rb +293 -0
  96. data/lib/puppet/network/client.rb +187 -0
  97. data/lib/puppet/network/client/ca.rb +56 -0
  98. data/lib/puppet/network/client/dipper.rb +81 -0
  99. data/lib/puppet/network/client/file.rb +7 -0
  100. data/lib/puppet/network/client/logger.rb +6 -0
  101. data/lib/puppet/network/client/master.rb +644 -0
  102. data/lib/puppet/{client → network/client}/proxy.rb +3 -3
  103. data/lib/puppet/{client/reporter.rb → network/client/report.rb} +4 -7
  104. data/lib/puppet/{client/pelement.rb → network/client/resource.rb} +6 -19
  105. data/lib/puppet/network/client/runner.rb +13 -0
  106. data/lib/puppet/network/client/status.rb +5 -0
  107. data/lib/puppet/network/client_request.rb +32 -0
  108. data/lib/puppet/network/handler.rb +33 -0
  109. data/lib/puppet/{server → network/handler}/ca.rb +5 -6
  110. data/lib/puppet/network/handler/filebucket.rb +180 -0
  111. data/lib/puppet/{server → network/handler}/fileserver.rb +277 -219
  112. data/lib/puppet/{server → network/handler}/logger.rb +3 -5
  113. data/lib/puppet/{server → network/handler}/master.rb +42 -8
  114. data/lib/puppet/network/handler/report.rb +158 -0
  115. data/lib/puppet/network/handler/resource.rb +190 -0
  116. data/lib/puppet/{server → network/handler}/runner.rb +17 -18
  117. data/lib/puppet/network/handler/status.rb +13 -0
  118. data/lib/puppet/network/rights.rb +74 -0
  119. data/lib/puppet/network/server.rb +5 -0
  120. data/lib/puppet/network/server/mongrel.rb +138 -0
  121. data/lib/puppet/network/server/webrick.rb +153 -0
  122. data/lib/puppet/network/xmlrpc/client.rb +129 -0
  123. data/lib/puppet/network/xmlrpc/processor.rb +91 -0
  124. data/lib/puppet/network/xmlrpc/server.rb +20 -0
  125. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +121 -0
  126. data/lib/puppet/parameter.rb +390 -346
  127. data/lib/puppet/parser/ast.rb +116 -147
  128. data/lib/puppet/parser/ast/astarray.rb +17 -33
  129. data/lib/puppet/parser/ast/branch.rb +2 -0
  130. data/lib/puppet/parser/ast/caseopt.rb +7 -12
  131. data/lib/puppet/parser/ast/casestatement.rb +23 -32
  132. data/lib/puppet/parser/ast/collection.rb +19 -80
  133. data/lib/puppet/parser/ast/collexpr.rb +81 -0
  134. data/lib/puppet/parser/ast/component.rb +160 -89
  135. data/lib/puppet/parser/ast/else.rb +30 -0
  136. data/lib/puppet/parser/ast/function.rb +9 -2
  137. data/lib/puppet/parser/ast/hostclass.rb +47 -131
  138. data/lib/puppet/parser/ast/ifstatement.rb +43 -0
  139. data/lib/puppet/parser/ast/leaf.rb +10 -21
  140. data/lib/puppet/parser/ast/node.rb +32 -79
  141. data/lib/puppet/parser/ast/resourcedef.rb +222 -0
  142. data/lib/puppet/parser/ast/{typedefaults.rb → resourcedefaults.rb} +10 -16
  143. data/lib/puppet/parser/ast/resourceoverride.rb +62 -0
  144. data/lib/puppet/parser/ast/{objectparam.rb → resourceparam.rb} +12 -6
  145. data/lib/puppet/parser/ast/resourceref.rb +44 -0
  146. data/lib/puppet/parser/ast/selector.rb +16 -8
  147. data/lib/puppet/parser/ast/tag.rb +3 -1
  148. data/lib/puppet/parser/ast/vardef.rb +8 -12
  149. data/lib/puppet/parser/collector.rb +181 -0
  150. data/lib/puppet/parser/functions.rb +191 -36
  151. data/lib/puppet/parser/interpreter.rb +802 -380
  152. data/lib/puppet/parser/lexer.rb +86 -19
  153. data/lib/puppet/parser/parser.rb +1123 -960
  154. data/lib/puppet/parser/resource.rb +353 -0
  155. data/lib/puppet/parser/resource/param.rb +57 -0
  156. data/lib/puppet/parser/resource/reference.rb +71 -0
  157. data/lib/puppet/parser/scope.rb +573 -1000
  158. data/lib/puppet/parser/templatewrapper.rb +54 -0
  159. data/lib/puppet/pgraph.rb +208 -0
  160. data/lib/puppet/propertychange.rb +143 -0
  161. data/lib/puppet/provider.rb +302 -0
  162. data/lib/puppet/provider/cron/crontab.rb +187 -0
  163. data/lib/puppet/provider/group/groupadd.rb +29 -0
  164. data/lib/puppet/provider/group/netinfo.rb +12 -0
  165. data/lib/puppet/provider/group/pw.rb +31 -0
  166. data/lib/puppet/provider/host/netinfo.rb +18 -0
  167. data/lib/puppet/provider/host/parsed.rb +73 -0
  168. data/lib/puppet/provider/mount.rb +57 -0
  169. data/lib/puppet/provider/mount/netinfo.rb +38 -0
  170. data/lib/puppet/provider/mount/parsed.rb +37 -0
  171. data/lib/puppet/provider/nameservice.rb +344 -0
  172. data/lib/puppet/provider/nameservice/netinfo.rb +210 -0
  173. data/lib/puppet/provider/nameservice/objectadd.rb +45 -0
  174. data/lib/puppet/provider/nameservice/pw.rb +22 -0
  175. data/lib/puppet/provider/package/apple.rb +53 -0
  176. data/lib/puppet/provider/package/apt.rb +119 -0
  177. data/lib/puppet/provider/package/aptitude.rb +30 -0
  178. data/lib/puppet/provider/package/aptrpm.rb +79 -0
  179. data/lib/puppet/provider/package/blastwave.rb +114 -0
  180. data/lib/puppet/provider/package/darwinport.rb +88 -0
  181. data/lib/puppet/provider/package/dpkg.rb +109 -0
  182. data/lib/puppet/provider/package/freebsd.rb +43 -0
  183. data/lib/puppet/provider/package/gem.rb +104 -0
  184. data/lib/puppet/provider/package/openbsd.rb +93 -0
  185. data/lib/puppet/provider/package/pkgdmg.rb +119 -0
  186. data/lib/puppet/provider/package/portage.rb +112 -0
  187. data/lib/puppet/provider/package/ports.rb +94 -0
  188. data/lib/puppet/provider/package/rpm.rb +125 -0
  189. data/lib/puppet/provider/package/rug.rb +53 -0
  190. data/lib/puppet/provider/package/sun.rb +168 -0
  191. data/lib/puppet/provider/package/sunfreeware.rb +9 -0
  192. data/lib/puppet/provider/package/up2date.rb +45 -0
  193. data/lib/puppet/provider/package/yum.rb +54 -0
  194. data/lib/puppet/provider/parsedfile.rb +342 -0
  195. data/lib/puppet/provider/port/parsed.rb +174 -0
  196. data/lib/puppet/provider/service/base.rb +136 -0
  197. data/lib/puppet/provider/service/debian.rb +32 -0
  198. data/lib/puppet/provider/service/gentoo.rb +49 -0
  199. data/lib/puppet/{type → provider}/service/init.rb +42 -40
  200. data/lib/puppet/provider/service/redhat.rb +59 -0
  201. data/lib/puppet/{type → provider}/service/smf.rb +24 -13
  202. data/lib/puppet/provider/sshkey/parsed.rb +36 -0
  203. data/lib/puppet/provider/user/netinfo.rb +106 -0
  204. data/lib/puppet/provider/user/pw.rb +41 -0
  205. data/lib/puppet/provider/user/useradd.rb +67 -0
  206. data/lib/puppet/provider/zone/solaris.rb +208 -0
  207. data/lib/puppet/rails.rb +102 -66
  208. data/lib/puppet/rails/database/001_add_indexes.rb +38 -0
  209. data/lib/puppet/rails/database/schema.rb +89 -0
  210. data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +62 -0
  211. data/lib/puppet/rails/external/tagging/init.rb +5 -0
  212. data/lib/puppet/rails/external/tagging/tag.rb +50 -0
  213. data/lib/puppet/rails/external/tagging/tagging.rb +12 -0
  214. data/lib/puppet/rails/fact_name.rb +7 -0
  215. data/lib/puppet/rails/fact_value.rb +5 -0
  216. data/lib/puppet/rails/host.rb +95 -46
  217. data/lib/puppet/rails/param_name.rb +28 -0
  218. data/lib/puppet/rails/param_value.rb +5 -0
  219. data/lib/puppet/rails/puppet_class.rb +9 -0
  220. data/lib/puppet/rails/resource.rb +95 -0
  221. data/lib/puppet/rails/source_file.rb +5 -0
  222. data/lib/puppet/relationship.rb +63 -0
  223. data/lib/puppet/reports/log.rb +14 -0
  224. data/lib/puppet/reports/rrdgraph.rb +114 -10
  225. data/lib/puppet/reports/store.rb +64 -0
  226. data/lib/puppet/reports/tagmail.rb +144 -71
  227. data/lib/puppet/sslcertificates.rb +38 -5
  228. data/lib/puppet/sslcertificates/ca.rb +142 -37
  229. data/lib/puppet/sslcertificates/certificate.rb +3 -3
  230. data/lib/puppet/sslcertificates/inventory.rb +53 -0
  231. data/lib/puppet/sslcertificates/support.rb +128 -0
  232. data/lib/puppet/transaction.rb +568 -189
  233. data/lib/puppet/transaction/report.rb +14 -3
  234. data/lib/puppet/transportable.rb +18 -10
  235. data/lib/puppet/type.rb +279 -2299
  236. data/lib/puppet/type/component.rb +63 -63
  237. data/lib/puppet/type/cron.rb +294 -710
  238. data/lib/puppet/type/exec.rb +185 -129
  239. data/lib/puppet/type/group.rb +38 -89
  240. data/lib/puppet/type/host.rb +110 -0
  241. data/lib/puppet/type/mount.rb +189 -0
  242. data/lib/puppet/type/notify.rb +47 -0
  243. data/lib/puppet/type/package.rb +129 -257
  244. data/lib/puppet/type/parsedtype.rb +172 -297
  245. data/lib/puppet/type/pfile.rb +540 -319
  246. data/lib/puppet/type/pfile/checksum.rb +103 -76
  247. data/lib/puppet/type/pfile/content.rb +16 -10
  248. data/lib/puppet/type/pfile/ensure.rb +52 -34
  249. data/lib/puppet/type/pfile/group.rb +25 -18
  250. data/lib/puppet/type/pfile/mode.rb +7 -4
  251. data/lib/puppet/type/pfile/{uid.rb → owner.rb} +21 -17
  252. data/lib/puppet/type/pfile/source.rb +119 -124
  253. data/lib/puppet/type/pfile/target.rb +29 -45
  254. data/lib/puppet/type/pfile/type.rb +2 -2
  255. data/lib/puppet/type/pfilebucket.rb +18 -14
  256. data/lib/puppet/type/port.rb +121 -0
  257. data/lib/puppet/type/property.rb +530 -0
  258. data/lib/puppet/type/resources.rb +150 -0
  259. data/lib/puppet/type/schedule.rb +38 -22
  260. data/lib/puppet/type/service.rb +70 -326
  261. data/lib/puppet/type/sshkey.rb +76 -0
  262. data/lib/puppet/type/tidy.rb +197 -97
  263. data/lib/puppet/type/user.rb +107 -183
  264. data/lib/puppet/type/yumrepo.rb +53 -34
  265. data/lib/puppet/type/zone.rb +55 -208
  266. data/lib/puppet/util.rb +239 -201
  267. data/lib/puppet/util/autoload.rb +107 -0
  268. data/lib/puppet/util/classgen.rb +208 -0
  269. data/lib/puppet/{config.rb → util/config.rb} +102 -54
  270. data/lib/puppet/util/docs.rb +104 -0
  271. data/lib/puppet/util/errors.rb +55 -0
  272. data/lib/puppet/util/execution.rb +22 -0
  273. data/lib/puppet/util/feature.rb +76 -0
  274. data/lib/puppet/util/fileparsing.rb +380 -0
  275. data/lib/puppet/util/filetype.rb +300 -0
  276. data/lib/puppet/util/graph.rb +39 -0
  277. data/lib/puppet/util/inifile.rb +209 -0
  278. data/lib/puppet/util/loadedfile.rb +71 -0
  279. data/lib/puppet/util/log.rb +549 -0
  280. data/lib/puppet/util/logging.rb +20 -0
  281. data/lib/puppet/util/metaid.rb +22 -0
  282. data/lib/puppet/util/methodhelper.rb +37 -0
  283. data/lib/puppet/util/metric.rb +160 -0
  284. data/lib/puppet/util/package.rb +31 -0
  285. data/lib/puppet/util/pidlock.rb +68 -0
  286. data/lib/puppet/util/plist.rb +24 -0
  287. data/lib/puppet/util/plist/generator.rb +226 -0
  288. data/lib/puppet/util/plist/parser.rb +227 -0
  289. data/lib/puppet/util/posix.rb +87 -0
  290. data/lib/puppet/util/provider_features.rb +170 -0
  291. data/lib/puppet/util/rails/collection_merger.rb +42 -0
  292. data/lib/puppet/util/storage.rb +103 -0
  293. data/lib/puppet/util/subclass_loader.rb +83 -0
  294. data/lib/puppet/util/suidmanager.rb +86 -0
  295. data/lib/puppet/util/variables.rb +39 -0
  296. data/lib/puppet/util/warnings.rb +15 -0
  297. data/test/Rakefile +97 -0
  298. data/test/certmgr/ca.rb +81 -0
  299. data/test/certmgr/certmgr.rb +77 -50
  300. data/test/certmgr/inventory.rb +79 -0
  301. data/test/certmgr/support.rb +81 -0
  302. data/test/executables/filebucket.rb +49 -0
  303. data/test/executables/puppetbin.rb +28 -12
  304. data/test/executables/puppetca.rb +75 -54
  305. data/test/executables/puppetd.rb +10 -13
  306. data/test/executables/puppetmasterd.rb +12 -17
  307. data/test/executables/puppetmodule.rb +18 -17
  308. data/test/language/ast.rb +242 -798
  309. data/test/language/ast/casestatement.rb +104 -0
  310. data/test/language/ast/component.rb +133 -0
  311. data/test/language/ast/hostclass.rb +162 -0
  312. data/test/language/ast/selector.rb +62 -0
  313. data/test/language/ast/variable.rb +31 -0
  314. data/test/language/collector.rb +369 -0
  315. data/test/language/functions.rb +305 -18
  316. data/test/language/interpreter.rb +894 -125
  317. data/test/language/lexer.rb +98 -12
  318. data/test/language/node.rb +37 -53
  319. data/test/language/parser.rb +455 -148
  320. data/test/language/resource.rb +535 -0
  321. data/test/language/scope.rb +451 -561
  322. data/test/language/snippets.rb +101 -111
  323. data/test/language/transportable.rb +6 -8
  324. data/test/lib/mocha.rb +19 -0
  325. data/test/lib/mocha/any_instance_method.rb +35 -0
  326. data/test/lib/mocha/auto_verify.rb +113 -0
  327. data/test/lib/mocha/central.rb +35 -0
  328. data/test/lib/mocha/class_method.rb +62 -0
  329. data/test/lib/mocha/expectation.rb +295 -0
  330. data/test/lib/mocha/expectation_error.rb +6 -0
  331. data/test/lib/mocha/infinite_range.rb +27 -0
  332. data/test/lib/mocha/inspect.rb +37 -0
  333. data/test/lib/mocha/instance_method.rb +8 -0
  334. data/test/lib/mocha/metaclass.rb +7 -0
  335. data/test/lib/mocha/mock.rb +20 -0
  336. data/test/lib/mocha/mock_methods.rb +122 -0
  337. data/test/lib/mocha/object.rb +100 -0
  338. data/test/lib/mocha/pretty_parameters.rb +28 -0
  339. data/test/lib/mocha/setup_and_teardown.rb +23 -0
  340. data/test/lib/mocha/standalone.rb +30 -0
  341. data/test/lib/mocha/test_case_adapter.rb +49 -0
  342. data/test/lib/mocha_standalone.rb +2 -0
  343. data/test/lib/puppettest.rb +294 -0
  344. data/test/lib/puppettest/certificates.rb +61 -0
  345. data/test/lib/puppettest/exetest.rb +123 -0
  346. data/test/lib/puppettest/fakes.rb +194 -0
  347. data/test/lib/puppettest/fileparsing.rb +33 -0
  348. data/test/lib/puppettest/filetesting.rb +231 -0
  349. data/test/lib/puppettest/graph.rb +41 -0
  350. data/test/lib/puppettest/parsertesting.rb +392 -0
  351. data/test/lib/puppettest/railstesting.rb +56 -0
  352. data/test/lib/puppettest/reporttesting.rb +19 -0
  353. data/test/lib/puppettest/resourcetesting.rb +73 -0
  354. data/test/lib/puppettest/servertest.rb +72 -0
  355. data/test/lib/puppettest/support.rb +8 -0
  356. data/test/lib/puppettest/support/assertions.rb +101 -0
  357. data/test/lib/puppettest/support/helpers.rb +23 -0
  358. data/test/lib/puppettest/support/resources.rb +37 -0
  359. data/test/lib/puppettest/support/utils.rb +160 -0
  360. data/test/lib/puppettest/testcase.rb +48 -0
  361. data/test/lib/rake/puppet_test_loader.rb +17 -0
  362. data/test/lib/rake/puppet_testtask.rb +17 -0
  363. data/test/lib/spec.rb +8 -0
  364. data/test/lib/spec/callback.rb +11 -0
  365. data/test/lib/spec/callback/callback_container.rb +60 -0
  366. data/test/lib/spec/callback/extensions/module.rb +24 -0
  367. data/test/lib/spec/callback/extensions/object.rb +37 -0
  368. data/test/lib/spec/deprecated.rb +3 -0
  369. data/test/lib/spec/expectations.rb +59 -0
  370. data/test/lib/spec/expectations/differs/default.rb +62 -0
  371. data/test/lib/spec/expectations/errors.rb +6 -0
  372. data/test/lib/spec/expectations/extensions.rb +3 -0
  373. data/test/lib/spec/expectations/extensions/object.rb +109 -0
  374. data/test/lib/spec/expectations/extensions/proc.rb +57 -0
  375. data/test/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  376. data/test/lib/spec/expectations/handler.rb +47 -0
  377. data/test/lib/spec/expectations/should.rb +5 -0
  378. data/test/lib/spec/expectations/should/base.rb +64 -0
  379. data/test/lib/spec/expectations/should/change.rb +69 -0
  380. data/test/lib/spec/expectations/should/have.rb +128 -0
  381. data/test/lib/spec/expectations/should/not.rb +74 -0
  382. data/test/lib/spec/expectations/should/should.rb +81 -0
  383. data/test/lib/spec/expectations/sugar.rb +47 -0
  384. data/test/lib/spec/matchers.rb +160 -0
  385. data/test/lib/spec/matchers/be.rb +161 -0
  386. data/test/lib/spec/matchers/be_close.rb +37 -0
  387. data/test/lib/spec/matchers/change.rb +120 -0
  388. data/test/lib/spec/matchers/eql.rb +43 -0
  389. data/test/lib/spec/matchers/equal.rb +43 -0
  390. data/test/lib/spec/matchers/has.rb +44 -0
  391. data/test/lib/spec/matchers/have.rb +140 -0
  392. data/test/lib/spec/matchers/include.rb +50 -0
  393. data/test/lib/spec/matchers/match.rb +41 -0
  394. data/test/lib/spec/matchers/raise_error.rb +100 -0
  395. data/test/lib/spec/matchers/respond_to.rb +35 -0
  396. data/test/lib/spec/matchers/satisfy.rb +47 -0
  397. data/test/lib/spec/matchers/throw_symbol.rb +75 -0
  398. data/test/lib/spec/mocks.rb +232 -0
  399. data/test/lib/spec/mocks/argument_expectation.rb +132 -0
  400. data/test/lib/spec/mocks/error_generator.rb +85 -0
  401. data/test/lib/spec/mocks/errors.rb +10 -0
  402. data/test/lib/spec/mocks/extensions/object.rb +3 -0
  403. data/test/lib/spec/mocks/message_expectation.rb +231 -0
  404. data/test/lib/spec/mocks/methods.rb +40 -0
  405. data/test/lib/spec/mocks/mock.rb +26 -0
  406. data/test/lib/spec/mocks/mock_handler.rb +166 -0
  407. data/test/lib/spec/mocks/order_group.rb +29 -0
  408. data/test/lib/spec/rake/spectask.rb +173 -0
  409. data/test/lib/spec/rake/verify_rcov.rb +47 -0
  410. data/test/lib/spec/runner.rb +132 -0
  411. data/test/lib/spec/runner/backtrace_tweaker.rb +55 -0
  412. data/test/lib/spec/runner/command_line.rb +34 -0
  413. data/test/lib/spec/runner/context.rb +154 -0
  414. data/test/lib/spec/runner/context_eval.rb +142 -0
  415. data/test/lib/spec/runner/context_runner.rb +55 -0
  416. data/test/lib/spec/runner/drb_command_line.rb +21 -0
  417. data/test/lib/spec/runner/execution_context.rb +17 -0
  418. data/test/lib/spec/runner/extensions/kernel.rb +17 -0
  419. data/test/lib/spec/runner/extensions/object.rb +32 -0
  420. data/test/lib/spec/runner/formatter.rb +5 -0
  421. data/test/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
  422. data/test/lib/spec/runner/formatter/html_formatter.rb +219 -0
  423. data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
  424. data/test/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
  425. data/test/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
  426. data/test/lib/spec/runner/heckle_runner.rb +71 -0
  427. data/test/lib/spec/runner/heckle_runner_win.rb +10 -0
  428. data/test/lib/spec/runner/option_parser.rb +224 -0
  429. data/test/lib/spec/runner/reporter.rb +105 -0
  430. data/test/lib/spec/runner/spec_matcher.rb +25 -0
  431. data/test/lib/spec/runner/spec_parser.rb +41 -0
  432. data/test/lib/spec/runner/spec_should_raise_handler.rb +74 -0
  433. data/test/lib/spec/runner/specification.rb +114 -0
  434. data/test/lib/spec/translator.rb +87 -0
  435. data/test/lib/spec/version.rb +30 -0
  436. data/test/lib/stubba.rb +2 -0
  437. data/test/network/authconfig.rb +72 -0
  438. data/test/network/authorization.rb +138 -0
  439. data/test/network/authstore.rb +450 -0
  440. data/test/network/client/ca.rb +38 -0
  441. data/test/{client → network/client}/client.rb +107 -24
  442. data/test/network/client/dipper.rb +35 -0
  443. data/test/network/client/master.rb +627 -0
  444. data/test/{client/pelement.rb → network/client/resource.rb} +13 -29
  445. data/test/network/client_request.rb +39 -0
  446. data/test/network/daemon.rb +71 -0
  447. data/test/{server → network/handler}/bucket.rb +103 -27
  448. data/test/{server → network/handler}/ca.rb +14 -19
  449. data/test/{server → network/handler}/fileserver.rb +443 -68
  450. data/test/network/handler/handler.rb +64 -0
  451. data/test/{server → network/handler}/logger.rb +26 -26
  452. data/test/network/handler/master.rb +352 -0
  453. data/test/network/handler/report.rb +185 -0
  454. data/test/{server/pelement.rb → network/handler/resource.rb} +25 -38
  455. data/test/{server → network/handler}/runner.rb +17 -16
  456. data/test/network/rights.rb +38 -0
  457. data/test/network/server/webrick.rb +140 -0
  458. data/test/network/xmlrpc/client.rb +68 -0
  459. data/test/network/xmlrpc/processor.rb +80 -0
  460. data/test/network/xmlrpc/server.rb +28 -0
  461. data/test/network/xmlrpc/webrick_servlet.rb +26 -0
  462. data/test/other/dsl.rb +218 -0
  463. data/test/other/events.rb +22 -15
  464. data/test/other/overrides.rb +9 -14
  465. data/test/other/pgraph.rb +289 -0
  466. data/test/other/propertychange.rb +142 -0
  467. data/test/other/provider.rb +162 -0
  468. data/test/other/puppet.rb +63 -10
  469. data/test/other/relationship.rb +74 -0
  470. data/test/other/relationships.rb +199 -123
  471. data/test/other/report.rb +152 -23
  472. data/test/other/transactions.rb +824 -78
  473. data/test/puppet/conffiles.rb +16 -11
  474. data/test/puppet/defaults.rb +7 -10
  475. data/test/puppet/{error.rb → errortest.rb} +5 -8
  476. data/test/puppet/modules.rb +58 -0
  477. data/test/puppet/tc_suidmanager.rb +107 -0
  478. data/test/rails/host.rb +177 -0
  479. data/test/rails/rails.rb +27 -0
  480. data/test/rails/railsparameter.rb +62 -0
  481. data/test/rails/railsresource.rb +100 -0
  482. data/test/ral/manager/attributes.rb +296 -0
  483. data/test/ral/manager/manager.rb +55 -0
  484. data/test/ral/manager/provider.rb +54 -0
  485. data/test/ral/manager/type.rb +837 -0
  486. data/test/ral/providers/cron/crontab.rb +346 -0
  487. data/test/ral/providers/group.rb +252 -0
  488. data/test/ral/providers/host/netinfo.rb +58 -0
  489. data/test/ral/providers/host/parsed.rb +226 -0
  490. data/test/ral/providers/mount/netinfo.rb +80 -0
  491. data/test/ral/providers/mount/parsed.rb +223 -0
  492. data/test/ral/providers/nameservice.rb +33 -0
  493. data/test/ral/providers/package.rb +253 -0
  494. data/test/ral/providers/package/apt.rb +89 -0
  495. data/test/ral/providers/package/aptitude.rb +69 -0
  496. data/test/ral/providers/package/aptrpm.rb +89 -0
  497. data/test/ral/providers/package/dpkg.rb +64 -0
  498. data/test/ral/providers/parsedfile.rb +668 -0
  499. data/test/ral/providers/parsedport.rb +233 -0
  500. data/test/ral/providers/provider.rb +423 -0
  501. data/test/{types → ral/providers}/service.rb +20 -121
  502. data/test/ral/providers/service/base.rb +75 -0
  503. data/test/ral/providers/sshkey/parsed.rb +111 -0
  504. data/test/ral/providers/user.rb +567 -0
  505. data/test/ral/providers/user/useradd.rb +250 -0
  506. data/test/ral/types/basic.rb +90 -0
  507. data/test/ral/types/component.rb +113 -0
  508. data/test/ral/types/cron.rb +480 -0
  509. data/test/{types → ral/types}/exec.rb +278 -82
  510. data/test/ral/types/file.rb +1799 -0
  511. data/test/ral/types/file/target.rb +363 -0
  512. data/test/{types → ral/types}/filebucket.rb +15 -17
  513. data/test/{types → ral/types}/fileignoresource.rb +9 -15
  514. data/test/ral/types/filesources.rb +1046 -0
  515. data/test/ral/types/group.rb +169 -0
  516. data/test/ral/types/host.rb +155 -0
  517. data/test/ral/types/mount.rb +312 -0
  518. data/test/ral/types/package.rb +85 -0
  519. data/test/ral/types/parameter.rb +172 -0
  520. data/test/ral/types/port.rb +148 -0
  521. data/test/ral/types/property.rb +343 -0
  522. data/test/ral/types/resources.rb +221 -0
  523. data/test/{types → ral/types}/schedule.rb +34 -12
  524. data/test/ral/types/service.rb +37 -0
  525. data/test/{types → ral/types}/sshkey.rb +75 -65
  526. data/test/ral/types/tidy.rb +240 -0
  527. data/test/ral/types/user.rb +493 -0
  528. data/test/{types → ral/types}/yumrepo.rb +7 -11
  529. data/test/{types → ral/types}/zone.rb +45 -45
  530. data/test/tagging/tagging.rb +17 -26
  531. data/test/util/autoload.rb +130 -0
  532. data/test/util/classgen.rb +227 -0
  533. data/test/{other → util}/config.rb +373 -113
  534. data/test/util/execution.rb +34 -0
  535. data/test/util/features.rb +94 -0
  536. data/test/util/fileparsing.rb +677 -0
  537. data/test/{other → util}/filetype.rb +9 -12
  538. data/test/util/graph.rb +108 -0
  539. data/test/{other → util}/inifile.rb +24 -11
  540. data/test/util/loadedfile.rb +106 -0
  541. data/test/{other → util}/log.rb +96 -50
  542. data/test/{other → util}/metrics.rb +7 -17
  543. data/test/util/package.rb +27 -0
  544. data/test/util/pidlock.rb +126 -0
  545. data/test/util/posixtest.rb +173 -0
  546. data/test/util/storage.rb +123 -0
  547. data/test/util/subclass_loader.rb +100 -0
  548. data/test/util/utiltest.rb +368 -0
  549. metadata +449 -169
  550. data/examples/code/classing +0 -35
  551. data/examples/code/failers/badclassnoparam +0 -10
  552. data/examples/code/failers/badclassparam +0 -10
  553. data/examples/code/failers/badcompnoparam +0 -9
  554. data/examples/code/failers/badcompparam +0 -9
  555. data/examples/code/failers/badtypeparam +0 -3
  556. data/examples/code/failers/noobjectrvalue +0 -1
  557. data/examples/code/snippets/aliastest.pp +0 -16
  558. data/examples/code/snippets/argumentdefaults +0 -14
  559. data/examples/code/snippets/casestatement.pp +0 -58
  560. data/examples/code/snippets/classheirarchy.pp +0 -15
  561. data/examples/code/snippets/classincludes.pp +0 -17
  562. data/examples/code/snippets/classpathtest +0 -11
  563. data/examples/code/snippets/componentmetaparams.pp +0 -11
  564. data/examples/code/snippets/deepclassheirarchy.pp +0 -23
  565. data/examples/code/snippets/defineoverrides.pp +0 -17
  566. data/examples/code/snippets/dirchmod +0 -19
  567. data/examples/code/snippets/emptyclass.pp +0 -9
  568. data/examples/code/snippets/emptyexec.pp +0 -3
  569. data/examples/code/snippets/failmissingexecpath.pp +0 -13
  570. data/examples/code/snippets/falsevalues.pp +0 -3
  571. data/examples/code/snippets/filecreate +0 -11
  572. data/examples/code/snippets/implicititeration +0 -15
  573. data/examples/code/snippets/multipleinstances +0 -7
  574. data/examples/code/snippets/namevartest +0 -9
  575. data/examples/code/snippets/scopetest +0 -13
  576. data/examples/code/snippets/selectorvalues.pp +0 -42
  577. data/examples/code/snippets/simpledefaults +0 -5
  578. data/examples/code/snippets/simpleselector +0 -38
  579. data/examples/code/snippets/singleary.pp +0 -19
  580. data/examples/code/snippets/singlequote.pp +0 -11
  581. data/examples/code/snippets/singleselector.pp +0 -22
  582. data/examples/code/snippets/tag.pp +0 -9
  583. data/examples/code/snippets/tagged.pp +0 -35
  584. data/lib/puppet/client.rb +0 -177
  585. data/lib/puppet/client/ca.rb +0 -21
  586. data/lib/puppet/client/dipper.rb +0 -76
  587. data/lib/puppet/client/file.rb +0 -20
  588. data/lib/puppet/client/log.rb +0 -17
  589. data/lib/puppet/client/master.rb +0 -531
  590. data/lib/puppet/client/runner.rb +0 -17
  591. data/lib/puppet/client/status.rb +0 -7
  592. data/lib/puppet/event-loop.rb +0 -1
  593. data/lib/puppet/filetype.rb +0 -308
  594. data/lib/puppet/inifile.rb +0 -201
  595. data/lib/puppet/log.rb +0 -524
  596. data/lib/puppet/metric.rb +0 -132
  597. data/lib/puppet/networkclient.rb +0 -175
  598. data/lib/puppet/parsedfile.rb +0 -58
  599. data/lib/puppet/parser/ast/classdef.rb +0 -79
  600. data/lib/puppet/parser/ast/compdef.rb +0 -75
  601. data/lib/puppet/parser/ast/nodedef.rb +0 -73
  602. data/lib/puppet/parser/ast/objectdef.rb +0 -284
  603. data/lib/puppet/parser/ast/objectref.rb +0 -77
  604. data/lib/puppet/rails/database.rb +0 -40
  605. data/lib/puppet/rails/rails_object.rb +0 -42
  606. data/lib/puppet/rails/rails_parameter.rb +0 -5
  607. data/lib/puppet/server.rb +0 -196
  608. data/lib/puppet/server/authconfig.rb +0 -177
  609. data/lib/puppet/server/authstore.rb +0 -226
  610. data/lib/puppet/server/filebucket.rb +0 -155
  611. data/lib/puppet/server/pelement.rb +0 -188
  612. data/lib/puppet/server/report.rb +0 -184
  613. data/lib/puppet/server/rights.rb +0 -78
  614. data/lib/puppet/server/servlet.rb +0 -274
  615. data/lib/puppet/statechange.rb +0 -129
  616. data/lib/puppet/storage.rb +0 -98
  617. data/lib/puppet/type/nameservice.rb +0 -264
  618. data/lib/puppet/type/nameservice/netinfo.rb +0 -232
  619. data/lib/puppet/type/nameservice/objectadd.rb +0 -146
  620. data/lib/puppet/type/nameservice/posix.rb +0 -12
  621. data/lib/puppet/type/nameservice/pw.rb +0 -107
  622. data/lib/puppet/type/package/apple.rb +0 -41
  623. data/lib/puppet/type/package/apt.rb +0 -107
  624. data/lib/puppet/type/package/blastwave.rb +0 -136
  625. data/lib/puppet/type/package/darwinport.rb +0 -97
  626. data/lib/puppet/type/package/dpkg.rb +0 -113
  627. data/lib/puppet/type/package/freebsd.rb +0 -19
  628. data/lib/puppet/type/package/gem.rb +0 -119
  629. data/lib/puppet/type/package/openbsd.rb +0 -112
  630. data/lib/puppet/type/package/ports.rb +0 -103
  631. data/lib/puppet/type/package/rpm.rb +0 -121
  632. data/lib/puppet/type/package/sun.rb +0 -174
  633. data/lib/puppet/type/package/sunfreeware.rb +0 -7
  634. data/lib/puppet/type/package/yum.rb +0 -52
  635. data/lib/puppet/type/parsedtype/host.rb +0 -144
  636. data/lib/puppet/type/parsedtype/mount.rb +0 -271
  637. data/lib/puppet/type/parsedtype/port.rb +0 -261
  638. data/lib/puppet/type/parsedtype/sshkey.rb +0 -123
  639. data/lib/puppet/type/service/base.rb +0 -12
  640. data/lib/puppet/type/service/debian.rb +0 -46
  641. data/lib/puppet/type/service/redhat.rb +0 -38
  642. data/lib/puppet/type/state.rb +0 -393
  643. data/lib/puppet/type/symlink.rb +0 -186
  644. data/test/client/master.rb +0 -207
  645. data/test/language/rails.rb +0 -105
  646. data/test/other/parsedfile.rb +0 -58
  647. data/test/other/storage.rb +0 -100
  648. data/test/puppet/utiltest.rb +0 -299
  649. data/test/puppettest.rb +0 -1170
  650. data/test/server/authconfig.rb +0 -56
  651. data/test/server/authstore.rb +0 -218
  652. data/test/server/master.rb +0 -201
  653. data/test/server/report.rb +0 -93
  654. data/test/server/rights.rb +0 -41
  655. data/test/server/server.rb +0 -152
  656. data/test/test +0 -61
  657. data/test/types/basic.rb +0 -117
  658. data/test/types/component.rb +0 -298
  659. data/test/types/cron.rb +0 -718
  660. data/test/types/file.rb +0 -1314
  661. data/test/types/filesources.rb +0 -590
  662. data/test/types/group.rb +0 -323
  663. data/test/types/host.rb +0 -186
  664. data/test/types/mount.rb +0 -294
  665. data/test/types/package.rb +0 -538
  666. data/test/types/parameter.rb +0 -107
  667. data/test/types/port.rb +0 -201
  668. data/test/types/query.rb +0 -101
  669. data/test/types/state.rb +0 -92
  670. data/test/types/symlink.rb +0 -120
  671. data/test/types/tidy.rb +0 -102
  672. data/test/types/type.rb +0 -469
  673. data/test/types/user.rb +0 -563
@@ -1,16 +1,11 @@
1
- if __FILE__ == $0
2
- $:.unshift '..'
3
- $:.unshift '../../lib'
4
- $puppetbase = "../.."
5
- end
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
6
4
 
7
- require 'puppet'
8
5
  require 'puppettest'
9
- require 'test/unit'
10
- require 'facter'
11
6
 
12
7
  class TestExec < Test::Unit::TestCase
13
- include TestPuppet
8
+ include PuppetTest
14
9
  def test_execution
15
10
  command = nil
16
11
  output = nil
@@ -44,13 +39,11 @@ class TestExec < Test::Unit::TestCase
44
39
  def test_path_or_qualified
45
40
  command = nil
46
41
  output = nil
47
- assert_nothing_raised {
42
+ assert_raise(Puppet::Error) {
48
43
  command = Puppet.type(:exec).create(
49
44
  :command => "echo"
50
45
  )
51
- assert_nil(command)
52
46
  }
53
- Puppet.type(:exec).clear
54
47
  assert_nothing_raised {
55
48
  command = Puppet.type(:exec).create(
56
49
  :command => "echo",
@@ -114,65 +107,64 @@ class TestExec < Test::Unit::TestCase
114
107
  assert_equal(wd,command.output.chomp)
115
108
  end
116
109
 
117
- def test_refreshonly
110
+ def test_refreshonly_functional
118
111
  file = nil
119
112
  cmd = nil
120
113
  tmpfile = tempfile()
121
114
  @@tmpfiles.push tmpfile
122
115
  trans = nil
123
- File.open(tmpfile, File::WRONLY|File::CREAT|File::TRUNC) { |of|
124
- of.puts rand(100)
125
- }
126
116
  file = Puppet.type(:file).create(
127
117
  :path => tmpfile,
128
- :checksum => "md5"
118
+ :content => "yay"
129
119
  )
130
- assert_instance_of(Puppet.type(:file), file)
120
+ # Get the file in sync
121
+ assert_apply(file)
122
+
123
+ # Now make an exec
124
+ maker = tempfile()
131
125
  assert_nothing_raised {
132
126
  cmd = Puppet.type(:exec).create(
133
- :command => "pwd",
127
+ :command => "touch %s" % maker,
134
128
  :path => "/usr/bin:/bin:/usr/sbin:/sbin",
135
- :subscribe => [[file.class.name,file.name]],
129
+ :subscribe => file,
136
130
  :refreshonly => true
137
131
  )
138
132
  }
139
133
 
140
- assert_instance_of(Puppet.type(:exec), cmd)
134
+ assert(cmd, "did not make exec")
141
135
 
142
- comp = Puppet.type(:component).create(:name => "RefreshTest")
143
- [file,cmd].each { |obj|
144
- comp.push obj
145
- }
146
- events = nil
147
- assert_nothing_raised {
148
- trans = comp.evaluate
149
- file.retrieve
136
+ assert_nothing_raised do
137
+ assert(! cmd.check, "Check passed when refreshonly is set")
138
+ end
150
139
 
151
- sum = file.state(:checksum)
152
- assert_equal(sum.is, sum.should)
153
- events = trans.evaluate.collect { |event|
154
- event.event
155
- }
156
- }
157
- # the first checksum shouldn't result in a changed file
158
- assert_equal([],events)
159
- File.open(tmpfile, File::WRONLY|File::CREAT|File::TRUNC) { |of|
160
- of.puts rand(100)
161
- of.puts rand(100)
162
- of.puts rand(100)
163
- }
140
+ assert_events([], file, cmd)
141
+ assert(! FileTest.exists?(maker), "made file without refreshing")
142
+
143
+ # Now change our content, so we throw a refresh
144
+ file[:content] = "yayness"
145
+ assert_events([:file_changed, :triggered], file, cmd)
146
+ assert(FileTest.exists?(maker), "file was not made in refresh")
147
+ end
148
+
149
+ def test_refreshonly
150
+ cmd = true
164
151
  assert_nothing_raised {
165
- trans = comp.evaluate
166
- sum = file.state(:checksum)
167
- events = trans.evaluate.collect { |event| event.event }
152
+ cmd = Puppet.type(:exec).create(
153
+ :command => "pwd",
154
+ :path => "/usr/bin:/bin:/usr/sbin:/sbin",
155
+ :refreshonly => true
156
+ )
168
157
  }
169
-
170
- # verify that only the file_changed event was kicked off, not the
171
- # command_executed
172
- assert_equal(
173
- [:file_changed],
174
- events
175
- )
158
+
159
+ # Checks should always fail when refreshonly is enabled
160
+ assert(!cmd.check, "Check passed with refreshonly true")
161
+
162
+ # Now make sure it passes if we pass in "true"
163
+ assert(cmd.check(true), "Check failed with refreshonly true while refreshing")
164
+
165
+ # Now set it to false
166
+ cmd[:refreshonly] = false
167
+ assert(cmd.check, "Check failed with refreshonly false")
176
168
  end
177
169
 
178
170
  def test_creates
@@ -200,13 +192,13 @@ class TestExec < Test::Unit::TestCase
200
192
  File.open(exe, "w") { |f| f.puts "#!#{sh}\necho yup" }
201
193
 
202
194
  file = Puppet.type(:file).create(
203
- :name => oexe,
195
+ :path => oexe,
204
196
  :source => exe,
205
197
  :mode => 0755
206
198
  )
207
199
 
208
200
  exec = Puppet.type(:exec).create(
209
- :name => oexe,
201
+ :command => oexe,
210
202
  :require => [:file, oexe]
211
203
  )
212
204
 
@@ -216,57 +208,62 @@ class TestExec < Test::Unit::TestCase
216
208
  end
217
209
 
218
210
  # Verify that we auto-require any managed scripts.
219
- def test_autorequire
211
+ def test_autorequire_files
220
212
  exe = tempfile()
221
213
  oexe = tempfile()
222
214
  sh = %x{which sh}
223
215
  File.open(exe, "w") { |f| f.puts "#!#{sh}\necho yup" }
224
216
 
225
217
  file = Puppet.type(:file).create(
226
- :name => oexe,
218
+ :path => oexe,
227
219
  :source => exe,
228
220
  :mode => 755
229
221
  )
230
222
 
231
223
  basedir = File.dirname(oexe)
232
224
  baseobj = Puppet.type(:file).create(
233
- :name => basedir,
225
+ :path => basedir,
234
226
  :source => exe,
235
227
  :mode => 755
236
228
  )
237
229
 
238
230
  ofile = Puppet.type(:file).create(
239
- :name => exe,
231
+ :path => exe,
240
232
  :mode => 755
241
233
  )
242
234
 
243
235
  exec = Puppet.type(:exec).create(
244
- :name => oexe,
236
+ :command => oexe,
245
237
  :path => ENV["PATH"],
246
238
  :cwd => basedir
247
239
  )
248
240
 
249
241
  cat = Puppet.type(:exec).create(
250
- :name => "cat %s %s" % [exe, oexe],
242
+ :command => "cat %s %s" % [exe, oexe],
251
243
  :path => ENV["PATH"]
252
244
  )
253
-
254
- comp = newcomp(ofile, exec, cat, file, baseobj)
255
- comp.finalize
245
+
246
+ rels = nil
247
+ assert_nothing_raised do
248
+ rels = exec.autorequire
249
+ end
256
250
 
257
251
  # Verify we get the script itself
258
- assert(exec.requires?(file), "Exec did not autorequire %s" % file)
252
+ assert(rels.detect { |r| r.source == file }, "Exec did not autorequire its command")
259
253
 
260
254
  # Verify we catch the cwd
261
- assert(exec.requires?(baseobj), "Exec did not autorequire cwd")
255
+ assert(rels.detect { |r| r.source == baseobj }, "Exec did not autorequire its cwd")
262
256
 
263
257
  # Verify we don't require ourselves
258
+ assert(! rels.detect { |r| r.source == ofile }, "Exec incorrectly required mentioned file")
264
259
  assert(!exec.requires?(ofile), "Exec incorrectly required file")
265
260
 
266
- # Verify that we catch inline files
267
261
  # We not longer autorequire inline files
268
- assert(! cat.requires?(ofile), "Exec required second inline file")
269
- assert(! cat.requires?(file), "Exec required inline file")
262
+ assert_nothing_raised do
263
+ rels = cat.autorequire
264
+ end
265
+ assert(! rels.detect { |r| r.source == ofile }, "Exec required second inline file")
266
+ assert(! rels.detect { |r| r.source == file }, "Exec required inline file")
270
267
  end
271
268
 
272
269
  def test_ifonly
@@ -302,20 +299,23 @@ class TestExec < Test::Unit::TestCase
302
299
  :path => ENV['PATH']
303
300
  )
304
301
  }
302
+ comp = newcomp(exec)
305
303
 
306
- assert_events([:executed_command], exec)
307
- assert_events([:executed_command], exec)
304
+ assert_events([:executed_command], comp)
305
+ assert_events([:executed_command], comp)
308
306
  system("touch %s" % afile)
309
- assert_events([], exec)
310
- assert_events([], exec)
307
+ assert_events([], comp)
308
+ assert_events([], comp)
311
309
  system("rm %s" % afile)
312
- assert_events([:executed_command], exec)
313
- assert_events([:executed_command], exec)
310
+ assert_events([:executed_command], comp)
311
+ assert_events([:executed_command], comp)
314
312
  end
315
313
 
316
- if Process.uid == 0
314
+ if Puppet::Util::SUIDManager.uid == 0
317
315
  # Verify that we can execute commands as a special user
318
316
  def mknverify(file, user, group = nil, id = true)
317
+ File.umask(0022)
318
+
319
319
  args = {
320
320
  :command => "touch %s" % file,
321
321
  :path => "/usr/bin:/bin:/usr/sbin:/sbin",
@@ -377,7 +377,7 @@ class TestExec < Test::Unit::TestCase
377
377
  exec = nil
378
378
  assert_nothing_raised {
379
379
  exec = Puppet.type(:exec).create(
380
- :name => "logoutputesting",
380
+ :title => "logoutputesting",
381
381
  :path => "/usr/bin:/bin",
382
382
  :command => "echo logoutput is false",
383
383
  :logoutput => false
@@ -408,7 +408,7 @@ class TestExec < Test::Unit::TestCase
408
408
  path = File.join(basedir, "subfile")
409
409
  assert_nothing_raised {
410
410
  exec = Puppet.type(:exec).create(
411
- :name => "mkdir",
411
+ :title => "mkdir",
412
412
  :path => "/usr/bin:/bin",
413
413
  :creates => basedir,
414
414
  :command => "mkdir %s; touch %s" % [basedir, path]
@@ -433,6 +433,7 @@ class TestExec < Test::Unit::TestCase
433
433
  assert(File.stat(path).mode & 007777 == 0755)
434
434
  end
435
435
 
436
+ # Make sure all checks need to be fully qualified.
436
437
  def test_falsevals
437
438
  exec = nil
438
439
  assert_nothing_raised do
@@ -444,7 +445,7 @@ class TestExec < Test::Unit::TestCase
444
445
  Puppet.type(:exec).checks.each do |check|
445
446
  klass = Puppet.type(:exec).paramclass(check)
446
447
  next if klass.values.include? :false
447
- assert_raise(Puppet::Error, "Check %s did not fail on false" % check) do
448
+ assert_raise(Puppet::Error, "Check '%s' did not fail on false" % check) do
448
449
  exec[check] = false
449
450
  end
450
451
  end
@@ -457,6 +458,7 @@ class TestExec < Test::Unit::TestCase
457
458
 
458
459
  assert_nothing_raised {
459
460
  exec1 = Puppet.type(:exec).create(
461
+ :title => "one",
460
462
  :path => ENV["PATH"],
461
463
  :command => "mkdir #{dir}"
462
464
  )
@@ -464,6 +466,7 @@ class TestExec < Test::Unit::TestCase
464
466
 
465
467
  assert_nothing_raised("Could not create exec w/out existing cwd") {
466
468
  exec2 = Puppet.type(:exec).create(
469
+ :title => "two",
467
470
  :path => ENV["PATH"],
468
471
  :command => "touch #{file}",
469
472
  :cwd => dir
@@ -477,12 +480,11 @@ class TestExec < Test::Unit::TestCase
477
480
  end
478
481
 
479
482
  assert_raise(Puppet::Error) do
480
- exec2.state(:returns).sync
483
+ exec2.property(:returns).sync
481
484
  end
482
485
 
483
486
  assert_nothing_raised do
484
- exec2[:require] = ["exec", exec1.name]
485
- exec2.finish
487
+ exec2[:require] = exec1
486
488
  end
487
489
 
488
490
  assert_apply(exec1, exec2)
@@ -530,6 +532,200 @@ class TestExec < Test::Unit::TestCase
530
532
  assert(! exec.check, "Check passed")
531
533
  }
532
534
  end
535
+
536
+ def test_missing_checks_cause_failures
537
+ # Solaris's sh exits with 1 here instead of 127
538
+ return if Facter.value(:operatingsystem) == "Solaris"
539
+ exec = Puppet::Type.type(:exec).create(
540
+ :command => "echo true",
541
+ :path => ENV["PATH"],
542
+ :onlyif => "/bin/nosuchthingexists"
543
+ )
544
+
545
+ assert_raise(ArgumentError, "Missing command did not raise error") {
546
+ exec.run("/bin/nosuchthingexists")
547
+ }
548
+ end
549
+
550
+ def test_envparam
551
+ exec = Puppet::Type.newexec(
552
+ :command => "echo $envtest",
553
+ :path => ENV["PATH"],
554
+ :env => "envtest=yayness"
555
+ )
556
+
557
+ assert(exec, "Could not make exec")
558
+
559
+ output = status = nil
560
+ assert_nothing_raised {
561
+ output, status = exec.run("echo $envtest")
562
+ }
563
+
564
+ assert_equal("yayness\n", output)
565
+
566
+ # Now check whether we can do multiline settings
567
+ assert_nothing_raised do
568
+ exec[:env] = "envtest=a list of things
569
+ and stuff"
570
+ end
571
+
572
+ output = status = nil
573
+ assert_nothing_raised {
574
+ output, status = exec.run('echo "$envtest"')
575
+ }
576
+ assert_equal("a list of things\nand stuff\n", output)
577
+
578
+ # Now test arrays
579
+ assert_nothing_raised do
580
+ exec[:env] = ["funtest=A", "yaytest=B"]
581
+ end
582
+
583
+ output = status = nil
584
+ assert_nothing_raised {
585
+ output, status = exec.run('echo "$funtest" "$yaytest"')
586
+ }
587
+ assert_equal("A B\n", output)
588
+ end
589
+
590
+ def test_timeout
591
+ exec = Puppet::Type.type(:exec).create(:command => "sleep 1", :path => ENV["PATH"], :timeout => "0.2")
592
+ time = Time.now
593
+
594
+ assert_raise(Timeout::Error) {
595
+ exec.run("sleep 1")
596
+ }
597
+ Puppet.info "%s seconds, vs a timeout of %s" % [Time.now.to_f - time.to_f, exec[:timeout]]
598
+
599
+
600
+ assert_apply(exec)
601
+ end
602
+
603
+ # Testing #470
604
+ def test_run_as_created_user
605
+ exec = nil
606
+ if Process.uid == 0
607
+ user = "nosuchuser"
608
+ assert_nothing_raised("Could not create exec with non-existent user") do
609
+ exec = Puppet::Type.type(:exec).create(
610
+ :command => "/bin/echo yay",
611
+ :user => user
612
+ )
613
+ end
614
+ end
615
+
616
+ # Now try the group
617
+ group = "nosuchgroup"
618
+ assert_nothing_raised("Could not create exec with non-existent user") do
619
+ exec = Puppet::Type.type(:exec).create(
620
+ :command => "/bin/echo yay",
621
+ :group => group
622
+ )
623
+ end
624
+ end
625
+
626
+ # make sure paths work both as arrays and strings
627
+ def test_paths_as_arrays
628
+ path = %w{/usr/bin /usr/sbin /sbin}
629
+ exec = nil
630
+ assert_nothing_raised("Could not use an array for the path") do
631
+ exec = Puppet::Type.type(:exec).create(:command => "echo yay",
632
+ :path => path)
633
+ end
634
+ assert_equal(path, exec[:path], "array-based path did not match")
635
+ assert_nothing_raised("Could not use a string for the path") do
636
+ exec = Puppet::Type.type(:exec).create(:command => "echo yay",
637
+ :path => path.join(":"))
638
+ end
639
+ assert_equal(path, exec[:path], "string-based path did not match")
640
+ assert_nothing_raised("Could not use a colon-separated strings in an array for the path") do
641
+ exec = Puppet::Type.type(:exec).create(:command => "echo yay",
642
+ :path => ["/usr/bin", "/usr/sbin:/sbin"])
643
+ end
644
+ assert_equal(path, exec[:path], "colon-separated array path did not match")
645
+ end
646
+
647
+ def test_checks_apply_to_refresh
648
+ file = tempfile()
649
+ maker = tempfile()
650
+ exec = Puppet::Type.type(:exec).create(
651
+ :title => "maker",
652
+ :command => "touch #{maker}",
653
+ :path => ENV["PATH"]
654
+ )
655
+
656
+ # Make sure it runs normally
657
+ assert_apply(exec)
658
+ assert(FileTest.exists?(maker), "exec did not run")
659
+ File.unlink(maker)
660
+
661
+ # Now make sure it refreshes
662
+ assert_nothing_raised("Failed to refresh exec") do
663
+ exec.refresh
664
+ end
665
+ assert(FileTest.exists?(maker), "exec did not run refresh")
666
+ File.unlink(maker)
667
+
668
+ # Now add the checks
669
+ exec[:creates] = file
670
+
671
+ # Make sure it runs when the file doesn't exist
672
+ assert_nothing_raised("Failed to refresh exec") do
673
+ exec.refresh
674
+ end
675
+ assert(FileTest.exists?(maker), "exec did not refresh when checks passed")
676
+ File.unlink(maker)
677
+
678
+ # Now create the file and make sure it doesn't refresh
679
+ File.open(file, "w") { |f| f.puts "" }
680
+ assert_nothing_raised("Failed to refresh exec") do
681
+ exec.refresh
682
+ end
683
+ assert(! FileTest.exists?(maker), "exec refreshed with failing checks")
684
+ end
685
+
686
+ def test_explicit_refresh
687
+ refresher = tempfile()
688
+ maker = tempfile()
689
+ exec = Puppet::Type.type(:exec).create(
690
+ :title => "maker",
691
+ :command => "touch #{maker}",
692
+ :path => ENV["PATH"]
693
+ )
694
+
695
+ # Call refresh normally
696
+ assert_nothing_raised do
697
+ exec.refresh
698
+ end
699
+
700
+ # Make sure it created the normal file
701
+ assert(FileTest.exists?(maker), "normal refresh did not work")
702
+ File.unlink(maker)
703
+
704
+ # Now reset refresh, and make sure it wins
705
+ assert_nothing_raised("Could not set refresh parameter") do
706
+ exec[:refresh] = "touch #{refresher}"
707
+ end
708
+ assert_nothing_raised do
709
+ exec.refresh
710
+ end
711
+
712
+ # Make sure it created the normal file
713
+ assert(FileTest.exists?(refresher), "refresh param was ignored")
714
+ assert(! FileTest.exists?(maker), "refresh param also ran command")
715
+ end
716
+
717
+ if Puppet.features.root?
718
+ def test_autorequire_user
719
+ user = Puppet::Type.type(:user).create(:name => "yay")
720
+ exec = Puppet::Type.type(:exec).create(:command => "/bin/echo fun", :user => "yay")
721
+
722
+ rels = nil
723
+ assert_nothing_raised("Could not evaluate autorequire") do
724
+ rels = exec.autorequire
725
+ end
726
+ assert(rels.find { |r| r.source == user and r.target == exec }, "Exec did not autorequire user")
727
+ end
728
+ end
533
729
  end
534
730
 
535
- # $Id: exec.rb 1089 2006-04-05 23:38:33Z luke $
731
+ # $Id: exec.rb 2442 2007-04-30 19:42:58Z luke $