puppet 0.24.9 → 0.25.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 (910) hide show
  1. data/CHANGELOG +18680 -1241
  2. data/CHANGELOG.old +1705 -0
  3. data/LICENSE +2 -2
  4. data/README +1 -1
  5. data/README.queueing +126 -0
  6. data/README.rst +4 -4
  7. data/Rakefile +62 -216
  8. data/bin/filebucket +6 -117
  9. data/bin/pi +50 -0
  10. data/bin/puppet +7 -188
  11. data/bin/puppetdoc +7 -198
  12. data/bin/ralsh +4 -191
  13. data/conf/auth.conf +94 -0
  14. data/conf/gentoo/init.d/puppetmaster +30 -30
  15. data/conf/osx/PackageInfo.plist +30 -30
  16. data/conf/osx/createpackage.sh +23 -18
  17. data/conf/osx/preflight +8 -0
  18. data/conf/puppet-queue.conf +10 -0
  19. data/conf/redhat/client.init +52 -41
  20. data/conf/redhat/logrotate +1 -0
  21. data/conf/redhat/puppet.spec +74 -36
  22. data/conf/redhat/rundir-perms.patch +28 -0
  23. data/conf/redhat/server.init +48 -43
  24. data/conf/redhat/server.sysconfig +4 -4
  25. data/conf/solaris/smf/puppetd.xml +53 -53
  26. data/conf/solaris/smf/puppetmasterd.xml +53 -53
  27. data/conf/solaris/smf/svc-puppetd +4 -4
  28. data/conf/solaris/smf/svc-puppetmasterd +3 -3
  29. data/conf/suse/client.init +4 -4
  30. data/conf/suse/puppet.spec +14 -14
  31. data/conf/suse/server.init +17 -17
  32. data/examples/etc/init.d/sleeper +8 -8
  33. data/examples/mac_dscl.pp +2 -2
  34. data/examples/mac_dscl_revert.pp +1 -1
  35. data/examples/mcx_dock_default.pp +108 -108
  36. data/examples/mcx_dock_full.pp +108 -108
  37. data/examples/mcx_nogroup.pp +108 -108
  38. data/examples/modules/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb +5 -5
  39. data/examples/modules/sample-module/manifests/init.pp +2 -2
  40. data/examples/relationships +1 -1
  41. data/ext/autotest/config +6 -6
  42. data/ext/bin/sleeper +12 -12
  43. data/ext/dbfix.sql +21 -21
  44. data/ext/emacs/puppet-mode.el +42 -41
  45. data/ext/extlookup.rb +183 -0
  46. data/ext/ldap/puppet.schema +2 -1
  47. data/ext/logcheck/puppet +1 -1
  48. data/ext/module_puppet +7 -7
  49. data/ext/nagios/check_puppet.rb +83 -83
  50. data/ext/nagios/naggen +302 -0
  51. data/ext/puppet-test +61 -18
  52. data/ext/puppetlisten/puppetlisten.rb +76 -0
  53. data/ext/puppetlisten/puppetrun.rb +39 -0
  54. data/ext/puppetstoredconfigclean.rb +29 -29
  55. data/ext/rack/README +73 -0
  56. data/ext/rack/files/apache2.conf +38 -0
  57. data/ext/rack/files/config.ru +18 -0
  58. data/ext/rack/manifest.pp +59 -0
  59. data/ext/vim/syntax/puppet.vim +54 -35
  60. data/install.rb +37 -26
  61. data/lib/puppet.rb +15 -227
  62. data/lib/puppet/agent.rb +134 -0
  63. data/lib/puppet/agent/locker.rb +42 -0
  64. data/lib/puppet/agent/runner.rb +65 -0
  65. data/lib/puppet/application.rb +313 -0
  66. data/lib/puppet/application/filebucket.rb +87 -0
  67. data/lib/puppet/application/pi.rb +214 -0
  68. data/lib/puppet/application/puppet.rb +177 -0
  69. data/lib/puppet/application/puppetca.rb +71 -0
  70. data/lib/puppet/application/puppetd.rb +256 -0
  71. data/lib/puppet/application/puppetdoc.rb +222 -0
  72. data/lib/puppet/application/puppetmasterd.rb +168 -0
  73. data/lib/puppet/application/puppetqd.rb +96 -0
  74. data/lib/puppet/application/puppetrun.rb +219 -0
  75. data/lib/puppet/application/ralsh.rb +168 -0
  76. data/lib/puppet/configurer.rb +177 -0
  77. data/lib/puppet/configurer/downloader.rb +79 -0
  78. data/lib/puppet/configurer/fact_handler.rb +68 -0
  79. data/lib/puppet/configurer/plugin_handler.rb +26 -0
  80. data/lib/puppet/daemon.rb +78 -28
  81. data/lib/puppet/defaults.rb +239 -166
  82. data/lib/puppet/dsl.rb +7 -7
  83. data/lib/puppet/external/dot.rb +271 -271
  84. data/lib/puppet/external/event-loop/better-definers.rb +298 -298
  85. data/lib/puppet/external/event-loop/event-loop.rb +274 -274
  86. data/lib/puppet/external/event-loop/signal-system.rb +163 -163
  87. data/lib/puppet/external/lock.rb +1 -1
  88. data/lib/puppet/external/nagios.rb +20 -20
  89. data/lib/puppet/external/nagios/base.rb +3 -3
  90. data/lib/puppet/external/nagios/grammar.ry +185 -0
  91. data/lib/puppet/external/nagios/makefile +9 -0
  92. data/lib/puppet/external/nagios/parser.rb +1 -1
  93. data/lib/puppet/feature/json.rb +2 -0
  94. data/lib/puppet/feature/rack.rb +24 -0
  95. data/lib/puppet/feature/rails.rb +23 -33
  96. data/lib/puppet/feature/rubygems.rb +6 -0
  97. data/lib/puppet/feature/stomp.rb +6 -0
  98. data/lib/puppet/file_serving/{file_base.rb → base.rb} +10 -9
  99. data/lib/puppet/file_serving/configuration.rb +61 -61
  100. data/lib/puppet/file_serving/configuration/parser.rb +24 -29
  101. data/lib/puppet/file_serving/content.rb +26 -11
  102. data/lib/puppet/file_serving/fileset.rb +54 -19
  103. data/lib/puppet/file_serving/indirection_hooks.rb +12 -24
  104. data/lib/puppet/file_serving/metadata.rb +8 -8
  105. data/lib/puppet/file_serving/mount.rb +9 -151
  106. data/lib/puppet/file_serving/mount/file.rb +126 -0
  107. data/lib/puppet/file_serving/mount/modules.rb +25 -0
  108. data/lib/puppet/file_serving/mount/plugins.rb +27 -0
  109. data/lib/puppet/file_serving/terminus_helper.rb +9 -4
  110. data/lib/puppet/indirector.rb +6 -4
  111. data/lib/puppet/indirector/active_record.rb +28 -0
  112. data/lib/puppet/indirector/catalog/active_record.rb +36 -0
  113. data/lib/puppet/indirector/catalog/compiler.rb +50 -24
  114. data/lib/puppet/indirector/catalog/queue.rb +5 -0
  115. data/lib/puppet/indirector/catalog/rest.rb +6 -0
  116. data/lib/puppet/indirector/catalog/yaml.rb +2 -4
  117. data/lib/puppet/indirector/certificate/ca.rb +9 -0
  118. data/lib/puppet/indirector/certificate/file.rb +9 -0
  119. data/lib/puppet/indirector/certificate/rest.rb +9 -0
  120. data/lib/puppet/indirector/certificate_request/ca.rb +14 -0
  121. data/lib/puppet/indirector/certificate_request/file.rb +8 -0
  122. data/lib/puppet/indirector/certificate_request/rest.rb +9 -0
  123. data/lib/puppet/indirector/certificate_revocation_list/ca.rb +8 -0
  124. data/lib/puppet/indirector/certificate_revocation_list/file.rb +8 -0
  125. data/lib/puppet/indirector/certificate_revocation_list/rest.rb +9 -0
  126. data/lib/puppet/indirector/direct_file_server.rb +4 -8
  127. data/lib/puppet/indirector/exec.rb +2 -6
  128. data/lib/puppet/indirector/facts/active_record.rb +36 -0
  129. data/lib/puppet/indirector/facts/facter.rb +30 -22
  130. data/lib/puppet/indirector/facts/rest.rb +6 -0
  131. data/lib/puppet/indirector/file.rb +1 -0
  132. data/lib/puppet/indirector/file_content/rest.rb +0 -1
  133. data/lib/puppet/indirector/file_metadata/file.rb +2 -2
  134. data/lib/puppet/indirector/file_metadata/rest.rb +0 -1
  135. data/lib/puppet/indirector/file_server.rb +31 -18
  136. data/lib/puppet/indirector/indirection.rb +46 -33
  137. data/lib/puppet/indirector/key/ca.rb +12 -0
  138. data/lib/puppet/indirector/key/file.rb +42 -0
  139. data/lib/puppet/indirector/node/active_record.rb +13 -0
  140. data/lib/puppet/indirector/node/ldap.rb +1 -1
  141. data/lib/puppet/indirector/queue.rb +83 -0
  142. data/lib/puppet/indirector/report/processor.rb +1 -1
  143. data/lib/puppet/indirector/report/rest.rb +7 -0
  144. data/lib/puppet/indirector/request.rb +158 -15
  145. data/lib/puppet/indirector/rest.rb +74 -36
  146. data/lib/puppet/indirector/runner/rest.rb +7 -0
  147. data/lib/puppet/indirector/ssl_file.rb +174 -0
  148. data/lib/puppet/indirector/terminus.rb +4 -4
  149. data/lib/puppet/indirector/yaml.rb +1 -1
  150. data/lib/puppet/metatype/manager.rb +3 -3
  151. data/lib/puppet/module.rb +99 -124
  152. data/lib/puppet/network/authconfig.rb +57 -42
  153. data/lib/puppet/network/authstore.rb +58 -10
  154. data/lib/puppet/network/client.rb +0 -2
  155. data/lib/puppet/network/client/ca.rb +1 -1
  156. data/lib/puppet/network/client/dipper.rb +7 -2
  157. data/lib/puppet/network/format.rb +123 -0
  158. data/lib/puppet/network/format_handler.rb +156 -0
  159. data/lib/puppet/network/formats.rb +123 -0
  160. data/lib/puppet/network/handler/filebucket.rb +1 -1
  161. data/lib/puppet/network/handler/fileserver.rb +43 -35
  162. data/lib/puppet/network/handler/master.rb +4 -4
  163. data/lib/puppet/network/handler/report.rb +1 -1
  164. data/lib/puppet/network/handler/resource.rb +16 -20
  165. data/lib/puppet/network/handler/runner.rb +9 -42
  166. data/lib/puppet/network/http.rb +4 -4
  167. data/lib/puppet/network/http/api.rb +4 -0
  168. data/lib/puppet/network/http/api/v1.rb +65 -0
  169. data/lib/puppet/network/http/handler.rb +163 -56
  170. data/lib/puppet/network/http/mongrel.rb +19 -15
  171. data/lib/puppet/network/http/mongrel/rest.rb +35 -17
  172. data/lib/puppet/network/http/rack.rb +62 -0
  173. data/lib/puppet/network/http/rack/httphandler.rb +34 -0
  174. data/lib/puppet/network/http/rack/rest.rb +79 -0
  175. data/lib/puppet/network/http/rack/xmlrpc.rb +65 -0
  176. data/lib/puppet/network/http/webrick.rb +89 -16
  177. data/lib/puppet/network/http/webrick/rest.rb +24 -11
  178. data/lib/puppet/network/http_pool.rb +28 -29
  179. data/lib/puppet/network/http_server/mongrel.rb +8 -10
  180. data/lib/puppet/network/http_server/webrick.rb +1 -3
  181. data/lib/puppet/network/rest_authconfig.rb +89 -0
  182. data/lib/puppet/network/rest_authorization.rb +25 -0
  183. data/lib/puppet/network/rights.rb +230 -27
  184. data/lib/puppet/network/server.rb +133 -31
  185. data/lib/puppet/network/xmlrpc/client.rb +5 -5
  186. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +6 -6
  187. data/lib/puppet/node.rb +28 -21
  188. data/lib/puppet/node/environment.rb +48 -0
  189. data/lib/puppet/node/facts.rb +21 -0
  190. data/lib/puppet/parameter.rb +291 -219
  191. data/lib/puppet/parser/ast.rb +1 -0
  192. data/lib/puppet/parser/ast/astarray.rb +5 -1
  193. data/lib/puppet/parser/ast/boolean_operator.rb +3 -3
  194. data/lib/puppet/parser/ast/caseopt.rb +10 -0
  195. data/lib/puppet/parser/ast/casestatement.rb +12 -27
  196. data/lib/puppet/parser/ast/collection.rb +31 -0
  197. data/lib/puppet/parser/ast/collexpr.rb +18 -11
  198. data/lib/puppet/parser/ast/comparison_operator.rb +1 -1
  199. data/lib/puppet/parser/ast/definition.rb +6 -2
  200. data/lib/puppet/parser/ast/function.rb +7 -2
  201. data/lib/puppet/parser/ast/ifstatement.rb +11 -6
  202. data/lib/puppet/parser/ast/leaf.rb +106 -3
  203. data/lib/puppet/parser/ast/match_operator.rb +31 -0
  204. data/lib/puppet/parser/ast/node.rb +10 -6
  205. data/lib/puppet/parser/ast/resource_defaults.rb +2 -2
  206. data/lib/puppet/parser/ast/resource_override.rb +1 -1
  207. data/lib/puppet/parser/ast/resource_reference.rb +11 -3
  208. data/lib/puppet/parser/ast/selector.rb +14 -32
  209. data/lib/puppet/parser/ast/vardef.rb +1 -1
  210. data/lib/puppet/parser/collector.rb +67 -15
  211. data/lib/puppet/parser/compiler.rb +21 -53
  212. data/lib/puppet/parser/files.rb +92 -0
  213. data/lib/puppet/parser/functions.rb +3 -3
  214. data/lib/puppet/parser/functions/defined.rb +3 -3
  215. data/lib/puppet/parser/functions/fqdn_rand.rb +3 -3
  216. data/lib/puppet/parser/functions/inline_template.rb +4 -4
  217. data/lib/puppet/parser/functions/regsubst.rb +37 -35
  218. data/lib/puppet/parser/functions/require.rb +34 -0
  219. data/lib/puppet/parser/functions/shellquote.rb +41 -0
  220. data/lib/puppet/parser/functions/split.rb +29 -0
  221. data/lib/puppet/parser/functions/sprintf.rb +6 -6
  222. data/lib/puppet/parser/functions/template.rb +4 -4
  223. data/lib/puppet/parser/functions/versioncmp.rb +22 -1
  224. data/lib/puppet/parser/grammar.ra +812 -0
  225. data/lib/puppet/parser/interpreter.rb +4 -4
  226. data/lib/puppet/parser/lexer.rb +44 -15
  227. data/lib/puppet/parser/loaded_code.rb +115 -0
  228. data/lib/puppet/parser/makefile +8 -0
  229. data/lib/puppet/parser/parser.rb +1080 -928
  230. data/lib/puppet/parser/parser_support.rb +118 -96
  231. data/lib/puppet/parser/resource.rb +56 -126
  232. data/lib/puppet/parser/resource/param.rb +2 -76
  233. data/lib/puppet/parser/resource/reference.rb +15 -8
  234. data/lib/puppet/parser/scope.rb +68 -35
  235. data/lib/puppet/parser/templatewrapper.rb +8 -8
  236. data/lib/puppet/parser/yaml_trimmer.rb +11 -0
  237. data/lib/puppet/property.rb +69 -124
  238. data/lib/puppet/property/list.rb +3 -3
  239. data/lib/puppet/provider.rb +5 -5
  240. data/lib/puppet/provider/augeas/augeas.rb +119 -118
  241. data/lib/puppet/provider/computer/computer.rb +3 -3
  242. data/lib/puppet/provider/confine/variable.rb +1 -1
  243. data/lib/puppet/provider/cron/crontab.rb +8 -7
  244. data/lib/puppet/provider/group/directoryservice.rb +2 -2
  245. data/lib/puppet/provider/group/groupadd.rb +1 -1
  246. data/lib/puppet/provider/group/ldap.rb +3 -3
  247. data/lib/puppet/provider/group/pw.rb +1 -1
  248. data/lib/puppet/provider/host/parsed.rb +3 -3
  249. data/lib/puppet/provider/ldap.rb +1 -3
  250. data/lib/puppet/provider/macauthorization/macauthorization.rb +62 -55
  251. data/lib/puppet/provider/mailalias/aliases.rb +9 -1
  252. data/lib/puppet/provider/maillist/mailman.rb +8 -4
  253. data/lib/puppet/provider/mcx/mcxcontent.rb +11 -11
  254. data/lib/puppet/provider/mount/parsed.rb +2 -2
  255. data/lib/puppet/provider/nameservice.rb +6 -6
  256. data/lib/puppet/provider/nameservice/directoryservice.rb +83 -87
  257. data/lib/puppet/provider/package/appdmg.rb +10 -9
  258. data/lib/puppet/provider/package/apple.rb +1 -3
  259. data/lib/puppet/provider/package/apt.rb +5 -5
  260. data/lib/puppet/provider/package/aptitude.rb +1 -1
  261. data/lib/puppet/provider/package/aptrpm.rb +1 -1
  262. data/lib/puppet/provider/package/darwinport.rb +1 -1
  263. data/lib/puppet/provider/package/dpkg.rb +2 -2
  264. data/lib/puppet/provider/package/fink.rb +6 -6
  265. data/lib/puppet/provider/package/freebsd.rb +1 -1
  266. data/lib/puppet/provider/package/gem.rb +2 -2
  267. data/lib/puppet/provider/package/hpux.rb +5 -5
  268. data/lib/puppet/provider/package/pkgdmg.rb +30 -22
  269. data/lib/puppet/provider/package/portage.rb +1 -1
  270. data/lib/puppet/provider/package/ports.rb +1 -1
  271. data/lib/puppet/provider/package/rpm.rb +5 -5
  272. data/lib/puppet/provider/package/rug.rb +1 -1
  273. data/lib/puppet/provider/package/sun.rb +7 -7
  274. data/lib/puppet/provider/package/up2date.rb +1 -1
  275. data/lib/puppet/provider/package/yum.rb +2 -2
  276. data/lib/puppet/provider/package/yumhelper.py +2 -2
  277. data/lib/puppet/provider/port/parsed.rb +1 -1
  278. data/lib/puppet/provider/selmodule/semodule.rb +3 -3
  279. data/lib/puppet/provider/service/base.rb +21 -12
  280. data/lib/puppet/provider/service/daemontools.rb +86 -49
  281. data/lib/puppet/provider/service/debian.rb +20 -12
  282. data/lib/puppet/provider/service/freebsd.rb +5 -5
  283. data/lib/puppet/provider/service/gentoo.rb +2 -2
  284. data/lib/puppet/provider/service/init.rb +21 -33
  285. data/lib/puppet/provider/service/launchd.rb +120 -48
  286. data/lib/puppet/provider/service/redhat.rb +12 -21
  287. data/lib/puppet/provider/service/runit.rb +19 -9
  288. data/lib/puppet/provider/service/smf.rb +49 -34
  289. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +34 -0
  290. data/lib/puppet/provider/sshkey/parsed.rb +2 -2
  291. data/lib/puppet/provider/user/directoryservice.rb +12 -29
  292. data/lib/puppet/provider/user/hpux.rb +3 -3
  293. data/lib/puppet/provider/user/ldap.rb +2 -2
  294. data/lib/puppet/provider/zfs/solaris.rb +1 -1
  295. data/lib/puppet/provider/zone/solaris.rb +4 -4
  296. data/lib/puppet/provider/zpool/solaris.rb +3 -3
  297. data/lib/puppet/rails.rb +9 -9
  298. data/lib/puppet/rails/benchmark.rb +69 -0
  299. data/lib/puppet/rails/database/001_add_created_at_to_all_tables.rb +5 -5
  300. data/lib/puppet/rails/database/002_remove_duplicated_index_on_all_tables.rb +2 -2
  301. data/lib/puppet/rails/database/003_add_environment_to_host.rb +1 -1
  302. data/lib/puppet/rails/database/schema.rb +8 -8
  303. data/lib/puppet/rails/fact_value.rb +1 -1
  304. data/lib/puppet/rails/host.rb +211 -93
  305. data/lib/puppet/rails/param_name.rb +5 -1
  306. data/lib/puppet/rails/param_value.rb +29 -2
  307. data/lib/puppet/rails/puppet_tag.rb +5 -0
  308. data/lib/puppet/rails/resource.rb +120 -20
  309. data/lib/puppet/rails/resource_tag.rb +1 -1
  310. data/lib/puppet/rails/source_file.rb +1 -1
  311. data/lib/puppet/reference/configuration.rb +14 -14
  312. data/lib/puppet/reference/function.rb +1 -1
  313. data/lib/puppet/reference/metaparameter.rb +48 -0
  314. data/lib/puppet/reference/providers.rb +6 -6
  315. data/lib/puppet/reference/type.rb +1 -37
  316. data/lib/puppet/relationship.rb +57 -30
  317. data/lib/puppet/reports/rrdgraph.rb +4 -4
  318. data/lib/puppet/reports/store.rb +3 -3
  319. data/lib/puppet/reports/tagmail.rb +15 -15
  320. data/lib/puppet/resource.rb +265 -0
  321. data/lib/puppet/{node → resource}/catalog.rb +188 -112
  322. data/lib/puppet/{resource_reference.rb → resource/reference.rb} +46 -24
  323. data/lib/puppet/simple_graph.rb +165 -27
  324. data/lib/puppet/ssl.rb +7 -0
  325. data/lib/puppet/ssl/base.rb +62 -0
  326. data/lib/puppet/ssl/certificate.rb +34 -0
  327. data/lib/puppet/ssl/certificate_authority.rb +298 -0
  328. data/lib/puppet/ssl/certificate_authority/interface.rb +118 -0
  329. data/lib/puppet/ssl/certificate_factory.rb +145 -0
  330. data/lib/puppet/ssl/certificate_request.rb +51 -0
  331. data/lib/puppet/ssl/certificate_revocation_list.rb +86 -0
  332. data/lib/puppet/ssl/host.rb +271 -0
  333. data/lib/puppet/ssl/inventory.rb +52 -0
  334. data/lib/puppet/ssl/key.rb +56 -0
  335. data/lib/puppet/sslcertificates.rb +6 -6
  336. data/lib/puppet/sslcertificates/ca.rb +15 -15
  337. data/lib/puppet/sslcertificates/certificate.rb +4 -4
  338. data/lib/puppet/sslcertificates/inventory.rb +3 -3
  339. data/lib/puppet/transaction.rb +113 -139
  340. data/lib/puppet/transaction/change.rb +6 -6
  341. data/lib/puppet/transaction/event.rb +1 -1
  342. data/lib/puppet/transaction/report.rb +7 -1
  343. data/lib/puppet/transportable.rb +28 -28
  344. data/lib/puppet/type.rb +263 -688
  345. data/lib/puppet/type/augeas.rb +3 -2
  346. data/lib/puppet/type/component.rb +28 -95
  347. data/lib/puppet/type/computer.rb +10 -10
  348. data/lib/puppet/type/cron.rb +19 -14
  349. data/lib/puppet/type/exec.rb +21 -20
  350. data/lib/puppet/type/file.rb +306 -633
  351. data/lib/puppet/type/file/checksum.rb +10 -11
  352. data/lib/puppet/type/file/content.rb +83 -22
  353. data/lib/puppet/type/file/ensure.rb +15 -9
  354. data/lib/puppet/type/file/group.rb +7 -1
  355. data/lib/puppet/type/file/mode.rb +1 -1
  356. data/lib/puppet/type/file/owner.rb +9 -3
  357. data/lib/puppet/type/file/selcontext.rb +4 -4
  358. data/lib/puppet/type/file/source.rb +78 -179
  359. data/lib/puppet/type/file/target.rb +3 -3
  360. data/lib/puppet/type/file/type.rb +2 -2
  361. data/lib/puppet/type/filebucket.rb +33 -54
  362. data/lib/puppet/type/group.rb +8 -8
  363. data/lib/puppet/type/host.rb +7 -7
  364. data/lib/puppet/type/k5login.rb +2 -2
  365. data/lib/puppet/type/macauthorization.rb +77 -52
  366. data/lib/puppet/type/mailalias.rb +2 -2
  367. data/lib/puppet/type/maillist.rb +2 -2
  368. data/lib/puppet/type/mcx.rb +3 -3
  369. data/lib/puppet/type/mount.rb +16 -11
  370. data/lib/puppet/type/notify.rb +4 -4
  371. data/lib/puppet/type/package.rb +6 -28
  372. data/lib/puppet/type/port.rb +1 -1
  373. data/lib/puppet/type/resources.rb +19 -19
  374. data/lib/puppet/type/schedule.rb +18 -20
  375. data/lib/puppet/type/selmodule.rb +1 -1
  376. data/lib/puppet/type/service.rb +11 -7
  377. data/lib/puppet/type/ssh_authorized_key.rb +26 -9
  378. data/lib/puppet/type/sshkey.rb +2 -2
  379. data/lib/puppet/type/tidy.rb +285 -289
  380. data/lib/puppet/type/user.rb +9 -7
  381. data/lib/puppet/type/yumrepo.rb +17 -16
  382. data/lib/puppet/type/zone.rb +8 -7
  383. data/lib/puppet/util.rb +11 -36
  384. data/lib/puppet/util/autoload.rb +31 -19
  385. data/lib/puppet/util/autoload/file_cache.rb +115 -0
  386. data/lib/puppet/util/backups.rb +86 -0
  387. data/lib/puppet/util/cacher.rb +135 -0
  388. data/lib/puppet/util/checksums.rb +11 -1
  389. data/lib/puppet/util/classgen.rb +1 -1
  390. data/lib/puppet/util/config_store.rb +2 -2
  391. data/lib/puppet/util/constant_inflector.rb +1 -1
  392. data/lib/puppet/util/diff.rb +2 -2
  393. data/lib/puppet/util/docs.rb +9 -3
  394. data/lib/puppet/util/execution.rb +1 -1
  395. data/lib/puppet/util/feature.rb +27 -20
  396. data/lib/puppet/util/fileparsing.rb +3 -3
  397. data/lib/puppet/util/filetype.rb +8 -6
  398. data/lib/puppet/util/graph.rb +5 -5
  399. data/lib/puppet/util/inifile.rb +5 -5
  400. data/lib/puppet/util/json.rb +13 -0
  401. data/lib/puppet/util/ldap/connection.rb +2 -2
  402. data/lib/puppet/util/log.rb +48 -31
  403. data/lib/puppet/util/metric.rb +4 -4
  404. data/lib/puppet/util/monkey_patches.rb +43 -0
  405. data/lib/puppet/util/nagios_maker.rb +1 -1
  406. data/lib/puppet/util/package.rb +4 -4
  407. data/lib/puppet/util/pidlock.rb +59 -59
  408. data/lib/puppet/util/posix.rb +13 -52
  409. data/lib/puppet/util/provider_features.rb +3 -3
  410. data/lib/puppet/util/queue.rb +96 -0
  411. data/lib/puppet/util/queue/stomp.rb +47 -0
  412. data/lib/puppet/util/rails/cache_accumulator.rb +65 -0
  413. data/lib/puppet/util/rails/collection_merger.rb +0 -39
  414. data/lib/puppet/util/rails/reference_serializer.rb +17 -3
  415. data/lib/puppet/util/rdoc.rb +1 -0
  416. data/lib/puppet/util/rdoc/code_objects.rb +5 -1
  417. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +5 -5
  418. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +13 -13
  419. data/lib/puppet/util/rdoc/parser.rb +28 -32
  420. data/lib/puppet/util/reference.rb +29 -8
  421. data/lib/puppet/util/resource_template.rb +1 -1
  422. data/lib/puppet/util/selinux.rb +12 -6
  423. data/lib/puppet/util/settings.rb +203 -578
  424. data/lib/puppet/util/settings/boolean_setting.rb +33 -0
  425. data/lib/puppet/util/settings/file_setting.rb +119 -0
  426. data/lib/puppet/util/settings/setting.rb +110 -0
  427. data/lib/puppet/util/subclass_loader.rb +1 -1
  428. data/lib/puppet/util/suidmanager.rb +2 -2
  429. data/lib/puppet/util/tagging.rb +1 -1
  430. data/lib/puppet/util/warnings.rb +17 -9
  431. data/man/man8/filebucket.8 +2 -2
  432. data/man/man8/pi.8 +2 -2
  433. data/man/man8/puppet.8 +3 -4
  434. data/man/man8/puppet.conf.8 +63 -63
  435. data/man/man8/puppetca.8 +2 -2
  436. data/man/man8/puppetd.8 +2 -2
  437. data/man/man8/puppetdoc.8 +2 -2
  438. data/man/man8/puppetmasterd.8 +2 -2
  439. data/man/man8/puppetrun.8 +2 -2
  440. data/man/man8/ralsh.8 +3 -3
  441. data/sbin/puppetca +102 -0
  442. data/sbin/puppetd +159 -0
  443. data/sbin/puppetmasterd +66 -0
  444. data/sbin/puppetqd +53 -0
  445. data/sbin/puppetrun +130 -0
  446. data/spec/Rakefile +2 -2
  447. data/spec/integration/application/puppet.rb +33 -0
  448. data/spec/integration/bin/puppetmasterd.rb +110 -0
  449. data/spec/integration/configurer.rb +18 -0
  450. data/spec/integration/defaults.rb +158 -7
  451. data/spec/integration/file_serving/content.rb +2 -0
  452. data/spec/integration/file_serving/fileset.rb +14 -0
  453. data/spec/integration/file_serving/metadata.rb +2 -0
  454. data/spec/integration/file_serving/terminus_helper.rb +22 -0
  455. data/spec/integration/indirector/catalog/compiler.rb +67 -0
  456. data/spec/integration/indirector/catalog/queue.rb +61 -0
  457. data/spec/integration/indirector/certificate/rest.rb +69 -0
  458. data/spec/integration/indirector/certificate_request/rest.rb +89 -0
  459. data/spec/integration/indirector/certificate_revocation_list/rest.rb +77 -0
  460. data/spec/integration/indirector/direct_file_server.rb +16 -23
  461. data/spec/integration/indirector/file_content/file_server.rb +75 -0
  462. data/spec/integration/indirector/report/rest.rb +95 -0
  463. data/spec/integration/indirector/rest.rb +207 -147
  464. data/spec/integration/network/client.rb +19 -0
  465. data/spec/integration/network/formats.rb +110 -0
  466. data/spec/integration/network/handler.rb +25 -0
  467. data/spec/integration/network/server/mongrel.rb +26 -8
  468. data/spec/integration/network/server/webrick.rb +49 -11
  469. data/spec/integration/node/environment.rb +58 -0
  470. data/spec/integration/node/facts.rb +4 -2
  471. data/spec/integration/parser/compiler.rb +29 -0
  472. data/spec/integration/parser/functions/require.rb +67 -0
  473. data/spec/integration/provider/mailalias/aliases.rb +25 -0
  474. data/spec/integration/{node → resource}/catalog.rb +17 -10
  475. data/spec/integration/ssl/certificate_authority.rb +135 -0
  476. data/spec/integration/ssl/certificate_request.rb +59 -0
  477. data/spec/integration/ssl/certificate_revocation_list.rb +42 -0
  478. data/spec/integration/ssl/host.rb +90 -0
  479. data/spec/integration/transaction.rb +66 -0
  480. data/spec/integration/transaction/report.rb +2 -5
  481. data/spec/integration/type.rb +22 -0
  482. data/spec/integration/type/file.rb +458 -0
  483. data/spec/integration/type/package.rb +1 -1
  484. data/spec/integration/type/tidy.rb +27 -0
  485. data/spec/integration/util/autoload.rb +114 -0
  486. data/spec/integration/util/feature.rb +54 -0
  487. data/spec/integration/util/file_locking.rb +2 -1
  488. data/spec/integration/util/settings.rb +27 -0
  489. data/spec/lib/puppet_spec/files.rb +9 -0
  490. data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +1 -0
  491. data/spec/monkey_patches/alias_should_to_must.rb +1 -0
  492. data/spec/shared_behaviours/file_server_terminus.rb +14 -11
  493. data/spec/shared_behaviours/file_serving.rb +13 -17
  494. data/spec/spec_helper.rb +22 -5
  495. data/spec/unit/agent.rb +259 -0
  496. data/spec/unit/agent/locker.rb +100 -0
  497. data/spec/unit/agent/runner.rb +118 -0
  498. data/spec/unit/application.rb +420 -0
  499. data/spec/unit/application/filebucket.rb +220 -0
  500. data/spec/unit/application/pi.rb +84 -0
  501. data/spec/unit/application/puppet.rb +404 -0
  502. data/spec/unit/application/puppetca.rb +142 -0
  503. data/spec/unit/application/puppetd.rb +502 -0
  504. data/spec/unit/application/puppetdoc.rb +345 -0
  505. data/spec/unit/application/puppetmasterd.rb +456 -0
  506. data/spec/unit/application/puppetqd.rb +186 -0
  507. data/spec/unit/application/puppetrun.rb +279 -0
  508. data/spec/unit/application/ralsh.rb +237 -0
  509. data/spec/unit/configurer.rb +232 -0
  510. data/spec/unit/configurer/downloader.rb +188 -0
  511. data/spec/unit/configurer/fact_handler.rb +150 -0
  512. data/spec/unit/configurer/plugin_handler.rb +112 -0
  513. data/spec/unit/daemon.rb +287 -0
  514. data/spec/unit/file_serving/{file_base.rb → base.rb} +39 -31
  515. data/spec/unit/file_serving/configuration.rb +104 -93
  516. data/spec/unit/file_serving/configuration/parser.rb +64 -18
  517. data/spec/unit/file_serving/content.rb +65 -26
  518. data/spec/unit/file_serving/fileset.rb +116 -14
  519. data/spec/unit/file_serving/indirection_hooks.rb +34 -95
  520. data/spec/unit/file_serving/metadata.rb +27 -40
  521. data/spec/unit/file_serving/mount.rb +7 -118
  522. data/spec/unit/file_serving/mount/file.rb +188 -0
  523. data/spec/unit/file_serving/mount/modules.rb +63 -0
  524. data/spec/unit/file_serving/mount/plugins.rb +61 -0
  525. data/spec/unit/file_serving/terminus_helper.rb +39 -27
  526. data/spec/unit/indirector.rb +6 -1
  527. data/spec/unit/indirector/active_record.rb +76 -0
  528. data/spec/unit/indirector/catalog/active_record.rb +122 -0
  529. data/spec/unit/indirector/catalog/compiler.rb +222 -118
  530. data/spec/unit/indirector/catalog/queue.rb +20 -0
  531. data/spec/unit/indirector/catalog/rest.rb +11 -0
  532. data/spec/unit/indirector/catalog/yaml.rb +6 -6
  533. data/spec/unit/indirector/certificate/ca.rb +28 -0
  534. data/spec/unit/indirector/certificate/file.rb +28 -0
  535. data/spec/unit/indirector/certificate/rest.rb +23 -0
  536. data/spec/unit/indirector/certificate_request/ca.rb +19 -0
  537. data/spec/unit/indirector/certificate_request/file.rb +19 -0
  538. data/spec/unit/indirector/certificate_request/rest.rb +23 -0
  539. data/spec/unit/indirector/certificate_revocation_list/ca.rb +21 -0
  540. data/spec/unit/indirector/certificate_revocation_list/file.rb +20 -0
  541. data/spec/unit/indirector/certificate_revocation_list/rest.rb +23 -0
  542. data/spec/unit/indirector/direct_file_server.rb +3 -8
  543. data/spec/unit/indirector/exec.rb +6 -1
  544. data/spec/unit/indirector/facts/active_record.rb +104 -0
  545. data/spec/unit/indirector/facts/facter.rb +53 -12
  546. data/spec/unit/indirector/facts/rest.rb +11 -0
  547. data/spec/unit/indirector/file.rb +8 -1
  548. data/spec/unit/indirector/file_metadata/file.rb +5 -5
  549. data/spec/unit/indirector/file_server.rb +181 -98
  550. data/spec/unit/indirector/indirection.rb +102 -38
  551. data/spec/unit/indirector/key/ca.rb +28 -0
  552. data/spec/unit/indirector/key/file.rb +104 -0
  553. data/spec/unit/indirector/node/active_record.rb +34 -0
  554. data/spec/unit/indirector/node/ldap.rb +1 -1
  555. data/spec/unit/indirector/node/rest.rb +2 -2
  556. data/spec/unit/indirector/queue.rb +123 -0
  557. data/spec/unit/indirector/report/rest.rb +28 -0
  558. data/spec/unit/indirector/request.rb +221 -0
  559. data/spec/unit/indirector/rest.rb +343 -334
  560. data/spec/unit/indirector/runner/rest.rb +11 -0
  561. data/spec/unit/indirector/ssl_file.rb +280 -0
  562. data/spec/unit/module.rb +180 -180
  563. data/spec/unit/network/authconfig.rb +292 -0
  564. data/spec/unit/network/authstore.rb +94 -0
  565. data/spec/unit/network/client.rb +2 -2
  566. data/spec/unit/network/client/dipper.rb +16 -0
  567. data/spec/unit/network/format.rb +191 -0
  568. data/spec/unit/network/format_handler.rb +306 -0
  569. data/spec/unit/network/formats.rb +249 -0
  570. data/spec/unit/network/handler/fileserver.rb +2 -5
  571. data/spec/unit/network/http.rb +3 -3
  572. data/spec/unit/network/http/api/v1.rb +122 -0
  573. data/spec/unit/network/http/handler.rb +448 -0
  574. data/spec/unit/network/http/mongrel.rb +46 -32
  575. data/spec/unit/network/http/mongrel/rest.rb +174 -319
  576. data/spec/unit/network/http/rack.rb +102 -0
  577. data/spec/unit/network/http/rack/rest.rb +199 -0
  578. data/spec/unit/network/http/rack/xmlrpc.rb +157 -0
  579. data/spec/unit/network/http/webrick.rb +249 -37
  580. data/spec/unit/network/http/webrick/rest.rb +113 -279
  581. data/spec/unit/network/http_pool.rb +86 -110
  582. data/spec/unit/network/rest_authconfig.rb +146 -0
  583. data/spec/unit/network/rest_authorization.rb +43 -0
  584. data/spec/unit/network/rights.rb +519 -0
  585. data/spec/unit/network/server.rb +475 -257
  586. data/spec/unit/node.rb +43 -10
  587. data/spec/unit/node/environment.rb +143 -9
  588. data/spec/unit/node/facts.rb +77 -24
  589. data/spec/unit/other/selinux.rb +85 -0
  590. data/spec/unit/other/transbucket.rb +29 -13
  591. data/spec/unit/other/transobject.rb +35 -15
  592. data/spec/unit/parameter.rb +378 -5
  593. data/spec/unit/parser/ast.rb +1 -1
  594. data/spec/unit/parser/ast/arithmetic_operator.rb +17 -17
  595. data/spec/unit/parser/ast/astarray.rb +16 -10
  596. data/spec/unit/parser/ast/boolean_operator.rb +2 -2
  597. data/spec/unit/parser/ast/casestatement.rb +143 -0
  598. data/spec/unit/parser/ast/collection.rb +63 -0
  599. data/spec/unit/parser/ast/collexpr.rb +31 -8
  600. data/spec/unit/parser/ast/comparison_operator.rb +9 -9
  601. data/spec/unit/parser/ast/definition.rb +18 -0
  602. data/spec/unit/parser/ast/function.rb +6 -0
  603. data/spec/unit/parser/ast/ifstatement.rb +75 -0
  604. data/spec/unit/parser/ast/leaf.rb +261 -0
  605. data/spec/unit/parser/ast/match_operator.rb +50 -0
  606. data/spec/unit/parser/ast/minus.rb +1 -1
  607. data/spec/unit/parser/ast/node.rb +20 -0
  608. data/spec/unit/parser/ast/not.rb +1 -1
  609. data/spec/unit/parser/ast/resource_override.rb +5 -5
  610. data/spec/unit/parser/ast/resource_reference.rb +11 -5
  611. data/spec/unit/parser/ast/selector.rb +156 -0
  612. data/spec/unit/parser/ast/vardef.rb +11 -11
  613. data/spec/unit/parser/collector.rb +167 -48
  614. data/spec/unit/parser/compiler.rb +128 -104
  615. data/spec/unit/parser/files.rb +190 -0
  616. data/spec/unit/parser/functions/inline_template.rb +0 -0
  617. data/spec/unit/parser/functions/regsubst.rb +42 -42
  618. data/spec/unit/parser/functions/require.rb +36 -0
  619. data/spec/unit/parser/functions/shellquote.rb +92 -0
  620. data/spec/unit/parser/functions/split.rb +51 -0
  621. data/spec/unit/parser/functions/sprintf.rb +11 -11
  622. data/spec/unit/parser/functions/template.rb +0 -0
  623. data/spec/unit/parser/functions/versioncmp.rb +2 -2
  624. data/spec/unit/parser/interpreter.rb +16 -7
  625. data/spec/unit/parser/lexer.rb +72 -12
  626. data/spec/unit/parser/loaded_code.rb +198 -0
  627. data/spec/unit/parser/parser.rb +215 -28
  628. data/spec/unit/parser/resource.rb +131 -22
  629. data/spec/unit/parser/scope.rb +207 -12
  630. data/spec/unit/parser/templatewrapper.rb +8 -3
  631. data/spec/unit/property.rb +270 -16
  632. data/spec/unit/property/list.rb +12 -6
  633. data/spec/unit/provider.rb +31 -0
  634. data/spec/unit/provider/augeas/augeas.rb +61 -33
  635. data/spec/unit/provider/macauthorization.rb +29 -29
  636. data/spec/unit/provider/mcx/mcxcontent.rb +4 -4
  637. data/spec/unit/provider/mount/parsed.rb +5 -8
  638. data/spec/unit/provider/naginator.rb +0 -0
  639. data/spec/unit/provider/package/apt.rb +6 -6
  640. data/spec/unit/provider/package/pkgdmg.rb +73 -0
  641. data/spec/unit/provider/selboolean.rb +1 -1
  642. data/spec/unit/provider/selmodule.rb +2 -2
  643. data/spec/unit/provider/service/daemontools.rb +40 -15
  644. data/spec/unit/provider/service/debian.rb +89 -0
  645. data/spec/unit/provider/service/init.rb +106 -0
  646. data/spec/unit/provider/service/launchd.rb +71 -13
  647. data/spec/unit/provider/service/redhat.rb +94 -0
  648. data/spec/unit/provider/service/runit.rb +14 -2
  649. data/spec/unit/provider/ssh_authorized_key/parsed.rb +66 -2
  650. data/spec/unit/provider/user/ldap.rb +1 -1
  651. data/spec/unit/provider/user/user_role_add.rb +1 -1
  652. data/spec/unit/provider/zfs/solaris.rb +18 -6
  653. data/spec/unit/provider/zone/solaris.rb +1 -1
  654. data/spec/unit/rails.rb +16 -22
  655. data/spec/unit/rails/host.rb +163 -0
  656. data/spec/unit/rails/param_value.rb +49 -0
  657. data/spec/unit/rails/resource.rb +87 -0
  658. data/spec/unit/relationship.rb +141 -29
  659. data/spec/unit/resource.rb +504 -0
  660. data/spec/unit/resource/catalog.rb +1061 -0
  661. data/spec/unit/resource/reference.rb +111 -0
  662. data/spec/unit/simple_graph.rb +448 -191
  663. data/spec/unit/ssl/certificate.rb +124 -0
  664. data/spec/unit/ssl/certificate_authority.rb +741 -0
  665. data/spec/unit/ssl/certificate_authority/interface.rb +269 -0
  666. data/spec/unit/ssl/certificate_factory.rb +107 -0
  667. data/spec/unit/ssl/certificate_request.rb +193 -0
  668. data/spec/unit/ssl/certificate_revocation_list.rb +180 -0
  669. data/spec/unit/ssl/host.rb +704 -0
  670. data/spec/unit/ssl/inventory.rb +180 -0
  671. data/spec/unit/ssl/key.rb +198 -0
  672. data/spec/unit/transaction.rb +65 -2
  673. data/spec/unit/transaction/change.rb +1 -1
  674. data/spec/unit/transaction/report.rb +1 -1
  675. data/spec/unit/type.rb +361 -8
  676. data/spec/unit/type/augeas.rb +30 -37
  677. data/spec/unit/type/component.rb +63 -0
  678. data/spec/unit/type/computer.rb +17 -21
  679. data/spec/unit/type/exec.rb +27 -2
  680. data/spec/unit/type/file.rb +704 -83
  681. data/spec/unit/type/file/content.rb +253 -15
  682. data/spec/unit/type/file/ensure.rb +65 -2
  683. data/spec/unit/type/file/group.rb +5 -0
  684. data/spec/unit/type/file/owner.rb +5 -0
  685. data/spec/unit/type/file/selinux.rb +12 -16
  686. data/spec/unit/type/file/source.rb +264 -0
  687. data/spec/unit/type/filebucket.rb +74 -0
  688. data/spec/unit/type/group.rb +1 -5
  689. data/spec/unit/type/macauthorization.rb +59 -26
  690. data/spec/unit/type/mcx.rb +8 -16
  691. data/spec/unit/type/mount.rb +8 -16
  692. data/spec/unit/type/noop_metaparam.rb +0 -2
  693. data/spec/unit/type/package.rb +13 -23
  694. data/spec/unit/type/resources.rb +4 -7
  695. data/spec/unit/type/schedule.rb +1 -7
  696. data/spec/unit/type/selboolean.rb +4 -6
  697. data/spec/unit/type/service.rb +23 -33
  698. data/spec/unit/type/ssh_authorized_key.rb +25 -14
  699. data/spec/unit/type/tidy.rb +329 -21
  700. data/spec/unit/type/user.rb +18 -10
  701. data/spec/unit/type/zfs.rb +6 -6
  702. data/spec/unit/util/autoload.rb +94 -3
  703. data/spec/unit/util/autoload/file_cache.rb +183 -0
  704. data/spec/unit/util/backups.rb +159 -0
  705. data/spec/unit/util/cache_accumulator.rb +69 -0
  706. data/spec/unit/util/cacher.rb +185 -0
  707. data/spec/unit/util/checksums.rb +9 -1
  708. data/spec/unit/util/feature.rb +72 -0
  709. data/spec/unit/util/filetype.rb +1 -11
  710. data/spec/unit/util/json.rb +21 -0
  711. data/spec/unit/util/log.rb +45 -0
  712. data/spec/unit/util/package.rb +2 -2
  713. data/spec/unit/util/queue.rb +88 -0
  714. data/spec/unit/util/queue/stomp.rb +140 -0
  715. data/spec/unit/util/reference_serializer.rb +52 -0
  716. data/spec/unit/util/selinux.rb +5 -3
  717. data/spec/unit/util/settings.rb +413 -264
  718. data/spec/unit/util/settings/file_setting.rb +223 -0
  719. data/spec/unit/util/storage.rb +11 -11
  720. data/spec/unit/util/warnings.rb +21 -17
  721. data/test/Rakefile +6 -5
  722. data/test/certmgr/ca.rb +5 -5
  723. data/test/certmgr/certmgr.rb +4 -4
  724. data/test/data/providers/cron/crontab.allthree +2 -2
  725. data/test/data/providers/cron/crontab.envNcomment +1 -1
  726. data/test/data/providers/cron/crontab.envNname +1 -1
  727. data/test/data/providers/cron/crontab.multirecords +1 -1
  728. data/test/data/providers/cron/crontab_collections.yaml +14 -14
  729. data/test/data/providers/cron/crontab_multiple_with_env.yaml +6 -6
  730. data/test/data/providers/cron/crontab_sample_records.yaml +102 -102
  731. data/test/data/providers/mailalias/aliases/test1 +28 -0
  732. data/test/data/providers/package/testpackages.yaml +6 -6
  733. data/test/data/reports/1.yaml +17 -17
  734. data/test/data/reports/tagmail_passers.conf +2 -2
  735. data/test/data/snippets/append.pp +5 -5
  736. data/test/data/snippets/casestatement.pp +9 -2
  737. data/test/data/snippets/classincludes.pp +1 -1
  738. data/test/data/snippets/collection_override.pp +8 -0
  739. data/test/data/snippets/fqparents.pp +2 -2
  740. data/test/data/snippets/ifexpression.pp +12 -0
  741. data/test/data/snippets/multilinecomments.pp +5 -1
  742. data/test/data/snippets/selectorvalues.pp +7 -0
  743. data/test/data/types/hosts/1 +1 -1
  744. data/test/data/types/hosts/2 +3 -3
  745. data/test/data/types/hosts/solaris +2 -2
  746. data/test/data/types/mount/freebsd.fstab +7 -7
  747. data/test/data/types/mount/solaris.fstab +10 -10
  748. data/test/data/types/port/1 +472 -472
  749. data/test/data/types/port/darwin +4347 -4347
  750. data/test/language/ast.rb +3 -2
  751. data/test/language/ast/casestatement.rb +12 -12
  752. data/test/language/ast/resource.rb +4 -4
  753. data/test/language/ast/resource_reference.rb +5 -5
  754. data/test/language/ast/selector.rb +11 -11
  755. data/test/language/ast/variable.rb +4 -4
  756. data/test/language/functions.rb +16 -16
  757. data/test/language/parser.rb +89 -111
  758. data/test/language/resource.rb +3 -88
  759. data/test/language/scope.rb +14 -55
  760. data/test/language/snippets.rb +31 -31
  761. data/test/lib/puppettest.rb +12 -12
  762. data/test/lib/puppettest/certificates.rb +2 -2
  763. data/test/lib/puppettest/exetest.rb +0 -1
  764. data/test/lib/puppettest/fakes.rb +1 -1
  765. data/test/lib/puppettest/parsertesting.rb +9 -4
  766. data/test/lib/puppettest/railstesting.rb +3 -3
  767. data/test/lib/puppettest/servertest.rb +1 -1
  768. data/test/lib/puppettest/support/assertions.rb +2 -2
  769. data/test/lib/puppettest/support/collection.rb +1 -1
  770. data/test/lib/puppettest/support/resources.rb +7 -7
  771. data/test/lib/puppettest/support/utils.rb +10 -16
  772. data/test/lib/puppettest/testcase.rb +2 -1
  773. data/test/network/authconfig.rb +1 -1
  774. data/test/network/authorization.rb +1 -1
  775. data/test/network/authstore.rb +57 -14
  776. data/test/network/client/ca.rb +1 -0
  777. data/test/network/client/resource.rb +12 -50
  778. data/test/network/client_request.rb +1 -1
  779. data/test/network/handler/bucket.rb +2 -2
  780. data/test/network/handler/fileserver.rb +17 -21
  781. data/test/network/handler/master.rb +5 -5
  782. data/test/network/handler/report.rb +3 -3
  783. data/test/network/handler/resource.rb +29 -75
  784. data/test/network/handler/runner.rb +8 -58
  785. data/test/network/rights.rb +1 -1
  786. data/test/network/server/mongrel_test.rb +15 -1
  787. data/test/network/server/webrick.rb +0 -36
  788. data/test/network/xmlrpc/webrick_servlet.rb +5 -5
  789. data/test/other/dsl.rb +3 -3
  790. data/test/other/events.rb +15 -15
  791. data/test/other/puppet.rb +2 -32
  792. data/test/other/relationships.rb +21 -148
  793. data/test/other/report.rb +20 -23
  794. data/test/other/transactions.rb +110 -298
  795. data/test/puppet/defaults.rb +1 -1
  796. data/test/puppet/tc_suidmanager.rb +1 -1
  797. data/test/rails/railsparameter.rb +4 -4
  798. data/test/ral/manager/attributes.rb +12 -68
  799. data/test/ral/manager/instances.rb +3 -19
  800. data/test/ral/manager/manager.rb +7 -7
  801. data/test/ral/manager/provider.rb +7 -7
  802. data/test/ral/manager/type.rb +54 -349
  803. data/test/ral/providers/cron/crontab.rb +14 -14
  804. data/test/ral/providers/group.rb +5 -6
  805. data/test/ral/providers/host/parsed.rb +3 -3
  806. data/test/ral/providers/mailalias/aliases.rb +4 -4
  807. data/test/ral/providers/package.rb +3 -3
  808. data/test/ral/providers/package/aptitude.rb +55 -55
  809. data/test/ral/providers/package/aptrpm.rb +7 -7
  810. data/test/ral/providers/parsedfile.rb +10 -14
  811. data/test/ral/providers/port/parsed.rb +6 -6
  812. data/test/ral/providers/provider.rb +10 -10
  813. data/test/ral/providers/service/base.rb +32 -32
  814. data/test/ral/providers/sshkey/parsed.rb +14 -14
  815. data/test/ral/providers/user.rb +16 -17
  816. data/test/ral/providers/user/useradd.rb +19 -22
  817. data/test/ral/type/cron.rb +21 -28
  818. data/test/ral/type/exec.rb +57 -60
  819. data/test/ral/type/file.rb +88 -862
  820. data/test/ral/type/file/target.rb +21 -70
  821. data/test/ral/type/fileignoresource.rb +37 -44
  822. data/test/ral/type/filesources.rb +43 -473
  823. data/test/ral/type/group.rb +6 -7
  824. data/test/ral/type/host.rb +14 -30
  825. data/test/ral/type/mailalias.rb +3 -3
  826. data/test/ral/type/port.rb +5 -5
  827. data/test/ral/type/resources.rb +37 -37
  828. data/test/ral/type/service.rb +3 -3
  829. data/test/ral/type/sshkey.rb +34 -39
  830. data/test/ral/type/user.rb +15 -14
  831. data/test/ral/type/yumrepo.rb +18 -17
  832. data/test/ral/type/zone.rb +4 -6
  833. data/test/test +9 -9
  834. data/test/util/fileparsing.rb +10 -10
  835. data/test/util/inifile.rb +6 -6
  836. data/test/util/instance_loader.rb +1 -1
  837. data/test/util/log.rb +2 -2
  838. data/test/util/metrics.rb +1 -6
  839. data/test/util/package.rb +1 -1
  840. data/test/util/pidlock.rb +116 -116
  841. data/test/util/settings.rb +40 -429
  842. data/test/util/storage.rb +5 -5
  843. data/test/util/subclass_loader.rb +0 -7
  844. data/test/util/utiltest.rb +10 -29
  845. metadata +1369 -941
  846. data/bin/puppetca +0 -363
  847. data/bin/puppetd +0 -439
  848. data/bin/puppetmasterd +0 -289
  849. data/bin/puppetrun +0 -369
  850. data/conf/redhat/lsb-config.patch +0 -51
  851. data/conf/redhat/no-chuser-0.15.1.patch +0 -38
  852. data/conf/redhat/no-lockdir.patch +0 -13
  853. data/examples/mac_netinfo.pp +0 -5
  854. data/ext/passenger/README +0 -63
  855. data/ext/passenger/apache2.conf +0 -29
  856. data/ext/passenger/config.ru +0 -40
  857. data/lib/puppet/config_stores/rest.rb +0 -60
  858. data/lib/puppet/executables/client/certhandler.rb +0 -82
  859. data/lib/puppet/indirector/file_content/modules.rb +0 -11
  860. data/lib/puppet/indirector/file_metadata/modules.rb +0 -17
  861. data/lib/puppet/indirector/module_files.rb +0 -82
  862. data/lib/puppet/indirector/ssl_rsa.rb +0 -5
  863. data/lib/puppet/indirector/ssl_rsa/file.rb +0 -33
  864. data/lib/puppet/network/client/master.rb +0 -524
  865. data/lib/puppet/network/http_server/rack.rb +0 -148
  866. data/lib/puppet/pgraph.rb +0 -121
  867. data/lib/puppet/provider/group/netinfo.rb +0 -15
  868. data/lib/puppet/provider/host/netinfo.rb +0 -19
  869. data/lib/puppet/provider/mount/netinfo.rb +0 -37
  870. data/lib/puppet/provider/nameservice/netinfo.rb +0 -224
  871. data/lib/puppet/provider/user/netinfo.rb +0 -111
  872. data/lib/puppet/util/fact_store.rb +0 -59
  873. data/lib/puppet/util/uri_helper.rb +0 -22
  874. data/spec/integration/file_serving/configuration.rb +0 -43
  875. data/spec/integration/indirector/module_files.rb +0 -57
  876. data/spec/unit/executables/client/certhandler.rb +0 -135
  877. data/spec/unit/indirector/file_content/modules.rb +0 -18
  878. data/spec/unit/indirector/file_metadata/modules.rb +0 -42
  879. data/spec/unit/indirector/module_files.rb +0 -259
  880. data/spec/unit/indirector/ssl_rsa/file.rb +0 -121
  881. data/spec/unit/network/client/master.rb +0 -442
  882. data/spec/unit/node/catalog.rb +0 -865
  883. data/spec/unit/other/pgraph.rb +0 -210
  884. data/spec/unit/resource_reference.rb +0 -73
  885. data/spec/unit/util/uri_helper.rb +0 -41
  886. data/test/data/snippets/ifexpression.rb +0 -6
  887. data/test/executables/filebucket.rb +0 -51
  888. data/test/executables/puppetbin.rb +0 -104
  889. data/test/executables/puppetca.rb +0 -115
  890. data/test/executables/puppetd.rb +0 -55
  891. data/test/executables/puppetmasterd.rb +0 -147
  892. data/test/network/client/client.rb +0 -195
  893. data/test/network/client/master.rb +0 -490
  894. data/test/network/daemon.rb +0 -70
  895. data/test/network/handler/handler.rb +0 -63
  896. data/test/other/overrides.rb +0 -107
  897. data/test/puppet/conffiles.rb +0 -107
  898. data/test/rails/ast.rb +0 -73
  899. data/test/rails/configuration.rb +0 -71
  900. data/test/rails/host.rb +0 -154
  901. data/test/rails/railsresource.rb +0 -251
  902. data/test/ral/providers/host/netinfo.rb +0 -56
  903. data/test/ral/providers/mount/netinfo.rb +0 -79
  904. data/test/ral/type/basic.rb +0 -85
  905. data/test/ral/type/filebucket.rb +0 -157
  906. data/test/ral/type/parameter.rb +0 -174
  907. data/test/ral/type/property.rb +0 -388
  908. data/test/ral/type/tidy.rb +0 -291
  909. data/test/util/autoload.rb +0 -145
  910. data/test/util/features.rb +0 -95
@@ -5,6 +5,7 @@ require File.dirname(__FILE__) + '/../../lib/puppettest'
5
5
  require 'puppettest'
6
6
  require 'puppettest/support/utils'
7
7
  require 'fileutils'
8
+ require 'mocha'
8
9
 
9
10
  class TestFile < Test::Unit::TestCase
10
11
  include PuppetTest::Support::Utils
@@ -13,7 +14,7 @@ class TestFile < Test::Unit::TestCase
13
14
  def mkfile(hash)
14
15
  file = nil
15
16
  assert_nothing_raised {
16
- file = Puppet.type(:file).create(hash)
17
+ file = Puppet::Type.type(:file).new(hash)
17
18
  }
18
19
  return file
19
20
  end
@@ -30,10 +31,10 @@ class TestFile < Test::Unit::TestCase
30
31
  @file = Puppet::Type.type(:file)
31
32
  $method = @method_name
32
33
  Puppet[:filetimeout] = -1
34
+ Facter.stubs(:to_hash).returns({})
33
35
  end
34
36
 
35
37
  def teardown
36
- Puppet::Util::Storage.clear
37
38
  system("rm -rf %s" % Puppet[:statefile])
38
39
  super
39
40
  end
@@ -104,7 +105,7 @@ class TestFile < Test::Unit::TestCase
104
105
 
105
106
  def test_groups_fails_when_invalid
106
107
  assert_raise(Puppet::Error, "did not fail when the group was empty") do
107
- Puppet::Type.type(:file).create :path => "/some/file", :group => ""
108
+ Puppet::Type.type(:file).new :path => "/some/file", :group => ""
108
109
  end
109
110
  end
110
111
 
@@ -118,7 +119,7 @@ class TestFile < Test::Unit::TestCase
118
119
 
119
120
  file = nil
120
121
  assert_nothing_raised {
121
- file = Puppet.type(:file).create(
122
+ file = Puppet::Type.type(:file).new(
122
123
  :path => path,
123
124
  :owner => user.name,
124
125
  :ensure => "file",
@@ -148,7 +149,7 @@ class TestFile < Test::Unit::TestCase
148
149
 
149
150
  obj = nil
150
151
  assert_nothing_raised {
151
- obj = Puppet.type(:file).create(
152
+ obj = Puppet::Type.type(:file).new(
152
153
  :title => link,
153
154
  :owner => user.name
154
155
  )
@@ -302,7 +303,7 @@ class TestFile < Test::Unit::TestCase
302
303
  %w{a b c d}.collect { |name| tempfile() + name.to_s }.each { |path|
303
304
  file =nil
304
305
  assert_nothing_raised() {
305
- file = Puppet.type(:file).create(
306
+ file = Puppet::Type.type(:file).new(
306
307
  :name => path,
307
308
  :ensure => "file"
308
309
  )
@@ -321,7 +322,7 @@ class TestFile < Test::Unit::TestCase
321
322
  %w{a b c d}.collect { |name| "#{basedir}/%s" % name }.each { |path|
322
323
  file = nil
323
324
  assert_nothing_raised() {
324
- file = Puppet.type(:file).create(
325
+ file = Puppet::Type.type(:file).new(
325
326
  :name => path,
326
327
  :ensure => "directory"
327
328
  )
@@ -355,108 +356,6 @@ class TestFile < Test::Unit::TestCase
355
356
  }
356
357
  end
357
358
 
358
- def test_checksums
359
- types = %w{md5 md5lite timestamp time}
360
- exists = "/tmp/sumtest-exists"
361
- nonexists = "/tmp/sumtest-nonexists"
362
-
363
- @@tmpfiles << exists
364
- @@tmpfiles << nonexists
365
-
366
- # try it both with files that exist and ones that don't
367
- files = [exists, nonexists]
368
- initstorage
369
- File.open(exists,File::CREAT|File::TRUNC|File::WRONLY) { |of|
370
- of.puts "initial text"
371
- }
372
- types.each { |type|
373
- files.each { |path|
374
- if Puppet[:debug]
375
- Puppet.warning "Testing %s on %s" % [type,path]
376
- end
377
- file = nil
378
- events = nil
379
- # okay, we now know that we have a file...
380
- assert_nothing_raised() {
381
- file = Puppet.type(:file).create(
382
- :name => path,
383
- :ensure => "file",
384
- :checksum => type
385
- )
386
- }
387
- trans = nil
388
-
389
- currentvalues = file.retrieve
390
-
391
- if file.title !~ /nonexists/
392
- sum = file.property(:checksum)
393
- assert(sum.insync?(currentvalues[sum]), "file is not in sync")
394
- end
395
-
396
- events = assert_apply(file)
397
-
398
- assert(events)
399
-
400
- assert(! events.include?(:file_changed), "File incorrectly changed")
401
- assert_events([], file)
402
-
403
- # We have to sleep because the time resolution of the time-based
404
- # mechanisms is greater than one second
405
- sleep 1 if type =~ /time/
406
-
407
- assert_nothing_raised() {
408
- File.open(path,File::CREAT|File::TRUNC|File::WRONLY) { |of|
409
- of.puts "some more text, yo"
410
- }
411
- }
412
- Puppet.type(:file).clear
413
-
414
- # now recreate the file
415
- assert_nothing_raised() {
416
- file = Puppet.type(:file).create(
417
- :name => path,
418
- :checksum => type
419
- )
420
- }
421
- trans = nil
422
-
423
- assert_events([:file_changed], file)
424
-
425
- # Run it a few times to make sure we aren't getting
426
- # spurious changes.
427
- sum = nil
428
- assert_nothing_raised do
429
- sum = file.property(:checksum).retrieve
430
- end
431
- assert(file.property(:checksum).insync?(sum),
432
- "checksum is not in sync")
433
-
434
- sleep 1.1 if type =~ /time/
435
- assert_nothing_raised() {
436
- File.unlink(path)
437
- File.open(path,File::CREAT|File::TRUNC|File::WRONLY) { |of|
438
- # We have to put a certain amount of text in here or
439
- # the md5-lite test fails
440
- 2.times {
441
- of.puts rand(100)
442
- }
443
- of.flush
444
- }
445
- }
446
- assert_events([:file_changed], file)
447
-
448
- # verify that we're actually getting notified when a file changes
449
- assert_nothing_raised() {
450
- Puppet.type(:file).clear
451
- }
452
-
453
- if path =~ /nonexists/
454
- File.unlink(path)
455
- end
456
- }
457
- }
458
- end
459
-
460
359
  def cyclefile(path)
461
360
  # i had problems with using :name instead of :path
462
361
  [:name,:path].each { |param|
@@ -467,13 +366,13 @@ class TestFile < Test::Unit::TestCase
467
366
 
468
367
  initstorage
469
368
  assert_nothing_raised {
470
- file = Puppet.type(:file).create(
369
+ file = Puppet::Type.type(:file).new(
471
370
  param => path,
472
371
  :recurse => true,
473
372
  :checksum => "md5"
474
373
  )
475
374
  }
476
- comp = Puppet.type(:component).create(
375
+ comp = Puppet::Type.type(:component).new(
477
376
  :name => "component"
478
377
  )
479
378
  comp.push file
@@ -487,177 +386,24 @@ class TestFile < Test::Unit::TestCase
487
386
  Puppet::Type.allclear
488
387
  }
489
388
  end
490
-
491
- def test_localrecurse
492
- # Create a test directory
493
- path = tempfile()
494
- dir = @file.create :path => path, :mode => 0755, :recurse => true
495
- config = mk_catalog(dir)
496
-
497
- Dir.mkdir(path)
498
-
499
- # Make sure we return nothing when there are no children
500
- ret = nil
501
- assert_nothing_raised() { ret = dir.localrecurse(true) }
502
- assert_equal([], ret, "empty dir returned children")
503
-
504
- # Now make a file and make sure we get it
505
- test = File.join(path, "file")
506
- File.open(test, "w") { |f| f.puts "yay" }
507
- assert_nothing_raised() { ret = dir.localrecurse(true) }
508
- fileobj = @file[test]
509
- assert(fileobj, "child object was not created")
510
- assert_equal([fileobj], ret, "child object was not returned")
511
-
512
- # And that it inherited our recurse setting
513
- assert_equal(true, fileobj[:recurse], "file did not inherit recurse")
514
-
515
- # Make sure it's not returned again
516
- assert_nothing_raised() { ret = dir.localrecurse(true) }
517
- assert_equal([], ret, "child object was returned twice")
518
-
519
- # Now just for completion, make sure we will return many files
520
- files = []
521
- 10.times do |i|
522
- f = File.join(path, i.to_s)
523
- files << f
524
- File.open(f, "w") do |o| o.puts "" end
525
- end
526
- assert_nothing_raised() { ret = dir.localrecurse(true) }
527
- assert_equal(files.sort, ret.collect { |f| f.title }.sort,
528
- "child object was returned twice")
529
-
530
- # Clean everything up and start over
531
- files << test
532
- files.each do |f| File.unlink(f) end
533
-
534
- # Now make sure we correctly ignore things
535
- dir[:ignore] = "*.out"
536
- bad = File.join(path, "test.out")
537
- good = File.join(path, "yayness")
538
- [good, bad].each do |f|
539
- File.open(f, "w") { |o| o.puts "" }
540
- end
541
-
542
- assert_nothing_raised() { ret = dir.localrecurse(true) }
543
- assert_equal([good], ret.collect { |f| f.title }, "ignore failed")
544
-
545
- # Now make sure purging works
546
- dir[:purge] = true
547
- dir[:ignore] = "svn"
548
-
549
- assert_nothing_raised() { ret = dir.localrecurse(true) }
550
- assert_equal([bad], ret.collect { |f| f.title }, "purge failed")
551
-
552
- badobj = @file[bad]
553
- assert(badobj, "did not create bad object")
554
- end
555
-
556
- def test_recurse
557
- basedir = tempfile()
558
- FileUtils.mkdir_p(basedir)
559
-
560
- # Create our file
561
- dir = nil
562
- assert_nothing_raised {
563
- dir = Puppet.type(:file).create(
564
- :path => basedir,
565
- :check => %w{owner mode group}
566
- )
567
- }
568
-
569
- return_nil = false
570
-
571
- # and monkey-patch it
572
- [:localrecurse, :linkrecurse].each do |m|
573
- dir.meta_def(m) do |recurse|
574
- if return_nil # for testing nil return, of course
575
- return nil
576
- else
577
- return [recurse]
578
- end
579
- end
580
- end
581
389
 
582
- # We have to special-case this, because it returns a list of
583
- # found files.
584
- dir.meta_def(:sourcerecurse) do |recurse|
585
- if return_nil # for testing nil return, of course
586
- return nil
587
- else
588
- return [recurse], []
589
- end
590
- end
591
-
592
- # First try it with recurse set to false
593
- dir[:recurse] = false
594
- assert_nothing_raised do
595
- assert_nil(dir.recurse)
596
- end
597
-
598
- # Now try it with the different valid positive values
599
- [true, "true", "inf", 50].each do |value|
600
- assert_nothing_raised { dir[:recurse] = value}
601
-
602
- # Now make sure the methods are called appropriately
603
- ret = nil
604
- assert_nothing_raised do
605
- ret = dir.recurse
606
- end
607
-
608
- # We should only call the localrecurse method, so make sure
609
- # that's the case
610
- if value == 50
611
- # Make sure our counter got decremented
612
- assert_equal([49], ret, "did not call localrecurse")
613
- else
614
- assert_equal([true], ret, "did not call localrecurse")
615
- end
616
- end
617
-
618
- # Make sure it doesn't recurse when we've set recurse to false
619
- [false, "false"].each do |value|
620
- assert_nothing_raised { dir[:recurse] = value }
621
-
622
- ret = nil
623
- assert_nothing_raised() { ret = dir.recurse }
624
- assert_nil(ret)
625
- end
626
- dir[:recurse] = true
627
-
628
- # Now add a target, so we do the linking thing
629
- dir[:target] = tempfile()
630
- ret = nil
631
- assert_nothing_raised { ret = dir.recurse }
632
- assert_equal([true, true], ret, "did not call linkrecurse")
633
-
634
- # And add a source, and make sure we call that
635
- dir[:source] = tempfile()
636
- assert_nothing_raised { ret = dir.recurse }
637
- assert_equal([true, true, true], ret, "did not call linkrecurse")
638
-
639
- # Lastly, make sure we correctly handle returning nil
640
- return_nil = true
641
- assert_nothing_raised { ret = dir.recurse }
642
- end
643
-
644
390
  def test_recurse?
645
- file = Puppet::Type.type(:file).create :path => tempfile
646
-
391
+ file = Puppet::Type.type(:file).new :path => tempfile
392
+
647
393
  # Make sure we default to false
648
394
  assert(! file.recurse?, "Recurse defaulted to true")
649
-
650
- [true, "true", 10, "inf"].each do |value|
395
+
396
+ [true, "true", 10, "inf", "remote"].each do |value|
651
397
  file[:recurse] = value
652
398
  assert(file.recurse?, "%s did not cause recursion" % value)
653
399
  end
654
-
400
+
655
401
  [false, "false", 0].each do |value|
656
402
  file[:recurse] = value
657
403
  assert(! file.recurse?, "%s caused recursion" % value)
658
404
  end
659
405
  end
660
-
406
+
661
407
  def test_recursion
662
408
  basedir = tempfile()
663
409
  subdir = File.join(basedir, "subdir")
@@ -667,40 +413,40 @@ class TestFile < Test::Unit::TestCase
667
413
  dir = nil
668
414
  [true, "true", "inf", 50].each do |value|
669
415
  assert_nothing_raised {
670
- dir = Puppet.type(:file).create(
416
+ dir = Puppet::Type.type(:file).new(
671
417
  :path => basedir,
672
418
  :recurse => value,
673
419
  :check => %w{owner mode group}
674
420
  )
675
421
  }
676
422
  config = mk_catalog dir
677
-
423
+ transaction = Puppet::Transaction.new(config)
424
+
678
425
  children = nil
679
426
 
680
427
  assert_nothing_raised {
681
- children = dir.eval_generate
428
+ children = transaction.eval_generate(dir)
682
429
  }
683
-
430
+
684
431
  assert_equal([subdir], children.collect {|c| c.title },
685
432
  "Incorrect generated children")
686
-
687
- # Remove our subdir resource,
433
+
434
+ # Remove our subdir resource,
688
435
  subdir_resource = config.resource(:file, subdir)
689
436
  config.remove_resource(subdir_resource)
690
437
 
691
438
  # Create the test file
692
439
  File.open(tmpfile, "w") { |f| f.puts "yayness" }
693
-
440
+
694
441
  assert_nothing_raised {
695
- children = dir.eval_generate
442
+ children = transaction.eval_generate(dir)
696
443
  }
697
444
 
698
445
  # And make sure we get both resources back.
699
446
  assert_equal([subdir, tmpfile].sort, children.collect {|c| c.title }.sort,
700
447
  "Incorrect generated children when recurse == %s" % value.inspect)
701
-
448
+
702
449
  File.unlink(tmpfile)
703
- Puppet.type(:file).clear
704
450
  end
705
451
  end
706
452
 
@@ -709,7 +455,7 @@ class TestFile < Test::Unit::TestCase
709
455
 
710
456
  # Verify it retrieves files of type directory
711
457
  assert_nothing_raised {
712
- file = Puppet.type(:file).create(
458
+ file = Puppet::Type.type(:file).new(
713
459
  :name => tmpdir(),
714
460
  :check => :type
715
461
  )
@@ -723,7 +469,7 @@ class TestFile < Test::Unit::TestCase
723
469
 
724
470
  # And then check files
725
471
  assert_nothing_raised {
726
- file = Puppet.type(:file).create(
472
+ file = Puppet::Type.type(:file).new(
727
473
  :name => tempfile(),
728
474
  :ensure => "file"
729
475
  )
@@ -745,43 +491,6 @@ class TestFile < Test::Unit::TestCase
745
491
  assert(file.insync?(currentvalues))
746
492
  end
747
493
 
748
- def test_remove
749
- basedir = tempfile()
750
- subdir = File.join(basedir, "this")
751
- FileUtils.mkdir_p(subdir)
752
-
753
- dir = nil
754
- assert_nothing_raised {
755
- dir = Puppet.type(:file).create(
756
- :path => basedir,
757
- :recurse => true,
758
- :check => %w{owner mode group}
759
- )
760
- }
761
- mk_catalog dir
762
-
763
- assert_nothing_raised {
764
- dir.eval_generate
765
- }
766
-
767
- obj = nil
768
- assert_nothing_raised {
769
- obj = Puppet.type(:file)[subdir]
770
- }
771
-
772
- assert(obj, "Could not retrieve subdir object")
773
-
774
- assert_nothing_raised {
775
- obj.remove(true)
776
- }
777
-
778
- assert_nothing_raised {
779
- obj = Puppet.type(:file)[subdir]
780
- }
781
-
782
- assert_nil(obj, "Retrieved removed object")
783
- end
784
-
785
494
  def test_path
786
495
  dir = tempfile()
787
496
 
@@ -795,21 +504,21 @@ class TestFile < Test::Unit::TestCase
795
504
  file = nil
796
505
  dirobj = nil
797
506
  assert_nothing_raised("Could not make file object") {
798
- dirobj = Puppet.type(:file).create(
507
+ dirobj = Puppet::Type.type(:file).new(
799
508
  :path => dir,
800
509
  :recurse => true,
801
510
  :check => %w{mode owner group}
802
511
  )
803
512
  }
804
- mk_catalog dirobj
513
+ catalog = mk_catalog dirobj
514
+ transaction = Puppet::Transaction.new(catalog)
515
+ transaction.eval_generate(dirobj)
805
516
 
806
- assert_nothing_raised {
807
- dirobj.eval_generate
808
- }
517
+ #assert_nothing_raised {
518
+ # dirobj.eval_generate
519
+ #}
809
520
 
810
- assert_nothing_raised {
811
- file = dirobj.class[path]
812
- }
521
+ file = catalog.resource(:file, path)
813
522
 
814
523
  assert(file, "Could not retrieve file object")
815
524
 
@@ -820,15 +529,16 @@ class TestFile < Test::Unit::TestCase
820
529
  basedir = tempfile()
821
530
  subfile = File.join(basedir, "subfile")
822
531
 
823
- baseobj = Puppet.type(:file).create(
532
+ baseobj = Puppet::Type.type(:file).new(
824
533
  :name => basedir,
825
534
  :ensure => "directory"
826
535
  )
827
536
 
828
- subobj = Puppet.type(:file).create(
537
+ subobj = Puppet::Type.type(:file).new(
829
538
  :name => subfile,
830
539
  :ensure => "file"
831
540
  )
541
+ catalog = mk_catalog(baseobj, subobj)
832
542
  edge = nil
833
543
  assert_nothing_raised do
834
544
  edge = subobj.autorequire.shift
@@ -837,53 +547,13 @@ class TestFile < Test::Unit::TestCase
837
547
  assert_equal(subobj, edge.target, "file did not require its parent dir")
838
548
  end
839
549
 
840
- def test_content
841
- file = tempfile()
842
- str = "This is some content"
843
-
844
- obj = nil
845
- assert_nothing_raised {
846
- obj = Puppet.type(:file).create(
847
- :name => file,
848
- :content => str
849
- )
850
- }
851
-
852
- assert(!obj.insync?(obj.retrieve), "Object is incorrectly in sync")
853
-
854
- assert_events([:file_created], obj)
855
-
856
- currentvalues = obj.retrieve
857
-
858
- assert(obj.insync?(currentvalues), "Object is not in sync")
859
-
860
- text = File.read(file)
861
-
862
- assert_equal(str, text, "Content did not copy correctly")
863
-
864
- newstr = "Another string, yo"
865
-
866
- obj[:content] = newstr
867
-
868
- assert(!obj.insync?(obj.retrieve), "Object is incorrectly in sync")
869
-
870
- assert_events([:file_changed], obj)
871
-
872
- text = File.read(file)
873
-
874
- assert_equal(newstr, text, "Content did not copy correctly")
875
-
876
- currentvalues = obj.retrieve
877
- assert(obj.insync?(currentvalues), "Object is not in sync")
878
- end
879
-
880
550
  # Unfortunately, I know this fails
881
551
  def disabled_test_recursivemkdir
882
552
  path = tempfile()
883
553
  subpath = File.join(path, "this", "is", "a", "dir")
884
554
  file = nil
885
555
  assert_nothing_raised {
886
- file = Puppet.type(:file).create(
556
+ file = Puppet::Type.type(:file).new(
887
557
  :name => subpath,
888
558
  :ensure => "directory",
889
559
  :recurse => true
@@ -905,10 +575,11 @@ class TestFile < Test::Unit::TestCase
905
575
 
906
576
  file = nil
907
577
  assert_nothing_raised {
908
- file = Puppet.type(:file).create(
578
+ file = Puppet::Type.type(:file).new(
909
579
  :name => dest,
910
580
  :checksum => "md5",
911
- :content => "This is some content"
581
+ :content => "This is some content",
582
+ :backup => false
912
583
  )
913
584
  }
914
585
 
@@ -925,7 +596,7 @@ class TestFile < Test::Unit::TestCase
925
596
 
926
597
  file = nil
927
598
  assert_nothing_raised {
928
- file = Puppet.type(:file).create(
599
+ file = Puppet::Type.type(:file).new(
929
600
  :name => dest,
930
601
  :checksum => "md5",
931
602
  :ensure => "file"
@@ -939,59 +610,12 @@ class TestFile < Test::Unit::TestCase
939
610
  assert_events([], file)
940
611
  end
941
612
 
942
- # Make sure that content gets used before ensure
943
- def test_contentbeatsensure
944
- dest = tempfile()
945
-
946
- file = nil
947
- assert_nothing_raised {
948
- file = Puppet.type(:file).create(
949
- :name => dest,
950
- :ensure => "file",
951
- :content => "this is some content, yo"
952
- )
953
- }
954
-
955
- currentvalues = file.retrieve
956
-
957
- assert_events([:file_created], file)
958
- file.retrieve
959
- assert_events([], file)
960
- assert_events([], file)
961
- end
962
-
963
- # Make sure that content gets used before ensure
964
- def test_deletion_beats_source
965
- dest = tempfile()
966
- source = tempfile()
967
- File.open(source, "w") { |f| f.puts "yay" }
968
-
969
- file = nil
970
- assert_nothing_raised {
971
- file = Puppet.type(:file).create(
972
- :name => dest,
973
- :ensure => :absent,
974
- :source => source
975
- )
976
- }
977
-
978
- file.retrieve
979
-
980
- assert_events([], file)
981
- assert(! FileTest.exists?(dest), "file was copied during deletion")
982
-
983
- # Now create the dest, and make sure it gets deleted
984
- File.open(dest, "w") { |f| f.puts "boo" }
985
- assert_events([:file_removed], file)
986
- assert(! FileTest.exists?(dest), "file was not deleted during deletion")
987
- end
988
-
989
613
  def test_nameandpath
990
614
  path = tempfile()
991
615
 
992
616
  file = nil
993
617
  assert_nothing_raised {
994
- file = Puppet.type(:file).create(
618
+ file = Puppet::Type.type(:file).new(
995
619
  :title => "fileness",
996
620
  :path => path,
997
621
  :content => "this is some content"
@@ -1007,7 +631,7 @@ class TestFile < Test::Unit::TestCase
1007
631
  def test_missinggroup
1008
632
  file = nil
1009
633
  assert_nothing_raised {
1010
- file = Puppet.type(:file).create(
634
+ file = Puppet::Type.type(:file).new(
1011
635
  :path => tempfile(),
1012
636
  :group => "fakegroup"
1013
637
  )
@@ -1018,7 +642,7 @@ class TestFile < Test::Unit::TestCase
1018
642
 
1019
643
  def test_modecreation
1020
644
  path = tempfile()
1021
- file = Puppet.type(:file).create(
645
+ file = Puppet::Type.type(:file).new(
1022
646
  :path => path,
1023
647
  :ensure => "file",
1024
648
  :mode => "0777"
@@ -1042,7 +666,7 @@ class TestFile < Test::Unit::TestCase
1042
666
 
1043
667
  file = nil
1044
668
  assert_nothing_raised {
1045
- file = Puppet.type(:file).create(
669
+ file = Puppet::Type.type(:file).new(
1046
670
  :path => path,
1047
671
  :ensure => "file",
1048
672
  :content => "some text\n",
@@ -1056,20 +680,17 @@ class TestFile < Test::Unit::TestCase
1056
680
 
1057
681
  def test_backupmodes
1058
682
  File.umask(0022)
1059
-
683
+
1060
684
  file = tempfile()
1061
685
  newfile = tempfile()
1062
686
 
1063
687
  File.open(file, "w", 0411) { |f| f.puts "yayness" }
1064
688
 
1065
- obj = nil
1066
- assert_nothing_raised {
1067
- obj = Puppet::Type.type(:file).create(
1068
- :path => file, :content => "rahness\n", :backup => ".puppet-bak"
1069
- )
1070
- }
1071
-
1072
- assert_apply(obj)
689
+ obj = Puppet::Type.type(:file).new(
690
+ :path => file, :content => "rahness\n", :backup => ".puppet-bak"
691
+ )
692
+ catalog = mk_catalog(obj)
693
+ catalog.apply
1073
694
 
1074
695
  backupfile = file + obj[:backup]
1075
696
  @@tmpfiles << backupfile
@@ -1079,16 +700,16 @@ class TestFile < Test::Unit::TestCase
1079
700
  assert_equal(0411, filemode(backupfile),
1080
701
  "File mode is wrong for backupfile")
1081
702
 
1082
- bucket = "bucket"
703
+ name = "bucket"
1083
704
  bpath = tempfile()
1084
705
  Dir.mkdir(bpath)
1085
- Puppet::Type.type(:filebucket).create(
1086
- :title => bucket, :path => bpath
1087
- )
706
+ bucket = Puppet::Type.type(:filebucket).new(:title => name, :path => bpath)
707
+ catalog.add_resource(bucket)
1088
708
 
1089
- obj[:backup] = bucket
709
+ obj[:backup] = name
1090
710
  obj[:content] = "New content"
1091
- assert_apply(obj)
711
+ catalog.finalize
712
+ catalog.apply
1092
713
 
1093
714
  md5 = "18cc17fa3047fcc691fdf49c0a7f539a"
1094
715
  dir, file, pathfile = Puppet::Network::Handler.filebucket.paths(bpath, md5)
@@ -1096,32 +717,6 @@ class TestFile < Test::Unit::TestCase
1096
717
  assert_equal(0440, filemode(file))
1097
718
  end
1098
719
 
1099
- def test_largefilechanges
1100
- source = tempfile()
1101
- dest = tempfile()
1102
-
1103
- # Now make a large file
1104
- File.open(source, "w") { |f|
1105
- 500.times { |i| f.puts "line %s" % i }
1106
- }
1107
-
1108
- obj = Puppet::Type.type(:file).create(
1109
- :title => dest, :source => source
1110
- )
1111
-
1112
- assert_events([:file_created], obj)
1113
-
1114
- File.open(source, File::APPEND|File::WRONLY) { |f| f.puts "another line" }
1115
-
1116
- assert_events([:file_changed], obj)
1117
-
1118
- # Now modify the dest file
1119
- File.open(dest, File::APPEND|File::WRONLY) { |f| f.puts "one more line" }
1120
-
1121
- assert_events([:file_changed, :file_changed], obj)
1122
-
1123
- end
1124
-
1125
720
  def test_replacefilewithlink
1126
721
  path = tempfile()
1127
722
  link = tempfile()
@@ -1131,9 +726,10 @@ class TestFile < Test::Unit::TestCase
1131
726
 
1132
727
  file = nil
1133
728
  assert_nothing_raised {
1134
- file = Puppet.type(:file).create(
729
+ file = Puppet::Type.type(:file).new(
1135
730
  :ensure => path,
1136
- :path => link
731
+ :path => link,
732
+ :backup => false
1137
733
  )
1138
734
  }
1139
735
 
@@ -1151,7 +747,7 @@ class TestFile < Test::Unit::TestCase
1151
747
  dest = File.join(dir, "another space")
1152
748
 
1153
749
  File.open(source, "w") { |f| f.puts :yay }
1154
- obj = Puppet::Type.type(:file).create(
750
+ obj = Puppet::Type.type(:file).new(
1155
751
  :path => dest,
1156
752
  :source => source
1157
753
  )
@@ -1162,89 +758,6 @@ class TestFile < Test::Unit::TestCase
1162
758
  assert(FileTest.exists?(dest), "File did not get created")
1163
759
  end
1164
760
 
1165
- def test_present_matches_anything
1166
- path = tempfile()
1167
-
1168
- file = Puppet::Type.newfile(:path => path, :ensure => :present)
1169
-
1170
- currentvalues = file.retrieve
1171
- assert(! file.insync?(currentvalues), "File incorrectly in sync")
1172
-
1173
- # Now make a file
1174
- File.open(path, "w") { |f| f.puts "yay" }
1175
-
1176
- currentvalues = file.retrieve
1177
- assert(file.insync?(currentvalues), "File not in sync")
1178
-
1179
- # Now make a directory
1180
- File.unlink(path)
1181
- Dir.mkdir(path)
1182
-
1183
- currentvalues = file.retrieve
1184
- assert(file.insync?(currentvalues), "Directory not considered 'present'")
1185
-
1186
- Dir.rmdir(path)
1187
-
1188
- # Now make a link
1189
- file[:links] = :manage
1190
-
1191
- otherfile = tempfile()
1192
- File.symlink(otherfile, path)
1193
-
1194
- currentvalues = file.retrieve
1195
- assert(file.insync?(currentvalues), "Symlink not considered 'present'")
1196
- File.unlink(path)
1197
-
1198
- # Now set some content, and make sure it works
1199
- file[:content] = "yayness"
1200
-
1201
- assert_apply(file)
1202
-
1203
- assert_equal("yayness", File.read(path), "Content did not get set correctly")
1204
- end
1205
-
1206
- # Make sure unmanaged files are purged.
1207
- def test_purge
1208
- sourcedir = tempfile()
1209
- destdir = tempfile()
1210
- Dir.mkdir(sourcedir)
1211
- Dir.mkdir(destdir)
1212
- sourcefile = File.join(sourcedir, "sourcefile")
1213
- dsourcefile = File.join(destdir, "sourcefile")
1214
- localfile = File.join(destdir, "localfile")
1215
- purgee = File.join(destdir, "to_be_purged")
1216
- File.open(sourcefile, "w") { |f| f.puts "funtest" }
1217
- # this file should get removed
1218
- File.open(purgee, "w") { |f| f.puts "footest" }
1219
-
1220
- lfobj = Puppet::Type.newfile(
1221
- :title => "localfile",
1222
- :path => localfile,
1223
- :content => "rahtest",
1224
- :ensure => :file,
1225
- :backup => false
1226
- )
1227
-
1228
- destobj = Puppet::Type.newfile(:title => "destdir", :path => destdir,
1229
- :source => sourcedir,
1230
- :backup => false,
1231
- :recurse => true)
1232
-
1233
- config = mk_catalog(lfobj, destobj)
1234
- config.apply
1235
-
1236
- assert(FileTest.exists?(dsourcefile), "File did not get copied")
1237
- assert(FileTest.exists?(localfile), "Local file did not get created")
1238
- assert(FileTest.exists?(purgee), "Purge target got prematurely purged")
1239
-
1240
- assert_nothing_raised { destobj[:purge] = true }
1241
- config.apply
1242
-
1243
- assert(FileTest.exists?(localfile), "Local file got purged")
1244
- assert(FileTest.exists?(dsourcefile), "Source file got purged")
1245
- assert(! FileTest.exists?(purgee), "File did not get purged")
1246
- end
1247
-
1248
761
  # Testing #274. Make sure target can be used without 'ensure'.
1249
762
  def test_target_without_ensure
1250
763
  source = tempfile()
@@ -1267,23 +780,23 @@ class TestFile < Test::Unit::TestCase
1267
780
  home = nil
1268
781
  ogroup = nil
1269
782
  assert_nothing_raised {
1270
- user = Puppet.type(:user).create(
783
+ user = Puppet::Type.type(:user).new(
1271
784
  :name => "pptestu",
1272
785
  :home => file,
1273
786
  :gid => "pptestg"
1274
787
  )
1275
- home = Puppet.type(:file).create(
788
+ home = Puppet::Type.type(:file).new(
1276
789
  :path => file,
1277
790
  :owner => "pptestu",
1278
791
  :group => "pptestg",
1279
792
  :ensure => "directory"
1280
793
  )
1281
- group = Puppet.type(:group).create(
794
+ group = Puppet::Type.type(:group).new(
1282
795
  :name => "pptestg"
1283
796
  )
1284
797
  comp = mk_catalog(user, group, home)
1285
798
  }
1286
-
799
+
1287
800
  # Now make sure we get a relationship for each of these
1288
801
  rels = nil
1289
802
  assert_nothing_raised { rels = home.autorequire }
@@ -1301,142 +814,25 @@ class TestFile < Test::Unit::TestCase
1301
814
  end
1302
815
 
1303
816
  assert_equal("/my/file/for/testing", file.title)
1304
- assert_equal(file, Puppet::Type.type(:file)["/my/file/for/testing"])
1305
- Puppet::Type.type(:file).clear
1306
817
  end
1307
818
  end
1308
819
 
1309
- # Testing #304
1310
- def test_links_to_directories
1311
- link = tempfile()
1312
- file = tempfile()
1313
- dir = tempfile()
1314
- Dir.mkdir(dir)
1315
-
1316
- bucket = Puppet::Type.newfilebucket :name => "main"
1317
- File.symlink(dir, link)
1318
- File.open(file, "w") { |f| f.puts "" }
1319
- assert_equal(dir, File.readlink(link))
1320
- obj = Puppet::Type.newfile :path => link, :ensure => :link, :target => file, :recurse => false, :backup => "main"
1321
-
1322
- assert_apply(obj)
1323
-
1324
- assert_equal(file, File.readlink(link))
1325
- end
1326
-
1327
- # Testing #303
1328
- def test_nobackups_with_links
1329
- link = tempfile()
1330
- new = tempfile()
1331
-
1332
- File.open(link, "w") { |f| f.puts "old" }
1333
- File.open(new, "w") { |f| f.puts "new" }
1334
- obj = Puppet::Type.newfile :path => link, :ensure => :link,
1335
- :target => new, :recurse => true, :backup => false
1336
-
1337
- assert_nothing_raised do
1338
- obj.handlebackup
1339
- end
1340
-
1341
- bfile = [link, "puppet-bak"].join(".")
1342
-
1343
- assert(! FileTest.exists?(bfile), "Backed up when told not to")
1344
-
1345
- assert_apply(obj)
1346
-
1347
- assert(! FileTest.exists?(bfile), "Backed up when told not to")
1348
- end
1349
-
1350
- # Make sure we consistently handle backups for all cases.
1351
- def test_ensure_with_backups
1352
- # We've got three file types, so make sure we can replace any type
1353
- # with the other type and that backups are done correctly.
1354
- types = [:file, :directory, :link]
1355
-
1356
- dir = tempfile()
1357
- path = File.join(dir, "test")
1358
- linkdest = tempfile()
1359
- creators = {
1360
- :file => proc { File.open(path, "w") { |f| f.puts "initial" } },
1361
- :directory => proc { Dir.mkdir(path) },
1362
- :link => proc { File.symlink(linkdest, path) }
1363
- }
1364
-
1365
- bucket = Puppet::Type.newfilebucket :name => "main", :path => tempfile()
1366
-
1367
- obj = Puppet::Type.newfile :path => path, :force => true,
1368
- :links => :manage
1369
-
1370
- Puppet[:trace] = true
1371
- ["main", false].each do |backup|
1372
- obj[:backup] = backup
1373
- obj.finish
1374
- types.each do |should|
1375
- types.each do |is|
1376
- # It makes no sense to replace a directory with a directory
1377
- # next if should == :directory and is == :directory
1378
-
1379
- Dir.mkdir(dir)
1380
-
1381
- # Make the thing
1382
- creators[is].call
1383
-
1384
- obj[:ensure] = should
1385
-
1386
- if should == :link
1387
- obj[:target] = linkdest
1388
- else
1389
- if obj.property(:target)
1390
- obj.delete(:target)
1391
- end
1392
- end
1393
-
1394
- # First try just removing the initial data
1395
- assert_nothing_raised do
1396
- obj.remove_existing(should)
1397
- end
1398
-
1399
- unless is == should
1400
- # Make sure the original is gone
1401
- assert(! FileTest.exists?(obj[:path]),
1402
- "remove_existing did not work: " +
1403
- "did not remove %s with %s" % [is, should])
1404
- end
1405
- FileUtils.rmtree(obj[:path])
1406
-
1407
- # Now make it again
1408
- creators[is].call
1409
-
1410
- property = obj.property(:ensure)
1411
-
1412
- currentvalue = property.retrieve
1413
- unless property.insync?(currentvalue)
1414
- assert_nothing_raised do
1415
- property.sync
1416
- end
1417
- end
1418
- FileUtils.rmtree(dir)
1419
- end
1420
- end
1421
- end
1422
- end
1423
-
1424
820
  if Process.uid == 0
1425
821
  # Testing #364.
1426
822
  def test_writing_in_directories_with_no_write_access
1427
823
  # Make a directory that our user does not have access to
1428
824
  dir = tempfile()
1429
825
  Dir.mkdir(dir)
1430
-
826
+
1431
827
  # Get a fake user
1432
828
  user = nonrootuser
1433
829
  # and group
1434
830
  group = nonrootgroup
1435
-
831
+
1436
832
  # First try putting a file in there
1437
833
  path = File.join(dir, "file")
1438
834
  file = Puppet::Type.newfile :path => path, :owner => user.name, :group => group.name, :content => "testing"
1439
-
835
+
1440
836
  # Make sure we can create it
1441
837
  assert_apply(file)
1442
838
  assert(FileTest.exists?(path), "File did not get created")
@@ -1445,7 +841,7 @@ class TestFile < Test::Unit::TestCase
1445
841
  assert_equal(group.gid, File.stat(path).gid, "File has the wrong group")
1446
842
 
1447
843
  assert_equal("testing", File.read(path), "file has the wrong content")
1448
-
844
+
1449
845
  # Now make a dir
1450
846
  subpath = File.join(dir, "subdir")
1451
847
  subdir = Puppet::Type.newfile :path => subpath, :owner => user.name, :group => group.name, :ensure => :directory
@@ -1459,7 +855,7 @@ class TestFile < Test::Unit::TestCase
1459
855
  assert_equal("testing", File.read(path), "file has the wrong content")
1460
856
  end
1461
857
  end
1462
-
858
+
1463
859
  # #366
1464
860
  def test_replace_aliases
1465
861
  file = Puppet::Type.newfile :path => tempfile()
@@ -1468,142 +864,34 @@ class TestFile < Test::Unit::TestCase
1468
864
  file[:replace] = :no
1469
865
  assert_equal(:false, file[:replace], ":replace did not alias :false to :no")
1470
866
  end
1471
-
1472
- # #365 -- make sure generated files also use filebuckets.
1473
- def test_recursive_filebuckets
1474
- source = tempfile()
1475
- dest = tempfile()
1476
- s1 = File.join(source, "1")
1477
- sdir = File.join(source, "dir")
1478
- s2 = File.join(sdir, "2")
1479
- Dir.mkdir(source)
1480
- Dir.mkdir(sdir)
1481
- [s1, s2].each { |file| File.open(file, "w") { |f| f.puts "yay: %s" % File.basename(file) } }
1482
-
1483
- sums = {}
1484
- [s1, s2].each do |f|
1485
- sums[File.basename(f)] = Digest::MD5.hexdigest(File.read(f))
1486
- end
1487
-
1488
- dfiles = [File.join(dest, "1"), File.join(dest, "dir", "2")]
1489
-
1490
- bpath = tempfile
1491
- bucket = Puppet::Type.type(:filebucket).create :name => "rtest", :path => bpath
1492
- dipper = bucket.bucket
1493
- dipper = Puppet::Network::Handler.filebucket.new(
1494
- :Path => bpath
1495
- )
1496
- assert(dipper, "did not receive bucket client")
1497
- file = Puppet::Type.newfile :path => dest, :source => source, :recurse => true, :backup => "rtest"
1498
-
1499
- assert_apply(file)
1500
- dfiles.each do |f|
1501
- assert(FileTest.exists?(f), "destfile %s was not created" % f)
1502
- end
1503
-
1504
- # Now modify the source files to make sure things get backed up correctly
1505
- [s1, s2].each { |sf| File.open(sf, "w") { |f|
1506
- f.puts "boo: %s" % File.basename(sf)
1507
- } }
1508
-
1509
- assert_apply(file)
1510
- dfiles.each do |f|
1511
- assert_equal("boo: %s\n" % File.basename(f), File.read(f),
1512
- "file was not copied correctly")
1513
- end
1514
-
1515
- # Make sure we didn't just copy the files over to backup locations
1516
- dfiles.each do |f|
1517
- assert(! FileTest.exists?(f + "rtest"),
1518
- "file %s was copied for backup instead of bucketed" % File.basename(f))
1519
- end
1520
-
1521
- # Now make sure we can get the source sums from the bucket
1522
- sums.each do |f, sum|
1523
- result = nil
1524
- assert_nothing_raised do
1525
- result = dipper.getfile(sum)
1526
- end
1527
- assert(result, "file %s was not backed to filebucket" % f)
1528
- assert_equal("yay: %s\n" % f, result, "file backup was not correct")
1529
- end
1530
- end
1531
-
1532
- def test_backup
1533
- path = tempfile()
1534
- file = Puppet::Type.newfile :path => path, :content => "yay"
1535
-
1536
- [false, :false, "false"].each do |val|
1537
- assert_nothing_raised do
1538
- file[:backup] = val
1539
- end
1540
- assert_equal(false, file[:backup], "%s did not translate" % val.inspect)
1541
- end
1542
- [true, :true, "true", ".puppet-bak"].each do |val|
1543
- assert_nothing_raised do
1544
- file[:backup] = val
1545
- end
1546
- assert_equal(".puppet-bak", file[:backup], "%s did not translate" % val.inspect)
1547
- end
1548
-
1549
- # Now try a non-bucket string
1550
- assert_nothing_raised do
1551
- file[:backup] = ".bak"
1552
- end
1553
- assert_equal(".bak", file[:backup], ".bak did not translate")
1554
-
1555
- # Now try a non-existent bucket
1556
- assert_nothing_raised do
1557
- file[:backup] = "main"
1558
- end
1559
- assert_equal("main", file[:backup], "bucket name was not retained")
1560
- assert_equal("main", file.bucket, "file's bucket was not set")
1561
-
1562
- # And then an existing bucket
1563
- obj = Puppet::Type.type(:filebucket).create :name => "testing"
1564
- bucket = obj.bucket
1565
-
1566
- assert_nothing_raised do
1567
- file[:backup] = "testing"
1568
- end
1569
- assert_equal("testing", file[:backup], "backup value was reset")
1570
- assert_equal(obj.bucket, file.bucket, "file's bucket was not set")
1571
- end
1572
-
867
+
1573
868
  def test_pathbuilder
1574
869
  dir = tempfile()
1575
870
  Dir.mkdir(dir)
1576
871
  file = File.join(dir, "file")
1577
872
  File.open(file, "w") { |f| f.puts "" }
1578
873
  obj = Puppet::Type.newfile :path => dir, :recurse => true, :mode => 0755
1579
- mk_catalog obj
1580
-
874
+ catalog = mk_catalog obj
875
+ transaction = Puppet::Transaction.new(catalog)
876
+
1581
877
  assert_equal("/%s" % obj.ref, obj.path)
1582
-
1583
- list = obj.eval_generate
1584
- fileobj = obj.class[file]
878
+
879
+ list = transaction.eval_generate(obj)
880
+ fileobj = catalog.resource(:file, file)
1585
881
  assert(fileobj, "did not generate file object")
1586
882
  assert_equal("/%s" % fileobj.ref, fileobj.path, "did not generate correct subfile path")
1587
883
  end
1588
-
884
+
1589
885
  # Testing #403
1590
886
  def test_removal_with_content_set
1591
887
  path = tempfile()
1592
888
  File.open(path, "w") { |f| f.puts "yay" }
1593
- file = Puppet::Type.newfile(:name => path, :ensure => :absent, :content => "foo")
1594
-
889
+ file = Puppet::Type.newfile(:name => path, :ensure => :absent, :content => "foo", :backup => false)
890
+
1595
891
  assert_apply(file)
1596
892
  assert(! FileTest.exists?(path), "File was not removed")
1597
893
  end
1598
-
1599
- # Testing #434
1600
- def test_stripping_extra_slashes_during_lookup
1601
- file = Puppet::Type.newfile(:path => "/one/two")
1602
- %w{/one/two/ /one/two /one//two //one//two//}.each do |path|
1603
- assert(Puppet::Type.type(:file)[path], "could not look up file via path %s" % path)
1604
- end
1605
- end
1606
-
894
+
1607
895
  # Testing #438
1608
896
  def test_creating_properties_conflict
1609
897
  file = tempfile()
@@ -1614,7 +902,6 @@ class TestFile < Test::Unit::TestCase
1614
902
  assert_nothing_raised("%s conflicted with ensure" % [param]) do
1615
903
  Puppet::Type.newfile(:path => file, param => first, :ensure => :file)
1616
904
  end
1617
- Puppet::Type.type(:file).clear
1618
905
  params.each do |other|
1619
906
  next if other == param
1620
907
  assert_raise(Puppet::Error, "%s and %s did not conflict" % [param, other]) do
@@ -1660,13 +947,13 @@ class TestFile < Test::Unit::TestCase
1660
947
 
1661
948
  # Now change something so that we replace the file
1662
949
  case attr
1663
- when :source:
950
+ when :source
1664
951
  File.open(source, "w") { |f| f.puts "some different text" }
1665
- when :content: file[:content] = "something completely different"
952
+ when :content; file[:content] = "something completely different"
1666
953
  else
1667
954
  raise "invalid attr %s" % attr
1668
955
  end
1669
-
956
+
1670
957
  # Run it again
1671
958
  run.call(file, "after modification with %s" % attr)
1672
959
 
@@ -1677,67 +964,6 @@ class TestFile < Test::Unit::TestCase
1677
964
  end
1678
965
  end
1679
966
 
1680
- # #505
1681
- def test_numeric_recurse
1682
- dir = tempfile()
1683
- subdir = File.join(dir, "subdir")
1684
- other = File.join(subdir, "deeper")
1685
- file = File.join(other, "file")
1686
- [dir, subdir, other].each { |d| Dir.mkdir(d) }
1687
- File.open(file, "w") { |f| f.puts "yay" }
1688
- File.chmod(0644, file)
1689
- obj = Puppet::Type.newfile(:path => dir, :mode => 0750, :recurse => "2")
1690
- config = mk_catalog(obj)
1691
-
1692
- children = nil
1693
- assert_nothing_raised("Failure when recursing") do
1694
- children = obj.eval_generate
1695
- end
1696
- assert(obj.class[subdir], "did not create subdir object")
1697
- children.each do |c|
1698
- assert_nothing_raised("Failure when recursing on %s" % c) do
1699
- c.catalog = config
1700
- others = c.eval_generate
1701
- end
1702
- end
1703
- oobj = obj.class[other]
1704
- assert(oobj, "did not create other object")
1705
-
1706
- assert_nothing_raised do
1707
- assert_nil(oobj.eval_generate, "recursed too far")
1708
- end
1709
- end
1710
-
1711
- # Make sure we default to the "puppet" filebucket, rather than a string
1712
- def test_backup_defaults_to_bucket
1713
- path = tempfile
1714
- file = Puppet::Type.newfile(:path => path, :content => 'some content')
1715
- file.finish
1716
-
1717
- assert_instance_of(Puppet::Network::Client::Dipper, file.bucket,
1718
- "did not default to a filebucket for backups")
1719
- end
1720
-
1721
- # #515 - make sure 'ensure' other than "link" is deleted during recursion
1722
- def test_ensure_deleted_during_recursion
1723
- dir = tempfile()
1724
- Dir.mkdir(dir)
1725
- file = File.join(dir, "file")
1726
- File.open(file, "w") { |f| f.puts "asdfasdf" }
1727
-
1728
- obj = Puppet::Type.newfile(:path => dir, :ensure => :directory,
1729
- :recurse => true)
1730
-
1731
- config = mk_catalog(obj)
1732
- children = nil
1733
- assert_nothing_raised do
1734
- children = obj.eval_generate
1735
- end
1736
- fobj = obj.class[file]
1737
- assert(fobj, "did not create file object")
1738
- assert(fobj.should(:ensure) != :directory, "ensure was passed to child")
1739
- end
1740
-
1741
967
  # #567
1742
968
  def test_missing_files_are_in_sync
1743
969
  file = tempfile
@@ -1762,7 +988,7 @@ class TestFile < Test::Unit::TestCase
1762
988
 
1763
989
  wh = mock 'writehandle', :print => nil
1764
990
  rh = mock 'readhandle'
1765
- rh.expects(:read).with(512).times(2).returns("other").then.returns(nil)
991
+ rh.expects(:read).with(4096).times(2).returns("other").then.returns(nil)
1766
992
  File.expects(:open).with { |*args| args[0] == tmpfile and args[1] != "r" }.yields(wh)
1767
993
  File.expects(:open).with { |*args| args[0] == tmpfile and args[1] == "r" }.yields(rh)
1768
994