puppet 0.25.5 → 2.6.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 (1474) hide show
  1. data/CHANGELOG +667 -0
  2. data/LICENSE +2 -2
  3. data/README +5 -1
  4. data/README.queueing +1 -1
  5. data/README.rst +7 -4
  6. data/Rakefile +6 -18
  7. data/bin/filebucket +0 -94
  8. data/bin/pi +2 -47
  9. data/bin/puppet +2 -69
  10. data/bin/puppetca +2 -100
  11. data/bin/puppetd +2 -158
  12. data/bin/puppetdoc +2 -63
  13. data/bin/puppetmasterd +2 -64
  14. data/bin/puppetqd +2 -51
  15. data/bin/puppetrun +2 -127
  16. data/bin/ralsh +2 -87
  17. data/conf/epm.list +2 -2
  18. data/conf/osx/PackageInfo.plist +1 -1
  19. data/conf/redhat/client.init +11 -8
  20. data/conf/redhat/puppet.conf +1 -1
  21. data/conf/redhat/puppet.spec +1 -1
  22. data/conf/redhat/rundir-perms.patch +13 -13
  23. data/conf/redhat/server.init +11 -5
  24. data/conf/solaris/pkginfo +2 -2
  25. data/conf/solaris/smf/puppetd.xml +3 -3
  26. data/conf/solaris/smf/puppetmasterd.xml +3 -3
  27. data/conf/suse/client.init +3 -2
  28. data/conf/suse/puppet.spec +22 -18
  29. data/conf/suse/server.init +12 -11
  30. data/examples/modules/sample-module/README.txt +3 -3
  31. data/examples/modules/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb +4 -4
  32. data/ext/extlookup.rb +94 -96
  33. data/ext/nagios/check_puppet.rb +94 -88
  34. data/ext/nagios/naggen +3 -3
  35. data/ext/puppet-test +27 -3
  36. data/ext/puppetlisten/puppetlisten.rb +39 -39
  37. data/ext/puppetlisten/puppetrun.rb +6 -6
  38. data/ext/puppetstoredconfigclean.rb +49 -43
  39. data/ext/pure_ruby_dsl/dsl_test.rb +7 -0
  40. data/ext/regexp_nodes/regexp_nodes.rb +133 -133
  41. data/ext/yaml_nodes.rb +99 -0
  42. data/install.rb +109 -118
  43. data/lib/puppet.rb +118 -131
  44. data/lib/puppet/agent.rb +86 -119
  45. data/lib/puppet/agent/locker.rb +28 -30
  46. data/lib/puppet/application.rb +276 -184
  47. data/lib/puppet/application/agent.rb +266 -0
  48. data/lib/puppet/application/apply.rb +165 -0
  49. data/lib/puppet/application/cert.rb +85 -0
  50. data/lib/puppet/application/describe.rb +203 -0
  51. data/lib/puppet/application/doc.rb +215 -0
  52. data/lib/puppet/application/filebucket.rb +73 -73
  53. data/lib/puppet/application/kick.rb +212 -0
  54. data/lib/puppet/application/master.rb +156 -0
  55. data/lib/puppet/application/queue.rb +91 -0
  56. data/lib/puppet/application/resource.rb +118 -0
  57. data/lib/puppet/configurer.rb +214 -197
  58. data/lib/puppet/configurer/downloader.rb +63 -63
  59. data/lib/puppet/configurer/fact_handler.rb +51 -51
  60. data/lib/puppet/configurer/plugin_handler.rb +19 -19
  61. data/lib/puppet/daemon.rb +100 -103
  62. data/lib/puppet/defaults.rb +793 -796
  63. data/lib/puppet/dsl.rb +5 -269
  64. data/lib/puppet/dsl/resource_api.rb +120 -0
  65. data/lib/puppet/dsl/resource_type_api.rb +40 -0
  66. data/lib/puppet/error.rb +34 -36
  67. data/lib/puppet/external/base64.rb +8 -8
  68. data/lib/puppet/external/dot.rb +262 -262
  69. data/lib/puppet/external/event-loop/better-definers.rb +297 -297
  70. data/lib/puppet/external/event-loop/event-loop.rb +264 -272
  71. data/lib/puppet/external/event-loop/signal-system.rb +161 -163
  72. data/lib/puppet/external/lock.rb +41 -41
  73. data/lib/puppet/external/nagios.rb +32 -32
  74. data/lib/puppet/external/nagios/base.rb +453 -458
  75. data/lib/puppet/external/nagios/parser.rb +264 -287
  76. data/lib/puppet/external/pson/common.rb +8 -5
  77. data/lib/puppet/external/pson/pure/generator.rb +26 -26
  78. data/lib/puppet/external/pson/pure/parser.rb +43 -48
  79. data/lib/puppet/feature/base.rb +21 -1
  80. data/lib/puppet/feature/pson.rb +4 -4
  81. data/lib/puppet/feature/rack.rb +14 -14
  82. data/lib/puppet/feature/rails.rb +23 -25
  83. data/lib/puppet/file_bucket.rb +4 -0
  84. data/lib/puppet/file_bucket/dipper.rb +99 -0
  85. data/lib/puppet/file_bucket/file.rb +136 -0
  86. data/lib/puppet/file_bucket/file/indirection_hooks.rb +9 -0
  87. data/lib/puppet/file_collection.rb +20 -20
  88. data/lib/puppet/file_collection/lookup.rb +11 -11
  89. data/lib/puppet/file_serving/base.rb +67 -71
  90. data/lib/puppet/file_serving/configuration.rb +84 -86
  91. data/lib/puppet/file_serving/configuration/parser.rb +103 -102
  92. data/lib/puppet/file_serving/content.rb +34 -33
  93. data/lib/puppet/file_serving/fileset.rb +131 -133
  94. data/lib/puppet/file_serving/indirection_hooks.rb +17 -17
  95. data/lib/puppet/file_serving/metadata.rb +98 -95
  96. data/lib/puppet/file_serving/mount.rb +22 -22
  97. data/lib/puppet/file_serving/mount/file.rb +101 -106
  98. data/lib/puppet/file_serving/mount/modules.rb +15 -15
  99. data/lib/puppet/file_serving/mount/plugins.rb +15 -16
  100. data/lib/puppet/file_serving/terminus_helper.rb +13 -13
  101. data/lib/puppet/indirector.rb +48 -49
  102. data/lib/puppet/indirector/active_record.rb +19 -19
  103. data/lib/puppet/indirector/catalog/active_record.rb +25 -25
  104. data/lib/puppet/indirector/catalog/compiler.rb +134 -145
  105. data/lib/puppet/indirector/catalog/rest.rb +1 -1
  106. data/lib/puppet/indirector/catalog/yaml.rb +13 -13
  107. data/lib/puppet/indirector/certificate/ca.rb +3 -3
  108. data/lib/puppet/indirector/certificate/file.rb +3 -3
  109. data/lib/puppet/indirector/certificate/rest.rb +8 -8
  110. data/lib/puppet/indirector/certificate_request/ca.rb +7 -7
  111. data/lib/puppet/indirector/certificate_request/file.rb +2 -2
  112. data/lib/puppet/indirector/certificate_request/rest.rb +3 -3
  113. data/lib/puppet/indirector/certificate_revocation_list/ca.rb +2 -2
  114. data/lib/puppet/indirector/certificate_revocation_list/file.rb +2 -2
  115. data/lib/puppet/indirector/certificate_revocation_list/rest.rb +3 -3
  116. data/lib/puppet/indirector/couch.rb +76 -0
  117. data/lib/puppet/indirector/direct_file_server.rb +11 -11
  118. data/lib/puppet/indirector/envelope.rb +4 -4
  119. data/lib/puppet/indirector/exec.rb +38 -42
  120. data/lib/puppet/indirector/facts/active_record.rb +24 -24
  121. data/lib/puppet/indirector/facts/couch.rb +31 -0
  122. data/lib/puppet/indirector/facts/facter.rb +63 -61
  123. data/lib/puppet/indirector/facts/memory.rb +4 -4
  124. data/lib/puppet/indirector/facts/rest.rb +1 -1
  125. data/lib/puppet/indirector/facts/yaml.rb +2 -2
  126. data/lib/puppet/indirector/file.rb +67 -46
  127. data/lib/puppet/indirector/file_bucket_file/file.rb +146 -0
  128. data/lib/puppet/indirector/file_bucket_file/rest.rb +8 -0
  129. data/lib/puppet/indirector/file_content/file.rb +1 -1
  130. data/lib/puppet/indirector/file_content/file_server.rb +1 -1
  131. data/lib/puppet/indirector/file_content/rest.rb +1 -1
  132. data/lib/puppet/indirector/file_metadata/file.rb +11 -11
  133. data/lib/puppet/indirector/file_metadata/file_server.rb +1 -1
  134. data/lib/puppet/indirector/file_metadata/rest.rb +1 -1
  135. data/lib/puppet/indirector/file_server.rb +44 -44
  136. data/lib/puppet/indirector/indirection.rb +249 -260
  137. data/lib/puppet/indirector/key/ca.rb +5 -5
  138. data/lib/puppet/indirector/key/file.rb +29 -29
  139. data/lib/puppet/indirector/ldap.rb +62 -64
  140. data/lib/puppet/indirector/memory.rb +13 -13
  141. data/lib/puppet/indirector/node/active_record.rb +6 -6
  142. data/lib/puppet/indirector/node/exec.rb +40 -44
  143. data/lib/puppet/indirector/node/ldap.rb +246 -212
  144. data/lib/puppet/indirector/node/memory.rb +5 -5
  145. data/lib/puppet/indirector/node/plain.rb +12 -12
  146. data/lib/puppet/indirector/node/rest.rb +2 -2
  147. data/lib/puppet/indirector/node/yaml.rb +2 -2
  148. data/lib/puppet/indirector/plain.rb +4 -4
  149. data/lib/puppet/indirector/queue.rb +49 -51
  150. data/lib/puppet/indirector/report/processor.rb +34 -37
  151. data/lib/puppet/indirector/report/rest.rb +3 -3
  152. data/lib/puppet/indirector/request.rb +171 -157
  153. data/lib/puppet/indirector/resource/ral.rb +48 -0
  154. data/lib/puppet/indirector/resource/rest.rb +5 -0
  155. data/lib/puppet/indirector/resource_type.rb +5 -0
  156. data/lib/puppet/indirector/resource_type/parser.rb +27 -0
  157. data/lib/puppet/indirector/resource_type/rest.rb +7 -0
  158. data/lib/puppet/indirector/rest.rb +83 -79
  159. data/lib/puppet/indirector/run/local.rb +8 -0
  160. data/lib/puppet/indirector/run/rest.rb +6 -0
  161. data/lib/puppet/indirector/ssl_file.rb +165 -165
  162. data/lib/puppet/indirector/status.rb +3 -0
  163. data/lib/puppet/indirector/status/local.rb +7 -0
  164. data/lib/puppet/indirector/status/rest.rb +5 -0
  165. data/lib/puppet/indirector/terminus.rb +129 -133
  166. data/lib/puppet/indirector/yaml.rb +47 -49
  167. data/lib/puppet/metatype/manager.rb +120 -114
  168. data/lib/puppet/module.rb +182 -124
  169. data/lib/puppet/network/authconfig.rb +146 -156
  170. data/lib/puppet/network/authorization.rb +63 -70
  171. data/lib/puppet/network/authstore.rb +226 -232
  172. data/lib/puppet/network/client.rb +141 -152
  173. data/lib/puppet/network/client/ca.rb +47 -49
  174. data/lib/puppet/network/client/file.rb +3 -3
  175. data/lib/puppet/network/client/proxy.rb +19 -19
  176. data/lib/puppet/network/client/report.rb +17 -21
  177. data/lib/puppet/network/client/runner.rb +5 -7
  178. data/lib/puppet/network/client/status.rb +1 -1
  179. data/lib/puppet/network/client_request.rb +20 -22
  180. data/lib/puppet/network/format.rb +79 -81
  181. data/lib/puppet/network/format_handler.rb +135 -130
  182. data/lib/puppet/network/formats.rb +128 -154
  183. data/lib/puppet/network/handler.rb +43 -46
  184. data/lib/puppet/network/handler/ca.rb +129 -135
  185. data/lib/puppet/network/handler/filebucket.rb +39 -170
  186. data/lib/puppet/network/handler/fileserver.rb +624 -656
  187. data/lib/puppet/network/handler/master.rb +62 -75
  188. data/lib/puppet/network/handler/report.rb +60 -67
  189. data/lib/puppet/network/handler/runner.rb +20 -20
  190. data/lib/puppet/network/handler/status.rb +9 -9
  191. data/lib/puppet/network/http.rb +12 -12
  192. data/lib/puppet/network/http/api/v1.rb +49 -44
  193. data/lib/puppet/network/http/compression.rb +111 -0
  194. data/lib/puppet/network/http/handler.rb +183 -183
  195. data/lib/puppet/network/http/mongrel.rb +46 -48
  196. data/lib/puppet/network/http/mongrel/rest.rb +73 -66
  197. data/lib/puppet/network/http/rack.rb +45 -45
  198. data/lib/puppet/network/http/rack/httphandler.rb +7 -7
  199. data/lib/puppet/network/http/rack/rest.rb +84 -61
  200. data/lib/puppet/network/http/rack/xmlrpc.rb +49 -49
  201. data/lib/puppet/network/http/webrick.rb +108 -112
  202. data/lib/puppet/network/http/webrick/rest.rb +60 -57
  203. data/lib/puppet/network/http_pool.rb +95 -83
  204. data/lib/puppet/network/http_server/mongrel.rb +90 -90
  205. data/lib/puppet/network/http_server/webrick.rb +139 -148
  206. data/lib/puppet/network/rest_authconfig.rb +76 -71
  207. data/lib/puppet/network/rest_authorization.rb +11 -13
  208. data/lib/puppet/network/rights.rb +217 -226
  209. data/lib/puppet/network/server.rb +147 -151
  210. data/lib/puppet/network/xmlrpc/client.rb +197 -205
  211. data/lib/puppet/network/xmlrpc/processor.rb +68 -72
  212. data/lib/puppet/network/xmlrpc/server.rb +10 -10
  213. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +94 -100
  214. data/lib/puppet/node.rb +99 -107
  215. data/lib/puppet/node/environment.rb +109 -62
  216. data/lib/puppet/node/facts.rb +48 -43
  217. data/lib/puppet/parameter.rb +246 -498
  218. data/lib/puppet/parameter/value.rb +63 -0
  219. data/lib/puppet/parameter/value_collection.rb +143 -0
  220. data/lib/puppet/parser.rb +4 -0
  221. data/lib/puppet/parser/ast.rb +81 -67
  222. data/lib/puppet/parser/ast/arithmetic_operator.rb +27 -29
  223. data/lib/puppet/parser/ast/astarray.rb +50 -50
  224. data/lib/puppet/parser/ast/asthash.rb +37 -0
  225. data/lib/puppet/parser/ast/boolean_operator.rb +33 -35
  226. data/lib/puppet/parser/ast/branch.rb +29 -31
  227. data/lib/puppet/parser/ast/caseopt.rb +50 -56
  228. data/lib/puppet/parser/ast/casestatement.rb +30 -30
  229. data/lib/puppet/parser/ast/collection.rb +43 -37
  230. data/lib/puppet/parser/ast/collexpr.rb +66 -69
  231. data/lib/puppet/parser/ast/comparison_operator.rb +32 -35
  232. data/lib/puppet/parser/ast/else.rb +13 -13
  233. data/lib/puppet/parser/ast/function.rb +34 -43
  234. data/lib/puppet/parser/ast/ifstatement.rb +23 -27
  235. data/lib/puppet/parser/ast/in_operator.rb +24 -0
  236. data/lib/puppet/parser/ast/leaf.rb +173 -156
  237. data/lib/puppet/parser/ast/match_operator.rb +16 -19
  238. data/lib/puppet/parser/ast/minus.rb +13 -13
  239. data/lib/puppet/parser/ast/nop.rb +6 -6
  240. data/lib/puppet/parser/ast/not.rb +9 -9
  241. data/lib/puppet/parser/ast/relationship.rb +60 -0
  242. data/lib/puppet/parser/ast/resource.rb +58 -57
  243. data/lib/puppet/parser/ast/resource_defaults.rb +16 -16
  244. data/lib/puppet/parser/ast/resource_override.rb +51 -51
  245. data/lib/puppet/parser/ast/resource_reference.rb +17 -72
  246. data/lib/puppet/parser/ast/resourceparam.rb +20 -17
  247. data/lib/puppet/parser/ast/selector.rb +30 -34
  248. data/lib/puppet/parser/ast/tag.rb +16 -16
  249. data/lib/puppet/parser/ast/vardef.rb +20 -16
  250. data/lib/puppet/parser/collector.rb +181 -189
  251. data/lib/puppet/parser/compiler.rb +395 -364
  252. data/lib/puppet/parser/files.rb +65 -69
  253. data/lib/puppet/parser/functions.rb +85 -97
  254. data/lib/puppet/parser/functions/defined.rb +23 -23
  255. data/lib/puppet/parser/functions/fail.rb +2 -2
  256. data/lib/puppet/parser/functions/file.rb +21 -19
  257. data/lib/puppet/parser/functions/fqdn_rand.rb +7 -7
  258. data/lib/puppet/parser/functions/generate.rb +24 -26
  259. data/lib/puppet/parser/functions/include.rb +16 -18
  260. data/lib/puppet/parser/functions/inline_template.rb +16 -17
  261. data/lib/puppet/parser/functions/realize.rb +8 -8
  262. data/lib/puppet/parser/functions/regsubst.rb +74 -59
  263. data/lib/puppet/parser/functions/require.rb +35 -33
  264. data/lib/puppet/parser/functions/search.rb +5 -5
  265. data/lib/puppet/parser/functions/sha1.rb +3 -4
  266. data/lib/puppet/parser/functions/shellquote.rb +31 -33
  267. data/lib/puppet/parser/functions/split.rb +8 -8
  268. data/lib/puppet/parser/functions/sprintf.rb +10 -9
  269. data/lib/puppet/parser/functions/tag.rb +3 -3
  270. data/lib/puppet/parser/functions/tagged.rb +13 -13
  271. data/lib/puppet/parser/functions/template.rb +18 -19
  272. data/lib/puppet/parser/functions/versioncmp.rb +17 -14
  273. data/lib/puppet/parser/grammar.ra +485 -422
  274. data/lib/puppet/parser/lexer.rb +500 -442
  275. data/lib/puppet/parser/parser.rb +1438 -1084
  276. data/lib/puppet/parser/parser_support.rb +227 -502
  277. data/lib/puppet/parser/relationship.rb +43 -0
  278. data/lib/puppet/parser/resource.rb +280 -375
  279. data/lib/puppet/parser/resource/param.rb +18 -18
  280. data/lib/puppet/parser/scope.rb +450 -447
  281. data/lib/puppet/parser/templatewrapper.rb +92 -94
  282. data/lib/puppet/parser/type_loader.rb +146 -0
  283. data/lib/puppet/parser/yaml_trimmer.rb +6 -8
  284. data/lib/puppet/property.rb +290 -453
  285. data/lib/puppet/property/ensure.rb +92 -0
  286. data/lib/puppet/property/keyvalue.rb +74 -82
  287. data/lib/puppet/property/list.rb +71 -81
  288. data/lib/puppet/property/ordered_list.rb +15 -15
  289. data/lib/puppet/provider.rb +229 -241
  290. data/lib/puppet/provider/augeas/augeas.rb +318 -320
  291. data/lib/puppet/provider/computer/computer.rb +13 -13
  292. data/lib/puppet/provider/confine.rb +63 -63
  293. data/lib/puppet/provider/confine/exists.rb +14 -14
  294. data/lib/puppet/provider/confine/false.rb +12 -12
  295. data/lib/puppet/provider/confine/feature.rb +10 -10
  296. data/lib/puppet/provider/confine/true.rb +13 -13
  297. data/lib/puppet/provider/confine/variable.rb +51 -54
  298. data/lib/puppet/provider/confine_collection.rb +38 -38
  299. data/lib/puppet/provider/confiner.rb +10 -14
  300. data/lib/puppet/provider/cron/crontab.rb +172 -173
  301. data/lib/puppet/provider/file/posix.rb +99 -0
  302. data/lib/puppet/provider/file/win32.rb +74 -0
  303. data/lib/puppet/provider/group/directoryservice.rb +6 -6
  304. data/lib/puppet/provider/group/groupadd.rb +18 -20
  305. data/lib/puppet/provider/group/ldap.rb +40 -43
  306. data/lib/puppet/provider/group/pw.rb +23 -23
  307. data/lib/puppet/provider/host/parsed.rb +51 -50
  308. data/lib/puppet/provider/ldap.rb +121 -123
  309. data/lib/puppet/provider/macauthorization/macauthorization.rb +263 -272
  310. data/lib/puppet/provider/mailalias/aliases.rb +34 -31
  311. data/lib/puppet/provider/maillist/mailman.rb +87 -93
  312. data/lib/puppet/provider/mcx/mcxcontent.rb +155 -151
  313. data/lib/puppet/provider/mount.rb +36 -40
  314. data/lib/puppet/provider/mount/parsed.rb +28 -26
  315. data/lib/puppet/provider/naginator.rb +46 -48
  316. data/lib/puppet/provider/nameservice.rb +215 -257
  317. data/lib/puppet/provider/nameservice/directoryservice.rb +455 -471
  318. data/lib/puppet/provider/nameservice/objectadd.rb +21 -21
  319. data/lib/puppet/provider/nameservice/pw.rb +13 -13
  320. data/lib/puppet/provider/package.rb +18 -20
  321. data/lib/puppet/provider/package/aix.rb +128 -0
  322. data/lib/puppet/provider/package/appdmg.rb +78 -82
  323. data/lib/puppet/provider/package/apple.rb +39 -40
  324. data/lib/puppet/provider/package/apt.rb +95 -104
  325. data/lib/puppet/provider/package/aptitude.rb +19 -21
  326. data/lib/puppet/provider/package/aptrpm.rb +70 -72
  327. data/lib/puppet/provider/package/blastwave.rb +88 -94
  328. data/lib/puppet/provider/package/darwinport.rb +67 -69
  329. data/lib/puppet/provider/package/dpkg.rb +123 -97
  330. data/lib/puppet/provider/package/fink.rb +66 -68
  331. data/lib/puppet/provider/package/freebsd.rb +38 -40
  332. data/lib/puppet/provider/package/gem.rb +98 -102
  333. data/lib/puppet/provider/package/hpux.rb +37 -39
  334. data/lib/puppet/provider/package/nim.rb +35 -0
  335. data/lib/puppet/provider/package/openbsd.rb +100 -75
  336. data/lib/puppet/provider/package/pkg.rb +108 -0
  337. data/lib/puppet/provider/package/pkgdmg.rb +95 -87
  338. data/lib/puppet/provider/package/portage.rb +101 -104
  339. data/lib/puppet/provider/package/ports.rb +71 -73
  340. data/lib/puppet/provider/package/portupgrade.rb +251 -0
  341. data/lib/puppet/provider/package/rpm.rb +113 -115
  342. data/lib/puppet/provider/package/rug.rb +46 -46
  343. data/lib/puppet/provider/package/sun.rb +135 -151
  344. data/lib/puppet/provider/package/sunfreeware.rb +5 -5
  345. data/lib/puppet/provider/package/up2date.rb +31 -31
  346. data/lib/puppet/provider/package/urpmi.rb +51 -51
  347. data/lib/puppet/provider/package/yum.rb +90 -98
  348. data/lib/puppet/provider/package/zypper.rb +52 -0
  349. data/lib/puppet/provider/parsedfile.rb +306 -329
  350. data/lib/puppet/provider/port/parsed.rb +5 -5
  351. data/lib/puppet/provider/selboolean/getsetsebool.rb +34 -34
  352. data/lib/puppet/provider/selmodule/semodule.rb +103 -111
  353. data/lib/puppet/provider/service/base.rb +134 -139
  354. data/lib/puppet/provider/service/bsd.rb +48 -0
  355. data/lib/puppet/provider/service/daemontools.rb +158 -162
  356. data/lib/puppet/provider/service/debian.rb +36 -36
  357. data/lib/puppet/provider/service/freebsd.rb +118 -38
  358. data/lib/puppet/provider/service/gentoo.rb +33 -39
  359. data/lib/puppet/provider/service/init.rb +125 -125
  360. data/lib/puppet/provider/service/launchd.rb +234 -254
  361. data/lib/puppet/provider/service/redhat.rb +58 -58
  362. data/lib/puppet/provider/service/runit.rb +74 -74
  363. data/lib/puppet/provider/service/smf.rb +81 -85
  364. data/lib/puppet/provider/service/src.rb +87 -0
  365. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +73 -81
  366. data/lib/puppet/provider/sshkey/parsed.rb +24 -21
  367. data/lib/puppet/provider/user/directoryservice.rb +71 -71
  368. data/lib/puppet/provider/user/hpux.rb +20 -20
  369. data/lib/puppet/provider/user/ldap.rb +106 -110
  370. data/lib/puppet/provider/user/pw.rb +33 -37
  371. data/lib/puppet/provider/user/user_role_add.rb +168 -183
  372. data/lib/puppet/provider/user/useradd.rb +50 -51
  373. data/lib/puppet/provider/zfs/solaris.rb +35 -35
  374. data/lib/puppet/provider/zone/solaris.rb +206 -205
  375. data/lib/puppet/provider/zpool/solaris.rb +95 -97
  376. data/lib/puppet/rails.rb +115 -122
  377. data/lib/puppet/rails/benchmark.rb +43 -49
  378. data/lib/puppet/rails/database/001_add_created_at_to_all_tables.rb +8 -12
  379. data/lib/puppet/rails/database/002_remove_duplicated_index_on_all_tables.rb +8 -12
  380. data/lib/puppet/rails/database/003_add_environment_to_host.rb +6 -10
  381. data/lib/puppet/rails/database/schema.rb +100 -97
  382. data/lib/puppet/rails/fact_name.rb +1 -1
  383. data/lib/puppet/rails/fact_value.rb +5 -5
  384. data/lib/puppet/rails/host.rb +252 -249
  385. data/lib/puppet/rails/param_name.rb +15 -15
  386. data/lib/puppet/rails/param_value.rb +55 -55
  387. data/lib/puppet/rails/puppet_tag.rb +4 -4
  388. data/lib/puppet/rails/resource.rb +189 -203
  389. data/lib/puppet/rails/resource_tag.rb +19 -19
  390. data/lib/puppet/rails/source_file.rb +5 -5
  391. data/lib/puppet/reference/configuration.rb +53 -56
  392. data/lib/puppet/reference/function.rb +1 -1
  393. data/lib/puppet/reference/indirection.rb +13 -13
  394. data/lib/puppet/reference/metaparameter.rb +40 -40
  395. data/lib/puppet/reference/network.rb +16 -16
  396. data/lib/puppet/reference/providers.rb +97 -98
  397. data/lib/puppet/reference/report.rb +1 -1
  398. data/lib/puppet/reference/type.rb +67 -70
  399. data/lib/puppet/relationship.rb +65 -67
  400. data/lib/puppet/reports.rb +32 -34
  401. data/lib/puppet/reports/http.rb +22 -0
  402. data/lib/puppet/reports/log.rb +7 -6
  403. data/lib/puppet/reports/rrdgraph.rb +105 -114
  404. data/lib/puppet/reports/store.rb +53 -56
  405. data/lib/puppet/reports/tagmail.rb +149 -157
  406. data/lib/puppet/resource.rb +428 -194
  407. data/lib/puppet/resource/catalog.rb +496 -512
  408. data/lib/puppet/resource/status.rb +58 -0
  409. data/lib/puppet/resource/type.rb +311 -0
  410. data/lib/puppet/resource/type_collection.rb +217 -0
  411. data/lib/puppet/resource/type_collection_helper.rb +7 -0
  412. data/lib/puppet/run.rb +77 -0
  413. data/lib/puppet/simple_graph.rb +381 -413
  414. data/lib/puppet/ssl.rb +2 -1
  415. data/lib/puppet/ssl/base.rb +60 -43
  416. data/lib/puppet/ssl/certificate.rb +21 -21
  417. data/lib/puppet/ssl/certificate_authority.rb +215 -229
  418. data/lib/puppet/ssl/certificate_authority/interface.rb +84 -68
  419. data/lib/puppet/ssl/certificate_factory.rb +119 -119
  420. data/lib/puppet/ssl/certificate_request.rb +52 -45
  421. data/lib/puppet/ssl/certificate_revocation_list.rb +78 -78
  422. data/lib/puppet/ssl/host.rb +230 -228
  423. data/lib/puppet/ssl/inventory.rb +33 -33
  424. data/lib/puppet/ssl/key.rb +37 -37
  425. data/lib/puppet/sslcertificates.rb +124 -123
  426. data/lib/puppet/sslcertificates/ca.rb +327 -344
  427. data/lib/puppet/sslcertificates/certificate.rb +197 -224
  428. data/lib/puppet/sslcertificates/inventory.rb +27 -29
  429. data/lib/puppet/sslcertificates/support.rb +113 -119
  430. data/lib/puppet/status.rb +28 -0
  431. data/lib/puppet/transaction.rb +349 -696
  432. data/lib/puppet/transaction/change.rb +80 -85
  433. data/lib/puppet/transaction/event.rb +54 -14
  434. data/lib/puppet/transaction/event_manager.rb +99 -0
  435. data/lib/puppet/transaction/report.rb +121 -59
  436. data/lib/puppet/transaction/resource_harness.rb +150 -0
  437. data/lib/puppet/transportable.rb +215 -226
  438. data/lib/puppet/type.rb +1644 -1849
  439. data/lib/puppet/type/augeas.rb +153 -134
  440. data/lib/puppet/type/component.rb +63 -65
  441. data/lib/puppet/type/computer.rb +44 -44
  442. data/lib/puppet/type/cron.rb +364 -384
  443. data/lib/puppet/type/exec.rb +583 -521
  444. data/lib/puppet/type/file.rb +786 -823
  445. data/lib/puppet/type/file/checksum.rb +23 -240
  446. data/lib/puppet/type/file/content.rb +193 -129
  447. data/lib/puppet/type/file/ensure.rb +149 -153
  448. data/lib/puppet/type/file/group.rb +94 -104
  449. data/lib/puppet/type/file/mode.rb +109 -122
  450. data/lib/puppet/type/file/owner.rb +39 -131
  451. data/lib/puppet/type/file/selcontext.rb +69 -73
  452. data/lib/puppet/type/file/source.rb +165 -153
  453. data/lib/puppet/type/file/target.rb +56 -60
  454. data/lib/puppet/type/file/type.rb +18 -18
  455. data/lib/puppet/type/filebucket.rb +91 -92
  456. data/lib/puppet/type/group.rb +77 -82
  457. data/lib/puppet/type/host.rb +85 -85
  458. data/lib/puppet/type/k5login.rb +65 -65
  459. data/lib/puppet/type/macauthorization.rb +141 -143
  460. data/lib/puppet/type/mailalias.rb +37 -37
  461. data/lib/puppet/type/maillist.rb +51 -51
  462. data/lib/puppet/type/mcx.rb +62 -62
  463. data/lib/puppet/type/mount.rb +199 -193
  464. data/lib/puppet/type/notify.rb +33 -33
  465. data/lib/puppet/type/package.rb +301 -298
  466. data/lib/puppet/type/port.rb +4 -4
  467. data/lib/puppet/type/resources.rb +107 -123
  468. data/lib/puppet/type/schedule.rb +317 -326
  469. data/lib/puppet/type/selboolean.rb +19 -19
  470. data/lib/puppet/type/selmodule.rb +34 -34
  471. data/lib/puppet/type/service.rb +152 -152
  472. data/lib/puppet/type/ssh_authorized_key.rb +74 -78
  473. data/lib/puppet/type/sshkey.rb +52 -56
  474. data/lib/puppet/type/stage.rb +18 -0
  475. data/lib/puppet/type/tidy.rb +289 -300
  476. data/lib/puppet/type/user.rb +300 -312
  477. data/lib/puppet/type/yumrepo.rb +300 -335
  478. data/lib/puppet/type/zfs.rb +36 -36
  479. data/lib/puppet/type/zone.rb +376 -347
  480. data/lib/puppet/type/zpool.rb +71 -77
  481. data/lib/puppet/util.rb +383 -387
  482. data/lib/puppet/util/autoload.rb +125 -143
  483. data/lib/puppet/util/autoload/file_cache.rb +78 -101
  484. data/lib/puppet/util/backups.rb +66 -66
  485. data/lib/puppet/util/cacher.rb +112 -120
  486. data/lib/puppet/util/checksums.rb +119 -84
  487. data/lib/puppet/util/classgen.rb +157 -167
  488. data/lib/puppet/util/command_line.rb +95 -0
  489. data/lib/puppet/util/command_line/filebucket +97 -0
  490. data/lib/puppet/util/command_line/pi +48 -0
  491. data/lib/puppet/util/command_line/puppet +69 -0
  492. data/lib/puppet/util/command_line/puppetca +110 -0
  493. data/lib/puppet/util/command_line/puppetd +186 -0
  494. data/lib/puppet/util/command_line/puppetdoc +67 -0
  495. data/lib/puppet/util/command_line/puppetmasterd +65 -0
  496. data/lib/puppet/util/command_line/puppetqd +53 -0
  497. data/lib/puppet/util/command_line/puppetrun +128 -0
  498. data/lib/puppet/util/command_line/ralsh +89 -0
  499. data/lib/puppet/util/constant_inflector.rb +7 -7
  500. data/lib/puppet/util/diff.rb +59 -56
  501. data/lib/puppet/util/docs.rb +97 -99
  502. data/lib/puppet/util/errors.rb +53 -44
  503. data/lib/puppet/util/execution.rb +15 -15
  504. data/lib/puppet/util/feature.rb +62 -72
  505. data/lib/puppet/util/file_locking.rb +33 -33
  506. data/lib/puppet/util/fileparsing.rb +292 -318
  507. data/lib/puppet/util/filetype.rb +246 -263
  508. data/lib/puppet/util/graph.rb +16 -18
  509. data/lib/puppet/util/inifile.rb +170 -184
  510. data/lib/puppet/util/inline_docs.rb +26 -0
  511. data/lib/puppet/util/instance_loader.rb +58 -58
  512. data/lib/puppet/util/ldap/connection.rb +57 -59
  513. data/lib/puppet/util/ldap/generator.rb +31 -31
  514. data/lib/puppet/util/ldap/manager.rb +233 -235
  515. data/lib/puppet/util/loadedfile.rb +49 -51
  516. data/lib/puppet/util/log.rb +210 -494
  517. data/lib/puppet/util/log/destination.rb +49 -0
  518. data/lib/puppet/util/log/destinations.rb +217 -0
  519. data/lib/puppet/util/log_paths.rb +15 -17
  520. data/lib/puppet/util/logging.rb +34 -13
  521. data/lib/puppet/util/metaid.rb +15 -15
  522. data/lib/puppet/util/methodhelper.rb +24 -26
  523. data/lib/puppet/util/metric.rb +123 -125
  524. data/lib/puppet/util/monkey_patches.rb +21 -20
  525. data/lib/puppet/util/nagios_maker.rb +41 -41
  526. data/lib/puppet/util/package.rb +24 -26
  527. data/lib/puppet/util/pidlock.rb +49 -49
  528. data/lib/puppet/util/posix.rb +115 -115
  529. data/lib/puppet/util/provider_features.rb +147 -155
  530. data/lib/puppet/util/pson.rb +5 -5
  531. data/lib/puppet/util/queue.rb +55 -55
  532. data/lib/puppet/util/queue/stomp.rb +27 -27
  533. data/lib/puppet/util/rails/cache_accumulator.rb +49 -49
  534. data/lib/puppet/util/rails/collection_merger.rb +13 -13
  535. data/lib/puppet/util/rails/reference_serializer.rb +26 -26
  536. data/lib/puppet/util/rdoc.rb +77 -74
  537. data/lib/puppet/util/rdoc/code_objects.rb +235 -217
  538. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +732 -676
  539. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +38 -12
  540. data/lib/puppet/util/rdoc/parser.rb +418 -392
  541. data/lib/puppet/util/reference.rb +168 -174
  542. data/lib/puppet/util/resource_template.rb +17 -17
  543. data/lib/puppet/util/run_mode.rb +81 -0
  544. data/lib/puppet/util/selinux.rb +184 -200
  545. data/lib/puppet/util/settings.rb +886 -919
  546. data/lib/puppet/util/settings/boolean_setting.rb +20 -23
  547. data/lib/puppet/util/settings/file_setting.rb +98 -99
  548. data/lib/puppet/util/settings/setting.rb +71 -87
  549. data/lib/puppet/util/storage.rb +73 -84
  550. data/lib/puppet/util/subclass_loader.rb +59 -66
  551. data/lib/puppet/util/suidmanager.rb +87 -84
  552. data/lib/puppet/util/tagging.rb +37 -39
  553. data/lib/puppet/util/user_attr.rb +14 -14
  554. data/lib/puppet/util/warnings.rb +20 -20
  555. data/lib/puppet/util/zaml.rb +242 -241
  556. data/man/man5/puppet.conf.5 +148 -76
  557. data/man/man8/filebucket.8 +6 -6
  558. data/man/man8/pi.8 +5 -5
  559. data/man/man8/puppet.8 +2 -73
  560. data/man/man8/puppetca.8 +47 -32
  561. data/man/man8/puppetd.8 +118 -76
  562. data/man/man8/puppetdoc.8 +16 -12
  563. data/man/man8/puppetmasterd.8 +4 -4
  564. data/man/man8/puppetqd.8 +4 -4
  565. data/man/man8/puppetrun.8 +23 -22
  566. data/man/man8/ralsh.8 +16 -17
  567. data/spec/fixtures/yaml/test.local.yaml +16 -0
  568. data/spec/integration/application/apply_spec.rb +33 -0
  569. data/spec/integration/configurer_spec.rb +35 -0
  570. data/spec/integration/defaults_spec.rb +258 -0
  571. data/spec/integration/file_serving/content_spec.rb +20 -0
  572. data/spec/integration/file_serving/fileset_spec.rb +14 -0
  573. data/spec/integration/file_serving/metadata_spec.rb +21 -0
  574. data/spec/integration/file_serving/terminus_helper_spec.rb +22 -0
  575. data/spec/integration/indirector/bucket_file/rest_spec.rb +68 -0
  576. data/spec/integration/indirector/catalog/compiler_spec.rb +68 -0
  577. data/spec/integration/indirector/catalog/queue_spec.rb +61 -0
  578. data/spec/integration/indirector/certificate/rest_spec.rb +68 -0
  579. data/spec/integration/indirector/certificate_request/rest_spec.rb +88 -0
  580. data/spec/integration/indirector/certificate_revocation_list/rest_spec.rb +76 -0
  581. data/spec/integration/indirector/direct_file_server_spec.rb +73 -0
  582. data/spec/integration/indirector/file_content/file_server_spec.rb +94 -0
  583. data/spec/integration/indirector/file_metadata/file_server_spec.rb +18 -0
  584. data/spec/integration/indirector/node/ldap_spec.rb +15 -0
  585. data/spec/integration/indirector/report/rest_spec.rb +96 -0
  586. data/spec/integration/indirector/rest_spec.rb +524 -0
  587. data/spec/integration/network/client_spec.rb +19 -0
  588. data/spec/integration/network/formats_spec.rb +110 -0
  589. data/spec/integration/network/handler_spec.rb +25 -0
  590. data/spec/integration/network/server/mongrel_spec.rb +66 -0
  591. data/spec/integration/network/server/webrick_spec.rb +85 -0
  592. data/spec/integration/node/environment_spec.rb +58 -0
  593. data/spec/integration/node/facts_spec.rb +47 -0
  594. data/spec/integration/node_spec.rb +93 -0
  595. data/spec/integration/parser/collector_spec.rb +38 -0
  596. data/spec/integration/parser/compiler_spec.rb +29 -0
  597. data/spec/integration/parser/functions/require_spec.rb +44 -0
  598. data/spec/integration/parser/parser_spec.rb +113 -0
  599. data/spec/integration/provider/mailalias/aliases_spec.rb +25 -0
  600. data/spec/integration/provider/package_spec.rb +26 -0
  601. data/spec/integration/provider/service/init_spec.rb +32 -0
  602. data/spec/integration/reference/providers_spec.rb +17 -0
  603. data/spec/integration/reports_spec.rb +18 -0
  604. data/spec/integration/resource/catalog_spec.rb +61 -0
  605. data/spec/integration/resource/type_collection_spec.rb +96 -0
  606. data/spec/integration/ssl/certificate_authority_spec.rb +135 -0
  607. data/spec/integration/ssl/certificate_request_spec.rb +61 -0
  608. data/spec/integration/ssl/certificate_revocation_list_spec.rb +42 -0
  609. data/spec/integration/ssl/host_spec.rb +90 -0
  610. data/spec/integration/transaction/report_spec.rb +29 -0
  611. data/spec/integration/transaction_spec.rb +284 -0
  612. data/spec/integration/type/file_spec.rb +506 -0
  613. data/spec/integration/type/package_spec.rb +25 -0
  614. data/spec/integration/type/tidy_spec.rb +32 -0
  615. data/spec/integration/type_spec.rb +22 -0
  616. data/spec/integration/util/autoload_spec.rb +114 -0
  617. data/spec/integration/util/feature_spec.rb +54 -0
  618. data/spec/integration/util/file_locking_spec.rb +37 -0
  619. data/spec/integration/util/rdoc/parser_spec.rb +59 -0
  620. data/spec/integration/util/settings_spec.rb +30 -0
  621. data/spec/lib/puppet_spec/files.rb +16 -6
  622. data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +27 -27
  623. data/spec/monkey_patches/alias_should_to_must.rb +4 -4
  624. data/spec/shared_behaviours/file_server_terminus.rb +28 -28
  625. data/spec/shared_behaviours/file_serving.rb +53 -53
  626. data/spec/shared_behaviours/memory_terminus.rb +22 -22
  627. data/spec/spec.opts +1 -0
  628. data/spec/spec_helper.rb +61 -18
  629. data/spec/spec_specs/runnable_spec.rb +95 -0
  630. data/spec/unit/agent/locker_spec.rb +100 -0
  631. data/spec/unit/agent_spec.rb +281 -0
  632. data/spec/unit/application/agent_spec.rb +588 -0
  633. data/spec/unit/application/apply_spec.rb +387 -0
  634. data/spec/unit/application/cert_spec.rb +194 -0
  635. data/spec/unit/application/describe_spec.rb +84 -0
  636. data/spec/unit/application/doc_spec.rb +368 -0
  637. data/spec/unit/application/filebucket_spec.rb +223 -0
  638. data/spec/unit/application/kick_spec.rb +313 -0
  639. data/spec/unit/application/master_spec.rb +453 -0
  640. data/spec/unit/application/queue_spec.rb +186 -0
  641. data/spec/unit/application/resource_spec.rb +233 -0
  642. data/spec/unit/application_spec.rb +531 -0
  643. data/spec/unit/configurer/downloader_spec.rb +188 -0
  644. data/spec/unit/configurer/fact_handler_spec.rb +164 -0
  645. data/spec/unit/configurer/plugin_handler_spec.rb +112 -0
  646. data/spec/unit/configurer_spec.rb +494 -0
  647. data/spec/unit/daemon_spec.rb +306 -0
  648. data/spec/unit/dsl/resource_api_spec.rb +181 -0
  649. data/spec/unit/dsl/resource_type_api_spec.rb +46 -0
  650. data/spec/unit/file_bucket/dipper_spec.rb +122 -0
  651. data/spec/unit/file_bucket/file_spec.rb +230 -0
  652. data/spec/unit/file_collection/lookup_spec.rb +46 -0
  653. data/spec/unit/file_collection_spec.rb +53 -0
  654. data/spec/unit/file_serving/base_spec.rb +132 -0
  655. data/spec/unit/file_serving/configuration/parser_spec.rb +181 -0
  656. data/spec/unit/file_serving/configuration_spec.rb +249 -0
  657. data/spec/unit/file_serving/content_spec.rb +118 -0
  658. data/spec/unit/file_serving/fileset_spec.rb +347 -0
  659. data/spec/unit/file_serving/indirection_hooks_spec.rb +63 -0
  660. data/spec/unit/file_serving/metadata_spec.rb +286 -0
  661. data/spec/unit/file_serving/mount/file_spec.rb +196 -0
  662. data/spec/unit/file_serving/mount/modules_spec.rb +63 -0
  663. data/spec/unit/file_serving/mount/plugins_spec.rb +61 -0
  664. data/spec/unit/file_serving/mount_spec.rb +32 -0
  665. data/spec/unit/file_serving/terminus_helper_spec.rb +98 -0
  666. data/spec/unit/indirector/active_record_spec.rb +76 -0
  667. data/spec/unit/indirector/catalog/active_record_spec.rb +141 -0
  668. data/spec/unit/indirector/catalog/compiler_spec.rb +275 -0
  669. data/spec/unit/indirector/catalog/queue_spec.rb +20 -0
  670. data/spec/unit/indirector/catalog/rest_spec.rb +11 -0
  671. data/spec/unit/indirector/catalog/yaml_spec.rb +25 -0
  672. data/spec/unit/indirector/certificate/ca_spec.rb +28 -0
  673. data/spec/unit/indirector/certificate/file_spec.rb +28 -0
  674. data/spec/unit/indirector/certificate/rest_spec.rb +58 -0
  675. data/spec/unit/indirector/certificate_request/ca_spec.rb +19 -0
  676. data/spec/unit/indirector/certificate_request/file_spec.rb +19 -0
  677. data/spec/unit/indirector/certificate_request/rest_spec.rb +23 -0
  678. data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +21 -0
  679. data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +20 -0
  680. data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +23 -0
  681. data/spec/unit/indirector/code_spec.rb +33 -0
  682. data/spec/unit/indirector/direct_file_server_spec.rb +84 -0
  683. data/spec/unit/indirector/envelope_spec.rb +47 -0
  684. data/spec/unit/indirector/exec_spec.rb +56 -0
  685. data/spec/unit/indirector/facts/active_record_spec.rb +104 -0
  686. data/spec/unit/indirector/facts/couch_spec.rb +98 -0
  687. data/spec/unit/indirector/facts/facter_spec.rb +143 -0
  688. data/spec/unit/indirector/facts/rest_spec.rb +11 -0
  689. data/spec/unit/indirector/facts/yaml_spec.rb +26 -0
  690. data/spec/unit/indirector/file_bucket_file/file_spec.rb +290 -0
  691. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +11 -0
  692. data/spec/unit/indirector/file_content/file_server_spec.rb +18 -0
  693. data/spec/unit/indirector/file_content/file_spec.rb +18 -0
  694. data/spec/unit/indirector/file_content/rest_spec.rb +11 -0
  695. data/spec/unit/indirector/file_metadata/file_server_spec.rb +18 -0
  696. data/spec/unit/indirector/file_metadata/file_spec.rb +52 -0
  697. data/spec/unit/indirector/file_metadata/rest_spec.rb +9 -0
  698. data/spec/unit/indirector/file_server_spec.rb +267 -0
  699. data/spec/unit/indirector/file_spec.rb +181 -0
  700. data/spec/unit/indirector/indirection_spec.rb +795 -0
  701. data/spec/unit/indirector/key/ca_spec.rb +28 -0
  702. data/spec/unit/indirector/key/file_spec.rb +104 -0
  703. data/spec/unit/indirector/ldap_spec.rb +143 -0
  704. data/spec/unit/indirector/memory_spec.rb +29 -0
  705. data/spec/unit/indirector/node/active_record_spec.rb +41 -0
  706. data/spec/unit/indirector/node/exec_spec.rb +70 -0
  707. data/spec/unit/indirector/node/ldap_spec.rb +456 -0
  708. data/spec/unit/indirector/node/memory_spec.rb +19 -0
  709. data/spec/unit/indirector/node/plain_spec.rb +19 -0
  710. data/spec/unit/indirector/node/rest_spec.rb +13 -0
  711. data/spec/unit/indirector/node/yaml_spec.rb +25 -0
  712. data/spec/unit/indirector/plain_spec.rb +29 -0
  713. data/spec/unit/indirector/queue_spec.rb +123 -0
  714. data/spec/unit/indirector/report/processor_spec.rb +81 -0
  715. data/spec/unit/indirector/report/rest_spec.rb +28 -0
  716. data/spec/unit/indirector/request_spec.rb +304 -0
  717. data/spec/unit/indirector/resource/ral_spec.rb +129 -0
  718. data/spec/unit/indirector/resource/rest_spec.rb +11 -0
  719. data/spec/unit/indirector/resource_type/parser_spec.rb +75 -0
  720. data/spec/unit/indirector/resource_type/rest_spec.rb +15 -0
  721. data/spec/unit/indirector/rest_spec.rb +455 -0
  722. data/spec/unit/indirector/run/local_spec.rb +20 -0
  723. data/spec/unit/indirector/run/rest_spec.rb +11 -0
  724. data/spec/unit/indirector/ssl_file_spec.rb +281 -0
  725. data/spec/unit/indirector/status/rest_spec.rb +11 -0
  726. data/spec/unit/indirector/terminus_spec.rb +245 -0
  727. data/spec/unit/indirector/yaml_spec.rb +146 -0
  728. data/spec/unit/indirector_spec.rb +157 -0
  729. data/spec/unit/module_spec.rb +547 -0
  730. data/spec/unit/network/authconfig_spec.rb +292 -0
  731. data/spec/unit/network/authstore_spec.rb +370 -0
  732. data/spec/unit/network/client_spec.rb +45 -0
  733. data/spec/unit/network/format_handler_spec.rb +336 -0
  734. data/spec/unit/network/format_spec.rb +198 -0
  735. data/spec/unit/network/formats_spec.rb +337 -0
  736. data/spec/unit/network/handler/fileserver_spec.rb +172 -0
  737. data/spec/unit/network/http/api/v1_spec.rb +122 -0
  738. data/spec/unit/network/http/compression_spec.rb +199 -0
  739. data/spec/unit/network/http/handler_spec.rb +455 -0
  740. data/spec/unit/network/http/mongrel/rest_spec.rb +249 -0
  741. data/spec/unit/network/http/mongrel/{xmlrpc.rb → xmlrpc_spec.rb} +0 -0
  742. data/spec/unit/network/http/mongrel_spec.rb +131 -0
  743. data/spec/unit/network/http/rack/rest_spec.rb +249 -0
  744. data/spec/unit/network/http/rack/xmlrpc_spec.rb +157 -0
  745. data/spec/unit/network/http/rack_spec.rb +102 -0
  746. data/spec/unit/network/http/webrick/rest_spec.rb +180 -0
  747. data/spec/unit/network/http/webrick/{xmlrpc.rb → xmlrpc_spec.rb} +0 -0
  748. data/spec/unit/network/http/webrick_spec.rb +339 -0
  749. data/spec/unit/network/http_pool_spec.rb +206 -0
  750. data/spec/unit/network/http_spec.rb +35 -0
  751. data/spec/unit/network/rest_authconfig_spec.rb +148 -0
  752. data/spec/unit/network/rest_authorization_spec.rb +43 -0
  753. data/spec/unit/network/rights_spec.rb +519 -0
  754. data/spec/unit/network/server_spec.rb +534 -0
  755. data/spec/unit/network/xmlrpc/client_spec.rb +171 -0
  756. data/spec/unit/node/environment_spec.rb +248 -0
  757. data/spec/unit/node/facts_spec.rb +102 -0
  758. data/spec/unit/node_spec.rb +210 -0
  759. data/spec/unit/other/selinux_spec.rb +94 -0
  760. data/spec/unit/other/transbucket_spec.rb +188 -0
  761. data/spec/unit/other/transobject_spec.rb +112 -0
  762. data/spec/unit/parameter/value_collection_spec.rb +167 -0
  763. data/spec/unit/parameter/value_spec.rb +88 -0
  764. data/spec/unit/parameter_spec.rb +172 -0
  765. data/spec/unit/parser/ast/arithmetic_operator_spec.rb +73 -0
  766. data/spec/unit/parser/ast/astarray_spec.rb +72 -0
  767. data/spec/unit/parser/ast/asthash_spec.rb +98 -0
  768. data/spec/unit/parser/ast/boolean_operator_spec.rb +53 -0
  769. data/spec/unit/parser/ast/casestatement_spec.rb +161 -0
  770. data/spec/unit/parser/ast/collection_spec.rb +63 -0
  771. data/spec/unit/parser/ast/collexpr_spec.rb +115 -0
  772. data/spec/unit/parser/ast/comparison_operator_spec.rb +116 -0
  773. data/spec/unit/parser/ast/function_spec.rb +83 -0
  774. data/spec/unit/parser/ast/ifstatement_spec.rb +76 -0
  775. data/spec/unit/parser/ast/in_operator_spec.rb +60 -0
  776. data/spec/unit/parser/ast/leaf_spec.rb +362 -0
  777. data/spec/unit/parser/ast/match_operator_spec.rb +50 -0
  778. data/spec/unit/parser/ast/minus_spec.rb +36 -0
  779. data/spec/unit/parser/ast/nop_spec.rb +20 -0
  780. data/spec/unit/parser/ast/not_spec.rb +30 -0
  781. data/spec/unit/parser/ast/relationship_spec.rb +88 -0
  782. data/spec/unit/parser/ast/resource_defaults_spec.rb +22 -0
  783. data/spec/unit/parser/ast/resource_override_spec.rb +51 -0
  784. data/spec/unit/parser/ast/resource_reference_spec.rb +46 -0
  785. data/spec/unit/parser/ast/resource_spec.rb +120 -0
  786. data/spec/unit/parser/ast/selector_spec.rb +139 -0
  787. data/spec/unit/parser/ast/vardef_spec.rb +60 -0
  788. data/spec/unit/parser/ast_spec.rb +111 -0
  789. data/spec/unit/parser/collector_spec.rb +559 -0
  790. data/spec/unit/parser/compiler_spec.rb +754 -0
  791. data/spec/unit/parser/files_spec.rb +201 -0
  792. data/spec/unit/parser/functions/defined_spec.rb +50 -0
  793. data/spec/unit/parser/functions/fqdn_rand_spec.rb +62 -0
  794. data/spec/unit/parser/functions/generate_spec.rb +41 -0
  795. data/spec/unit/parser/functions/inline_template_spec.rb +59 -0
  796. data/spec/unit/parser/functions/realize_spec.rb +51 -0
  797. data/spec/unit/parser/functions/regsubst_spec.rb +192 -0
  798. data/spec/unit/parser/functions/require_spec.rb +74 -0
  799. data/spec/unit/parser/functions/shellquote_spec.rb +81 -0
  800. data/spec/unit/parser/functions/split_spec.rb +49 -0
  801. data/spec/unit/parser/functions/sprintf_spec.rb +41 -0
  802. data/spec/unit/parser/functions/tag_spec.rb +24 -0
  803. data/spec/unit/parser/functions/template_spec.rb +62 -0
  804. data/spec/unit/parser/functions/versioncmp_spec.rb +29 -0
  805. data/spec/unit/parser/functions_spec.rb +102 -0
  806. data/spec/unit/parser/lexer_spec.rb +646 -0
  807. data/spec/unit/parser/parser_spec.rb +412 -0
  808. data/spec/unit/parser/relationship_spec.rb +70 -0
  809. data/spec/unit/parser/resource_spec.rb +564 -0
  810. data/spec/unit/parser/scope_spec.rb +629 -0
  811. data/spec/unit/parser/templatewrapper_spec.rb +144 -0
  812. data/spec/unit/parser/type_loader_spec.rb +201 -0
  813. data/spec/unit/property/ensure_spec.rb +13 -0
  814. data/spec/unit/property/keyvalue_spec.rb +168 -0
  815. data/spec/unit/property/list_spec.rb +166 -0
  816. data/spec/unit/property/ordered_list_spec.rb +64 -0
  817. data/spec/unit/property_spec.rb +410 -0
  818. data/spec/unit/provider/augeas/augeas_spec.rb +413 -0
  819. data/spec/unit/provider/confine/exists_spec.rb +81 -0
  820. data/spec/unit/provider/confine/false_spec.rb +53 -0
  821. data/spec/unit/provider/confine/feature_spec.rb +60 -0
  822. data/spec/unit/provider/confine/true_spec.rb +53 -0
  823. data/spec/unit/provider/confine/variable_spec.rb +107 -0
  824. data/spec/unit/provider/confine_collection_spec.rb +134 -0
  825. data/spec/unit/provider/confine_spec.rb +78 -0
  826. data/spec/unit/provider/confiner_spec.rb +63 -0
  827. data/spec/unit/provider/group/groupadd_spec.rb +31 -0
  828. data/spec/unit/provider/group/ldap_spec.rb +105 -0
  829. data/spec/unit/provider/ldap_spec.rb +248 -0
  830. data/spec/unit/provider/macauthorization_spec.rb +147 -0
  831. data/spec/unit/provider/mcx/mcxcontent_spec.rb +175 -0
  832. data/spec/unit/provider/mount/parsed_spec.rb +193 -0
  833. data/spec/unit/provider/mount_spec.rb +130 -0
  834. data/spec/unit/provider/naginator_spec.rb +58 -0
  835. data/spec/unit/provider/package/aix_spec.rb +66 -0
  836. data/spec/unit/provider/package/apt_spec.rb +145 -0
  837. data/spec/unit/provider/package/dpkg_spec.rb +225 -0
  838. data/spec/unit/provider/package/gem_spec.rb +87 -0
  839. data/spec/unit/provider/package/hpux_spec.rb +52 -0
  840. data/spec/unit/provider/package/nim_spec.rb +42 -0
  841. data/spec/unit/provider/package/pkg_spec.rb +63 -0
  842. data/spec/unit/provider/package/pkgdmg_spec.rb +84 -0
  843. data/spec/unit/provider/package/zypper_spec.rb +81 -0
  844. data/spec/unit/provider/parsedfile_spec.rb +95 -0
  845. data/spec/unit/provider/selboolean_spec.rb +37 -0
  846. data/spec/unit/provider/selmodule_spec.rb +66 -0
  847. data/spec/unit/provider/service/daemontools_spec.rb +166 -0
  848. data/spec/unit/provider/service/debian_spec.rb +89 -0
  849. data/spec/unit/provider/service/init_spec.rb +168 -0
  850. data/spec/unit/provider/service/launchd_spec.rb +200 -0
  851. data/spec/unit/provider/service/redhat_spec.rb +121 -0
  852. data/spec/unit/provider/service/runit_spec.rb +140 -0
  853. data/spec/unit/provider/service/src_spec.rb +97 -0
  854. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +228 -0
  855. data/spec/unit/provider/sshkey/parsed_spec.rb +38 -0
  856. data/spec/unit/provider/user/hpux_spec.rb +25 -0
  857. data/spec/unit/provider/user/ldap_spec.rb +279 -0
  858. data/spec/unit/provider/user/user_role_add_spec.rb +249 -0
  859. data/spec/unit/provider/user/useradd_spec.rb +115 -0
  860. data/spec/unit/provider/zfs/solaris_spec.rb +99 -0
  861. data/spec/unit/provider/zone/solaris_spec.rb +55 -0
  862. data/spec/unit/provider/zpool/solaris_spec.rb +179 -0
  863. data/spec/unit/provider_spec.rb +31 -0
  864. data/spec/unit/puppet_spec.rb +12 -0
  865. data/spec/unit/rails/host_spec.rb +163 -0
  866. data/spec/unit/rails/param_value_spec.rb +49 -0
  867. data/spec/unit/rails/resource_spec.rb +123 -0
  868. data/spec/unit/rails_spec.rb +258 -0
  869. data/spec/unit/relationship_spec.rb +236 -0
  870. data/spec/unit/reports/http_spec.rb +56 -0
  871. data/spec/unit/reports/tagmail_spec.rb +94 -0
  872. data/spec/unit/reports_spec.rb +61 -0
  873. data/spec/unit/resource/catalog_spec.rb +1078 -0
  874. data/spec/unit/resource/status_spec.rb +103 -0
  875. data/spec/unit/resource/type_collection_helper_spec.rb +25 -0
  876. data/spec/unit/resource/type_collection_spec.rb +432 -0
  877. data/spec/unit/resource/type_spec.rb +722 -0
  878. data/spec/unit/resource_spec.rb +818 -0
  879. data/spec/unit/run_spec.rb +137 -0
  880. data/spec/unit/simple_graph_spec.rb +544 -0
  881. data/spec/unit/ssl/base_spec.rb +43 -0
  882. data/spec/unit/ssl/certificate_authority/interface_spec.rb +333 -0
  883. data/spec/unit/ssl/certificate_authority_spec.rb +772 -0
  884. data/spec/unit/ssl/certificate_factory_spec.rb +107 -0
  885. data/spec/unit/ssl/certificate_request_spec.rb +220 -0
  886. data/spec/unit/ssl/certificate_revocation_list_spec.rb +168 -0
  887. data/spec/unit/ssl/certificate_spec.rb +124 -0
  888. data/spec/unit/ssl/host_spec.rb +707 -0
  889. data/spec/unit/ssl/inventory_spec.rb +180 -0
  890. data/spec/unit/ssl/key_spec.rb +198 -0
  891. data/spec/unit/status_spec.rb +31 -0
  892. data/spec/unit/transaction/change_spec.rb +193 -0
  893. data/spec/unit/transaction/event_manager_spec.rb +260 -0
  894. data/spec/unit/transaction/event_spec.rb +108 -0
  895. data/spec/unit/transaction/report_spec.rb +234 -0
  896. data/spec/unit/transaction/resource_harness_spec.rb +401 -0
  897. data/spec/unit/transaction_spec.rb +452 -0
  898. data/spec/unit/transportable_spec.rb +0 -0
  899. data/spec/unit/type/augeas_spec.rb +122 -0
  900. data/spec/unit/type/component_spec.rb +63 -0
  901. data/spec/unit/type/computer_spec.rb +81 -0
  902. data/spec/unit/type/cron_spec.rb +33 -0
  903. data/spec/unit/type/exec_spec.rb +162 -0
  904. data/spec/unit/type/file/checksum_spec.rb +73 -0
  905. data/spec/unit/type/file/content_spec.rb +460 -0
  906. data/spec/unit/type/file/ensure_spec.rb +84 -0
  907. data/spec/unit/type/file/group_spec.rb +123 -0
  908. data/spec/unit/type/file/owner_spec.rb +150 -0
  909. data/spec/unit/type/file/selinux_spec.rb +83 -0
  910. data/spec/unit/type/file/source_spec.rb +272 -0
  911. data/spec/unit/type/file_spec.rb +1070 -0
  912. data/spec/unit/type/filebucket_spec.rb +74 -0
  913. data/spec/unit/type/group_spec.rb +57 -0
  914. data/spec/unit/type/macauthorization_spec.rb +111 -0
  915. data/spec/unit/type/maillist_spec.rb +42 -0
  916. data/spec/unit/type/mcx_spec.rb +100 -0
  917. data/spec/unit/type/mount_spec.rb +261 -0
  918. data/spec/unit/type/nagios_spec.rb +63 -0
  919. data/spec/unit/type/noop_metaparam_spec.rb +37 -0
  920. data/spec/unit/type/package_spec.rb +240 -0
  921. data/spec/unit/type/resources_spec.rb +102 -0
  922. data/spec/unit/type/schedule_spec.rb +333 -0
  923. data/spec/unit/type/selboolean_spec.rb +45 -0
  924. data/spec/unit/type/selmodule_spec.rb +18 -0
  925. data/spec/unit/type/service_spec.rb +222 -0
  926. data/spec/unit/type/ssh_authorized_key_spec.rb +152 -0
  927. data/spec/unit/type/stage_spec.rb +9 -0
  928. data/spec/unit/type/tidy_spec.rb +424 -0
  929. data/spec/unit/type/user_spec.rb +281 -0
  930. data/spec/unit/type/zfs_spec.rb +45 -0
  931. data/spec/unit/type/zone_spec.rb +60 -0
  932. data/spec/unit/type/zpool_spec.rb +110 -0
  933. data/spec/unit/type_spec.rb +566 -0
  934. data/spec/unit/util/autoload/file_cache_spec.rb +159 -0
  935. data/spec/unit/util/autoload_spec.rb +120 -0
  936. data/spec/unit/util/backups_spec.rb +159 -0
  937. data/spec/unit/util/cache_accumulator_spec.rb +75 -0
  938. data/spec/unit/util/cacher_spec.rb +185 -0
  939. data/spec/unit/util/checksums_spec.rb +153 -0
  940. data/spec/unit/util/command_line_spec.rb +108 -0
  941. data/spec/unit/util/constant_inflector_spec.rb +70 -0
  942. data/spec/unit/util/errors_spec.rb +38 -0
  943. data/spec/unit/util/feature_spec.rb +72 -0
  944. data/spec/unit/util/file_locking_spec.rb +156 -0
  945. data/spec/unit/util/filetype_spec.rb +100 -0
  946. data/spec/unit/util/inline_docs_spec.rb +32 -0
  947. data/spec/unit/util/json_spec.rb +21 -0
  948. data/spec/unit/util/ldap/connection_spec.rb +169 -0
  949. data/spec/unit/util/ldap/generator_spec.rb +54 -0
  950. data/spec/unit/util/ldap/manager_spec.rb +654 -0
  951. data/spec/unit/util/loadedfile_spec.rb +65 -0
  952. data/spec/unit/util/log/destinations_spec.rb +24 -0
  953. data/spec/unit/util/log_spec.rb +215 -0
  954. data/spec/unit/util/logging_spec.rb +95 -0
  955. data/spec/unit/util/metric_spec.rb +95 -0
  956. data/spec/unit/util/monkey_patches_spec.rb +7 -0
  957. data/spec/unit/util/nagios_maker_spec.rb +126 -0
  958. data/spec/unit/util/package_spec.rb +21 -0
  959. data/spec/unit/util/posix_spec.rb +256 -0
  960. data/spec/unit/util/queue/stomp_spec.rb +140 -0
  961. data/spec/unit/util/queue_spec.rb +96 -0
  962. data/spec/unit/util/rdoc/parser_spec.rb +540 -0
  963. data/spec/unit/util/rdoc_spec.rb +165 -0
  964. data/spec/unit/util/reference_serializer_spec.rb +52 -0
  965. data/spec/unit/util/resource_template_spec.rb +58 -0
  966. data/spec/unit/util/run_mode_spec.rb +51 -0
  967. data/spec/unit/util/selinux_spec.rb +278 -0
  968. data/spec/unit/util/settings/file_setting_spec.rb +256 -0
  969. data/spec/unit/util/settings_spec.rb +1099 -0
  970. data/spec/unit/util/storage_spec.rb +235 -0
  971. data/spec/unit/util/tagging_spec.rb +102 -0
  972. data/spec/unit/util/user_attr_spec.rb +47 -0
  973. data/spec/unit/util/warnings_spec.rb +39 -0
  974. data/spec/unit/util/zaml_spec.rb +38 -0
  975. data/tasks/rake/git_workflow.rake +1 -1
  976. data/tasks/rake/sign.rake +2 -2
  977. data/test/certmgr/ca.rb +61 -61
  978. data/test/certmgr/certmgr.rb +292 -283
  979. data/test/certmgr/inventory.rb +44 -42
  980. data/test/certmgr/support.rb +78 -77
  981. data/test/data/providers/ssh_authorized_key/parsed/authorized_keys +1 -1
  982. data/test/data/snippets/hash.pp +33 -0
  983. data/test/language/ast.rb +68 -117
  984. data/test/language/ast/variable.rb +14 -15
  985. data/test/language/functions.rb +404 -463
  986. data/test/language/parser.rb +670 -1135
  987. data/test/language/scope.rb +198 -402
  988. data/test/language/snippets.rb +439 -447
  989. data/test/language/transportable.rb +67 -66
  990. data/test/lib/puppettest.rb +260 -268
  991. data/test/lib/puppettest/certificates.rb +51 -53
  992. data/test/lib/puppettest/exetest.rb +107 -111
  993. data/test/lib/puppettest/fakes.rb +153 -158
  994. data/test/lib/puppettest/fileparsing.rb +17 -17
  995. data/test/lib/puppettest/filetesting.rb +204 -213
  996. data/test/lib/puppettest/parsertesting.rb +382 -365
  997. data/test/lib/puppettest/railstesting.rb +49 -50
  998. data/test/lib/puppettest/reporttesting.rb +10 -10
  999. data/test/lib/puppettest/resourcetesting.rb +45 -36
  1000. data/test/lib/puppettest/runnable_test.rb +36 -28
  1001. data/test/lib/puppettest/servertest.rb +54 -51
  1002. data/test/lib/puppettest/support/assertions.rb +48 -55
  1003. data/test/lib/puppettest/support/helpers.rb +12 -16
  1004. data/test/lib/puppettest/support/resources.rb +23 -25
  1005. data/test/lib/puppettest/support/utils.rb +138 -148
  1006. data/test/lib/puppettest/testcase.rb +15 -17
  1007. data/test/lib/rake/puppet_test_loader.rb +1 -3
  1008. data/test/lib/rake/puppet_testtask.rb +10 -10
  1009. data/test/network/authconfig.rb +48 -50
  1010. data/test/network/authorization.rb +114 -113
  1011. data/test/network/authstore.rb +454 -406
  1012. data/test/network/client/ca.rb +46 -48
  1013. data/test/network/client/dipper.rb +22 -22
  1014. data/test/network/client_request.rb +20 -20
  1015. data/test/network/handler/ca.rb +251 -252
  1016. data/test/network/handler/fileserver.rb +1071 -1001
  1017. data/test/network/handler/master.rb +58 -58
  1018. data/test/network/handler/report.rb +64 -64
  1019. data/test/network/handler/runner.rb +8 -8
  1020. data/test/network/rights.rb +22 -19
  1021. data/test/network/server/mongrel_test.rb +87 -87
  1022. data/test/network/server/webrick.rb +99 -87
  1023. data/test/network/xmlrpc/client.rb +30 -30
  1024. data/test/network/xmlrpc/processor.rb +52 -53
  1025. data/test/network/xmlrpc/server.rb +10 -11
  1026. data/test/network/xmlrpc/webrick_servlet.rb +21 -18
  1027. data/test/other/provider.rb +69 -84
  1028. data/test/other/puppet.rb +61 -76
  1029. data/test/other/relationships.rb +73 -65
  1030. data/test/other/report.rb +88 -187
  1031. data/test/other/transactions.rb +363 -885
  1032. data/test/puppet/defaults.rb +51 -54
  1033. data/test/puppet/errortest.rb +8 -8
  1034. data/test/puppet/tc_suidmanager.rb +106 -103
  1035. data/test/rails/rails.rb +8 -9
  1036. data/test/rails/railsparameter.rb +60 -54
  1037. data/test/ral/manager/attributes.rb +262 -260
  1038. data/test/ral/manager/instances.rb +77 -78
  1039. data/test/ral/manager/manager.rb +36 -36
  1040. data/test/ral/manager/provider.rb +56 -79
  1041. data/test/ral/manager/type.rb +308 -449
  1042. data/test/ral/providers/cron/crontab.rb +561 -545
  1043. data/test/ral/providers/group.rb +203 -212
  1044. data/test/ral/providers/host/parsed.rb +189 -180
  1045. data/test/ral/providers/mailalias/aliases.rb +40 -40
  1046. data/test/ral/providers/nameservice.rb +21 -21
  1047. data/test/ral/providers/package.rb +207 -214
  1048. data/test/ral/providers/package/aptitude.rb +75 -63
  1049. data/test/ral/providers/package/aptrpm.rb +84 -72
  1050. data/test/ral/providers/parsedfile.rb +510 -509
  1051. data/test/ral/providers/port/parsed.rb +5 -5
  1052. data/test/ral/providers/provider.rb +421 -421
  1053. data/test/ral/providers/service/base.rb +59 -53
  1054. data/test/ral/providers/sshkey/parsed.rb +86 -83
  1055. data/test/ral/providers/user.rb +471 -451
  1056. data/test/ral/providers/user/useradd.rb +168 -177
  1057. data/test/ral/type/cron.rb +406 -393
  1058. data/test/ral/type/exec.rb +721 -641
  1059. data/test/ral/type/file.rb +827 -896
  1060. data/test/ral/type/file/target.rb +295 -251
  1061. data/test/ral/type/fileignoresource.rb +232 -205
  1062. data/test/ral/type/filesources.rb +446 -485
  1063. data/test/ral/type/host.rb +124 -153
  1064. data/test/ral/type/mailalias.rb +28 -31
  1065. data/test/ral/type/port.rb +7 -7
  1066. data/test/ral/type/resources.rb +88 -93
  1067. data/test/ral/type/service.rb +19 -19
  1068. data/test/ral/type/sshkey.rb +120 -160
  1069. data/test/ral/type/user.rb +132 -414
  1070. data/test/ral/type/yumrepo.rb +95 -92
  1071. data/test/ral/type/zone.rb +316 -287
  1072. data/test/test +1 -1
  1073. data/test/util/classgen.rb +182 -167
  1074. data/test/util/execution.rb +18 -18
  1075. data/test/util/fileparsing.rb +580 -540
  1076. data/test/util/inifile.rb +117 -106
  1077. data/test/util/instance_loader.rb +29 -29
  1078. data/test/util/log.rb +202 -198
  1079. data/test/util/metrics.rb +51 -51
  1080. data/test/util/package.rb +11 -12
  1081. data/test/util/pidlock.rb +115 -115
  1082. data/test/util/settings.rb +613 -557
  1083. data/test/util/storage.rb +71 -88
  1084. data/test/util/subclass_loader.rb +69 -72
  1085. data/test/util/utiltest.rb +204 -203
  1086. metadata +493 -395
  1087. data/lib/puppet/agent/runner.rb +0 -65
  1088. data/lib/puppet/application/pi.rb +0 -214
  1089. data/lib/puppet/application/puppet.rb +0 -181
  1090. data/lib/puppet/application/puppetca.rb +0 -71
  1091. data/lib/puppet/application/puppetd.rb +0 -250
  1092. data/lib/puppet/application/puppetdoc.rb +0 -224
  1093. data/lib/puppet/application/puppetmasterd.rb +0 -168
  1094. data/lib/puppet/application/puppetqd.rb +0 -96
  1095. data/lib/puppet/application/puppetrun.rb +0 -210
  1096. data/lib/puppet/application/ralsh.rb +0 -152
  1097. data/lib/puppet/checksum.rb +0 -57
  1098. data/lib/puppet/indirector/checksum/file.rb +0 -33
  1099. data/lib/puppet/indirector/runner/rest.rb +0 -7
  1100. data/lib/puppet/network/client/dipper.rb +0 -85
  1101. data/lib/puppet/network/client/resource.rb +0 -38
  1102. data/lib/puppet/network/handler/resource.rb +0 -190
  1103. data/lib/puppet/parser/ast/definition.rb +0 -207
  1104. data/lib/puppet/parser/ast/hostclass.rb +0 -95
  1105. data/lib/puppet/parser/ast/node.rb +0 -42
  1106. data/lib/puppet/parser/interpreter.rb +0 -84
  1107. data/lib/puppet/parser/loaded_code.rb +0 -119
  1108. data/lib/puppet/parser/resource/reference.rb +0 -99
  1109. data/lib/puppet/resource/reference.rb +0 -90
  1110. data/lib/puppet/util/config_store.rb +0 -61
  1111. data/spec/integration/application/puppet.rb +0 -33
  1112. data/spec/integration/bin/puppetmasterd.rb +0 -122
  1113. data/spec/integration/checksum.rb +0 -48
  1114. data/spec/integration/configurer.rb +0 -18
  1115. data/spec/integration/defaults.rb +0 -230
  1116. data/spec/integration/file_serving/content.rb +0 -20
  1117. data/spec/integration/file_serving/fileset.rb +0 -14
  1118. data/spec/integration/file_serving/metadata.rb +0 -21
  1119. data/spec/integration/file_serving/terminus_helper.rb +0 -22
  1120. data/spec/integration/indirector/catalog/compiler.rb +0 -67
  1121. data/spec/integration/indirector/catalog/queue.rb +0 -61
  1122. data/spec/integration/indirector/certificate/rest.rb +0 -70
  1123. data/spec/integration/indirector/certificate_request/rest.rb +0 -88
  1124. data/spec/integration/indirector/certificate_revocation_list/rest.rb +0 -76
  1125. data/spec/integration/indirector/direct_file_server.rb +0 -73
  1126. data/spec/integration/indirector/file_content/file_server.rb +0 -94
  1127. data/spec/integration/indirector/file_metadata/file_server.rb +0 -18
  1128. data/spec/integration/indirector/node/ldap.rb +0 -15
  1129. data/spec/integration/indirector/report/rest.rb +0 -94
  1130. data/spec/integration/indirector/rest.rb +0 -523
  1131. data/spec/integration/network/client.rb +0 -19
  1132. data/spec/integration/network/formats.rb +0 -110
  1133. data/spec/integration/network/handler.rb +0 -25
  1134. data/spec/integration/network/server/mongrel.rb +0 -66
  1135. data/spec/integration/network/server/webrick.rb +0 -86
  1136. data/spec/integration/node.rb +0 -93
  1137. data/spec/integration/node/environment.rb +0 -58
  1138. data/spec/integration/node/facts.rb +0 -47
  1139. data/spec/integration/parser/compiler.rb +0 -29
  1140. data/spec/integration/parser/functions/require.rb +0 -86
  1141. data/spec/integration/provider/mailalias/aliases.rb +0 -25
  1142. data/spec/integration/provider/package.rb +0 -26
  1143. data/spec/integration/provider/service/init.rb +0 -32
  1144. data/spec/integration/reference/providers.rb +0 -17
  1145. data/spec/integration/reports.rb +0 -18
  1146. data/spec/integration/resource/catalog.rb +0 -61
  1147. data/spec/integration/ssl/certificate_authority.rb +0 -135
  1148. data/spec/integration/ssl/certificate_request.rb +0 -61
  1149. data/spec/integration/ssl/certificate_revocation_list.rb +0 -42
  1150. data/spec/integration/ssl/host.rb +0 -90
  1151. data/spec/integration/transaction.rb +0 -66
  1152. data/spec/integration/transaction/report.rb +0 -29
  1153. data/spec/integration/type.rb +0 -22
  1154. data/spec/integration/type/file.rb +0 -477
  1155. data/spec/integration/type/package.rb +0 -25
  1156. data/spec/integration/type/tidy.rb +0 -27
  1157. data/spec/integration/util/autoload.rb +0 -114
  1158. data/spec/integration/util/feature.rb +0 -54
  1159. data/spec/integration/util/file_locking.rb +0 -37
  1160. data/spec/integration/util/settings.rb +0 -27
  1161. data/spec/unit/agent.rb +0 -259
  1162. data/spec/unit/agent/locker.rb +0 -100
  1163. data/spec/unit/agent/runner.rb +0 -118
  1164. data/spec/unit/application.rb +0 -420
  1165. data/spec/unit/application/filebucket.rb +0 -220
  1166. data/spec/unit/application/pi.rb +0 -84
  1167. data/spec/unit/application/puppet.rb +0 -399
  1168. data/spec/unit/application/puppetca.rb +0 -142
  1169. data/spec/unit/application/puppetd.rb +0 -502
  1170. data/spec/unit/application/puppetdoc.rb +0 -360
  1171. data/spec/unit/application/puppetmasterd.rb +0 -457
  1172. data/spec/unit/application/puppetqd.rb +0 -186
  1173. data/spec/unit/application/puppetrun.rb +0 -289
  1174. data/spec/unit/application/ralsh.rb +0 -254
  1175. data/spec/unit/configurer.rb +0 -339
  1176. data/spec/unit/configurer/downloader.rb +0 -188
  1177. data/spec/unit/configurer/fact_handler.rb +0 -164
  1178. data/spec/unit/configurer/plugin_handler.rb +0 -112
  1179. data/spec/unit/daemon.rb +0 -287
  1180. data/spec/unit/file_collection.rb +0 -53
  1181. data/spec/unit/file_collection/lookup.rb +0 -46
  1182. data/spec/unit/file_serving/base.rb +0 -132
  1183. data/spec/unit/file_serving/configuration.rb +0 -249
  1184. data/spec/unit/file_serving/configuration/parser.rb +0 -181
  1185. data/spec/unit/file_serving/content.rb +0 -110
  1186. data/spec/unit/file_serving/fileset.rb +0 -347
  1187. data/spec/unit/file_serving/indirection_hooks.rb +0 -63
  1188. data/spec/unit/file_serving/metadata.rb +0 -286
  1189. data/spec/unit/file_serving/mount.rb +0 -32
  1190. data/spec/unit/file_serving/mount/file.rb +0 -196
  1191. data/spec/unit/file_serving/mount/modules.rb +0 -63
  1192. data/spec/unit/file_serving/mount/plugins.rb +0 -61
  1193. data/spec/unit/file_serving/terminus_helper.rb +0 -98
  1194. data/spec/unit/indirector.rb +0 -157
  1195. data/spec/unit/indirector/active_record.rb +0 -76
  1196. data/spec/unit/indirector/catalog/active_record.rb +0 -141
  1197. data/spec/unit/indirector/catalog/compiler.rb +0 -261
  1198. data/spec/unit/indirector/catalog/queue.rb +0 -20
  1199. data/spec/unit/indirector/catalog/rest.rb +0 -11
  1200. data/spec/unit/indirector/catalog/yaml.rb +0 -25
  1201. data/spec/unit/indirector/certificate/ca.rb +0 -28
  1202. data/spec/unit/indirector/certificate/file.rb +0 -28
  1203. data/spec/unit/indirector/certificate/rest.rb +0 -57
  1204. data/spec/unit/indirector/certificate_request/ca.rb +0 -19
  1205. data/spec/unit/indirector/certificate_request/file.rb +0 -19
  1206. data/spec/unit/indirector/certificate_request/rest.rb +0 -23
  1207. data/spec/unit/indirector/certificate_revocation_list/ca.rb +0 -21
  1208. data/spec/unit/indirector/certificate_revocation_list/file.rb +0 -20
  1209. data/spec/unit/indirector/certificate_revocation_list/rest.rb +0 -23
  1210. data/spec/unit/indirector/checksum/file.rb +0 -139
  1211. data/spec/unit/indirector/code.rb +0 -33
  1212. data/spec/unit/indirector/direct_file_server.rb +0 -84
  1213. data/spec/unit/indirector/envelope.rb +0 -47
  1214. data/spec/unit/indirector/exec.rb +0 -56
  1215. data/spec/unit/indirector/facts/active_record.rb +0 -104
  1216. data/spec/unit/indirector/facts/facter.rb +0 -142
  1217. data/spec/unit/indirector/facts/rest.rb +0 -11
  1218. data/spec/unit/indirector/facts/yaml.rb +0 -26
  1219. data/spec/unit/indirector/file.rb +0 -161
  1220. data/spec/unit/indirector/file_content/file.rb +0 -18
  1221. data/spec/unit/indirector/file_content/file_server.rb +0 -18
  1222. data/spec/unit/indirector/file_content/rest.rb +0 -11
  1223. data/spec/unit/indirector/file_metadata/file.rb +0 -52
  1224. data/spec/unit/indirector/file_metadata/file_server.rb +0 -18
  1225. data/spec/unit/indirector/file_metadata/rest.rb +0 -9
  1226. data/spec/unit/indirector/file_server.rb +0 -267
  1227. data/spec/unit/indirector/indirection.rb +0 -795
  1228. data/spec/unit/indirector/key/ca.rb +0 -28
  1229. data/spec/unit/indirector/key/file.rb +0 -104
  1230. data/spec/unit/indirector/ldap.rb +0 -143
  1231. data/spec/unit/indirector/memory.rb +0 -29
  1232. data/spec/unit/indirector/node/active_record.rb +0 -34
  1233. data/spec/unit/indirector/node/exec.rb +0 -69
  1234. data/spec/unit/indirector/node/ldap.rb +0 -458
  1235. data/spec/unit/indirector/node/memory.rb +0 -19
  1236. data/spec/unit/indirector/node/plain.rb +0 -19
  1237. data/spec/unit/indirector/node/rest.rb +0 -13
  1238. data/spec/unit/indirector/node/yaml.rb +0 -25
  1239. data/spec/unit/indirector/plain.rb +0 -29
  1240. data/spec/unit/indirector/queue.rb +0 -123
  1241. data/spec/unit/indirector/report/processor.rb +0 -81
  1242. data/spec/unit/indirector/report/rest.rb +0 -28
  1243. data/spec/unit/indirector/request.rb +0 -308
  1244. data/spec/unit/indirector/rest.rb +0 -403
  1245. data/spec/unit/indirector/runner/rest.rb +0 -11
  1246. data/spec/unit/indirector/ssl_file.rb +0 -280
  1247. data/spec/unit/indirector/terminus.rb +0 -245
  1248. data/spec/unit/indirector/yaml.rb +0 -145
  1249. data/spec/unit/module.rb +0 -247
  1250. data/spec/unit/network/authconfig.rb +0 -292
  1251. data/spec/unit/network/authstore.rb +0 -370
  1252. data/spec/unit/network/client.rb +0 -45
  1253. data/spec/unit/network/client/dipper.rb +0 -16
  1254. data/spec/unit/network/format.rb +0 -191
  1255. data/spec/unit/network/format_handler.rb +0 -327
  1256. data/spec/unit/network/formats.rb +0 -365
  1257. data/spec/unit/network/handler/fileserver.rb +0 -176
  1258. data/spec/unit/network/http.rb +0 -35
  1259. data/spec/unit/network/http/api/v1.rb +0 -122
  1260. data/spec/unit/network/http/handler.rb +0 -458
  1261. data/spec/unit/network/http/mongrel.rb +0 -131
  1262. data/spec/unit/network/http/mongrel/rest.rb +0 -232
  1263. data/spec/unit/network/http/rack.rb +0 -102
  1264. data/spec/unit/network/http/rack/rest.rb +0 -199
  1265. data/spec/unit/network/http/rack/xmlrpc.rb +0 -157
  1266. data/spec/unit/network/http/webrick.rb +0 -339
  1267. data/spec/unit/network/http/webrick/rest.rb +0 -157
  1268. data/spec/unit/network/http_pool.rb +0 -206
  1269. data/spec/unit/network/rest_authconfig.rb +0 -146
  1270. data/spec/unit/network/rest_authorization.rb +0 -43
  1271. data/spec/unit/network/rights.rb +0 -519
  1272. data/spec/unit/network/server.rb +0 -534
  1273. data/spec/unit/network/xmlrpc/client.rb +0 -171
  1274. data/spec/unit/node.rb +0 -200
  1275. data/spec/unit/node/environment.rb +0 -187
  1276. data/spec/unit/node/facts.rb +0 -97
  1277. data/spec/unit/other/checksum.rb +0 -92
  1278. data/spec/unit/other/selinux.rb +0 -85
  1279. data/spec/unit/other/transbucket.rb +0 -188
  1280. data/spec/unit/other/transobject.rb +0 -112
  1281. data/spec/unit/parameter.rb +0 -405
  1282. data/spec/unit/parser/ast.rb +0 -41
  1283. data/spec/unit/parser/ast/arithmetic_operator.rb +0 -73
  1284. data/spec/unit/parser/ast/astarray.rb +0 -72
  1285. data/spec/unit/parser/ast/boolean_operator.rb +0 -53
  1286. data/spec/unit/parser/ast/casestatement.rb +0 -135
  1287. data/spec/unit/parser/ast/collection.rb +0 -63
  1288. data/spec/unit/parser/ast/collexpr.rb +0 -115
  1289. data/spec/unit/parser/ast/comparison_operator.rb +0 -92
  1290. data/spec/unit/parser/ast/definition.rb +0 -213
  1291. data/spec/unit/parser/ast/function.rb +0 -83
  1292. data/spec/unit/parser/ast/hostclass.rb +0 -148
  1293. data/spec/unit/parser/ast/ifstatement.rb +0 -76
  1294. data/spec/unit/parser/ast/leaf.rb +0 -298
  1295. data/spec/unit/parser/ast/match_operator.rb +0 -50
  1296. data/spec/unit/parser/ast/minus.rb +0 -36
  1297. data/spec/unit/parser/ast/node.rb +0 -145
  1298. data/spec/unit/parser/ast/nop.rb +0 -20
  1299. data/spec/unit/parser/ast/not.rb +0 -30
  1300. data/spec/unit/parser/ast/resource.rb +0 -103
  1301. data/spec/unit/parser/ast/resource_override.rb +0 -51
  1302. data/spec/unit/parser/ast/resource_reference.rb +0 -69
  1303. data/spec/unit/parser/ast/selector.rb +0 -155
  1304. data/spec/unit/parser/ast/vardef.rb +0 -47
  1305. data/spec/unit/parser/collector.rb +0 -556
  1306. data/spec/unit/parser/compiler.rb +0 -604
  1307. data/spec/unit/parser/files.rb +0 -190
  1308. data/spec/unit/parser/functions.rb +0 -83
  1309. data/spec/unit/parser/functions/fqdn_rand.rb +0 -62
  1310. data/spec/unit/parser/functions/generate.rb +0 -41
  1311. data/spec/unit/parser/functions/inline_template.rb +0 -59
  1312. data/spec/unit/parser/functions/realize.rb +0 -51
  1313. data/spec/unit/parser/functions/regsubst.rb +0 -168
  1314. data/spec/unit/parser/functions/require.rb +0 -69
  1315. data/spec/unit/parser/functions/shellquote.rb +0 -92
  1316. data/spec/unit/parser/functions/split.rb +0 -51
  1317. data/spec/unit/parser/functions/sprintf.rb +0 -42
  1318. data/spec/unit/parser/functions/template.rb +0 -62
  1319. data/spec/unit/parser/functions/versioncmp.rb +0 -29
  1320. data/spec/unit/parser/interpreter.rb +0 -147
  1321. data/spec/unit/parser/lexer.rb +0 -731
  1322. data/spec/unit/parser/loaded_code.rb +0 -215
  1323. data/spec/unit/parser/parser.rb +0 -423
  1324. data/spec/unit/parser/resource.rb +0 -529
  1325. data/spec/unit/parser/resource/reference.rb +0 -111
  1326. data/spec/unit/parser/scope.rb +0 -387
  1327. data/spec/unit/parser/templatewrapper.rb +0 -134
  1328. data/spec/unit/property.rb +0 -305
  1329. data/spec/unit/property/keyvalue.rb +0 -168
  1330. data/spec/unit/property/list.rb +0 -166
  1331. data/spec/unit/property/ordered_list.rb +0 -64
  1332. data/spec/unit/provider.rb +0 -31
  1333. data/spec/unit/provider/augeas/augeas.rb +0 -413
  1334. data/spec/unit/provider/confine.rb +0 -78
  1335. data/spec/unit/provider/confine/exists.rb +0 -81
  1336. data/spec/unit/provider/confine/false.rb +0 -53
  1337. data/spec/unit/provider/confine/feature.rb +0 -60
  1338. data/spec/unit/provider/confine/true.rb +0 -53
  1339. data/spec/unit/provider/confine/variable.rb +0 -107
  1340. data/spec/unit/provider/confine_collection.rb +0 -134
  1341. data/spec/unit/provider/confiner.rb +0 -63
  1342. data/spec/unit/provider/group/groupadd.rb +0 -31
  1343. data/spec/unit/provider/group/ldap.rb +0 -105
  1344. data/spec/unit/provider/ldap.rb +0 -248
  1345. data/spec/unit/provider/macauthorization.rb +0 -147
  1346. data/spec/unit/provider/mcx/mcxcontent.rb +0 -175
  1347. data/spec/unit/provider/mount.rb +0 -130
  1348. data/spec/unit/provider/mount/parsed.rb +0 -194
  1349. data/spec/unit/provider/naginator.rb +0 -58
  1350. data/spec/unit/provider/package/apt.rb +0 -138
  1351. data/spec/unit/provider/package/dpkg.rb +0 -170
  1352. data/spec/unit/provider/package/gem.rb +0 -87
  1353. data/spec/unit/provider/package/hpux.rb +0 -52
  1354. data/spec/unit/provider/package/pkgdmg.rb +0 -73
  1355. data/spec/unit/provider/parsedfile.rb +0 -95
  1356. data/spec/unit/provider/selboolean.rb +0 -37
  1357. data/spec/unit/provider/selmodule.rb +0 -66
  1358. data/spec/unit/provider/service/daemontools.rb +0 -166
  1359. data/spec/unit/provider/service/debian.rb +0 -89
  1360. data/spec/unit/provider/service/init.rb +0 -121
  1361. data/spec/unit/provider/service/launchd.rb +0 -200
  1362. data/spec/unit/provider/service/redhat.rb +0 -96
  1363. data/spec/unit/provider/service/runit.rb +0 -140
  1364. data/spec/unit/provider/ssh_authorized_key/parsed.rb +0 -206
  1365. data/spec/unit/provider/sshkey/parsed.rb +0 -38
  1366. data/spec/unit/provider/user/hpux.rb +0 -25
  1367. data/spec/unit/provider/user/ldap.rb +0 -279
  1368. data/spec/unit/provider/user/user_role_add.rb +0 -249
  1369. data/spec/unit/provider/user/useradd.rb +0 -115
  1370. data/spec/unit/provider/zfs/solaris.rb +0 -99
  1371. data/spec/unit/provider/zone/solaris.rb +0 -42
  1372. data/spec/unit/provider/zpool/solaris.rb +0 -179
  1373. data/spec/unit/rails.rb +0 -133
  1374. data/spec/unit/rails/host.rb +0 -163
  1375. data/spec/unit/rails/param_value.rb +0 -49
  1376. data/spec/unit/rails/resource.rb +0 -107
  1377. data/spec/unit/relationship.rb +0 -236
  1378. data/spec/unit/reports.rb +0 -61
  1379. data/spec/unit/resource.rb +0 -495
  1380. data/spec/unit/resource/catalog.rb +0 -1053
  1381. data/spec/unit/resource/reference.rb +0 -111
  1382. data/spec/unit/simple_graph.rb +0 -551
  1383. data/spec/unit/ssl/certificate.rb +0 -124
  1384. data/spec/unit/ssl/certificate_authority.rb +0 -741
  1385. data/spec/unit/ssl/certificate_authority/interface.rb +0 -269
  1386. data/spec/unit/ssl/certificate_factory.rb +0 -107
  1387. data/spec/unit/ssl/certificate_request.rb +0 -193
  1388. data/spec/unit/ssl/certificate_revocation_list.rb +0 -168
  1389. data/spec/unit/ssl/host.rb +0 -704
  1390. data/spec/unit/ssl/inventory.rb +0 -180
  1391. data/spec/unit/ssl/key.rb +0 -198
  1392. data/spec/unit/transaction.rb +0 -146
  1393. data/spec/unit/transaction/change.rb +0 -187
  1394. data/spec/unit/transaction/event.rb +0 -25
  1395. data/spec/unit/transaction/report.rb +0 -40
  1396. data/spec/unit/type.rb +0 -426
  1397. data/spec/unit/type/augeas.rb +0 -106
  1398. data/spec/unit/type/component.rb +0 -63
  1399. data/spec/unit/type/computer.rb +0 -78
  1400. data/spec/unit/type/cron.rb +0 -33
  1401. data/spec/unit/type/exec.rb +0 -116
  1402. data/spec/unit/type/file.rb +0 -810
  1403. data/spec/unit/type/file/checksum.rb +0 -28
  1404. data/spec/unit/type/file/content.rb +0 -297
  1405. data/spec/unit/type/file/ensure.rb +0 -84
  1406. data/spec/unit/type/file/group.rb +0 -123
  1407. data/spec/unit/type/file/owner.rb +0 -143
  1408. data/spec/unit/type/file/selinux.rb +0 -84
  1409. data/spec/unit/type/file/source.rb +0 -264
  1410. data/spec/unit/type/filebucket.rb +0 -74
  1411. data/spec/unit/type/group.rb +0 -39
  1412. data/spec/unit/type/macauthorization.rb +0 -111
  1413. data/spec/unit/type/maillist.rb +0 -42
  1414. data/spec/unit/type/mcx.rb +0 -100
  1415. data/spec/unit/type/mount.rb +0 -211
  1416. data/spec/unit/type/nagios.rb +0 -63
  1417. data/spec/unit/type/noop_metaparam.rb +0 -37
  1418. data/spec/unit/type/package.rb +0 -236
  1419. data/spec/unit/type/resources.rb +0 -89
  1420. data/spec/unit/type/schedule.rb +0 -333
  1421. data/spec/unit/type/selboolean.rb +0 -45
  1422. data/spec/unit/type/selmodule.rb +0 -18
  1423. data/spec/unit/type/service.rb +0 -230
  1424. data/spec/unit/type/ssh_authorized_key.rb +0 -140
  1425. data/spec/unit/type/tidy.rb +0 -422
  1426. data/spec/unit/type/user.rb +0 -285
  1427. data/spec/unit/type/zfs.rb +0 -45
  1428. data/spec/unit/type/zone.rb +0 -20
  1429. data/spec/unit/type/zpool.rb +0 -110
  1430. data/spec/unit/util/autoload.rb +0 -133
  1431. data/spec/unit/util/autoload/file_cache.rb +0 -183
  1432. data/spec/unit/util/backups.rb +0 -159
  1433. data/spec/unit/util/cache_accumulator.rb +0 -69
  1434. data/spec/unit/util/cacher.rb +0 -185
  1435. data/spec/unit/util/checksums.rb +0 -113
  1436. data/spec/unit/util/constant_inflector.rb +0 -70
  1437. data/spec/unit/util/feature.rb +0 -72
  1438. data/spec/unit/util/file_locking.rb +0 -115
  1439. data/spec/unit/util/filetype.rb +0 -100
  1440. data/spec/unit/util/json.rb +0 -21
  1441. data/spec/unit/util/ldap/connection.rb +0 -169
  1442. data/spec/unit/util/ldap/generator.rb +0 -54
  1443. data/spec/unit/util/ldap/manager.rb +0 -654
  1444. data/spec/unit/util/loadedfile.rb +0 -65
  1445. data/spec/unit/util/log.rb +0 -202
  1446. data/spec/unit/util/metric.rb +0 -95
  1447. data/spec/unit/util/monkey_patches.rb +0 -103
  1448. data/spec/unit/util/nagios_maker.rb +0 -126
  1449. data/spec/unit/util/package.rb +0 -21
  1450. data/spec/unit/util/posix.rb +0 -256
  1451. data/spec/unit/util/queue.rb +0 -96
  1452. data/spec/unit/util/queue/stomp.rb +0 -140
  1453. data/spec/unit/util/reference_serializer.rb +0 -52
  1454. data/spec/unit/util/resource_template.rb +0 -58
  1455. data/spec/unit/util/selinux.rb +0 -280
  1456. data/spec/unit/util/settings.rb +0 -1058
  1457. data/spec/unit/util/settings/file_setting.rb +0 -248
  1458. data/spec/unit/util/storage.rb +0 -248
  1459. data/spec/unit/util/tagging.rb +0 -102
  1460. data/spec/unit/util/user_attr.rb +0 -47
  1461. data/spec/unit/util/warnings.rb +0 -39
  1462. data/spec/unit/util/zaml.rb +0 -38
  1463. data/test/language/ast/casestatement.rb +0 -103
  1464. data/test/language/ast/resource.rb +0 -58
  1465. data/test/language/ast/resource_reference.rb +0 -77
  1466. data/test/language/ast/selector.rb +0 -61
  1467. data/test/language/resource.rb +0 -172
  1468. data/test/lib/puppettest/support/collection.rb +0 -29
  1469. data/test/network/client/resource.rb +0 -52
  1470. data/test/network/handler/bucket.rb +0 -313
  1471. data/test/network/handler/resource.rb +0 -250
  1472. data/test/other/dsl.rb +0 -215
  1473. data/test/other/events.rb +0 -124
  1474. data/test/ral/type/group.rb +0 -170
@@ -0,0 +1,256 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../../spec_helper'
4
+
5
+ require 'puppet/util/settings'
6
+ require 'puppet/util/settings/file_setting'
7
+
8
+ describe Puppet::Util::Settings::FileSetting do
9
+ FileSetting = Puppet::Util::Settings::FileSetting
10
+
11
+ before do
12
+ @basepath = Puppet.features.posix? ? "/somepath" : "C:/somepath"
13
+ end
14
+
15
+ describe "when determining whether the service user should be used" do
16
+ before do
17
+ @settings = mock 'settings'
18
+ @settings.stubs(:[]).with(:mkusers).returns false
19
+ @settings.stubs(:service_user_available?).returns true
20
+ end
21
+
22
+ it "should be true if the service user is available" do
23
+ @settings.expects(:service_user_available?).returns true
24
+ setting = FileSetting.new(:settings => @settings, :owner => "root", :desc => "a setting")
25
+ setting.should be_use_service_user
26
+ end
27
+
28
+ it "should be true if 'mkusers' is set" do
29
+ @settings.expects(:[]).with(:mkusers).returns true
30
+ setting = FileSetting.new(:settings => @settings, :owner => "root", :desc => "a setting")
31
+ setting.should be_use_service_user
32
+ end
33
+
34
+ it "should be false if the service user is not available and 'mkusers' is unset" do
35
+ setting = FileSetting.new(:settings => @settings, :owner => "root", :desc => "a setting")
36
+ setting.should be_use_service_user
37
+ end
38
+ end
39
+
40
+ describe "when setting the owner" do
41
+ it "should allow the file to be owned by root" do
42
+ root_owner = lambda { FileSetting.new(:settings => mock("settings"), :owner => "root", :desc => "a setting") }
43
+ root_owner.should_not raise_error
44
+ end
45
+
46
+ it "should allow the file to be owned by the service user" do
47
+ service_owner = lambda { FileSetting.new(:settings => mock("settings"), :owner => "service", :desc => "a setting") }
48
+ service_owner.should_not raise_error
49
+ end
50
+
51
+ it "should allow the ownership of the file to be unspecified" do
52
+ no_owner = lambda { FileSetting.new(:settings => mock("settings"), :desc => "a setting") }
53
+ no_owner.should_not raise_error
54
+ end
55
+
56
+ it "should not allow other owners" do
57
+ invalid_owner = lambda { FileSetting.new(:settings => mock("settings"), :owner => "invalid", :desc => "a setting") }
58
+ invalid_owner.should raise_error(FileSetting::SettingError)
59
+ end
60
+ end
61
+
62
+ describe "when reading the owner" do
63
+ it "should be root when the setting specifies root" do
64
+ setting = FileSetting.new(:settings => mock("settings"), :owner => "root", :desc => "a setting")
65
+ setting.owner.should == "root"
66
+ end
67
+
68
+ it "should be the owner of the service when the setting specifies service and the service user should be used" do
69
+ settings = mock("settings")
70
+ settings.stubs(:[]).returns "the_service"
71
+
72
+ setting = FileSetting.new(:settings => settings, :owner => "service", :desc => "a setting")
73
+ setting.expects(:use_service_user?).returns true
74
+ setting.owner.should == "the_service"
75
+ end
76
+
77
+ it "should be the root when the setting specifies service and the service user should not be used" do
78
+ settings = mock("settings")
79
+ settings.stubs(:[]).returns "the_service"
80
+
81
+ setting = FileSetting.new(:settings => settings, :owner => "service", :desc => "a setting")
82
+ setting.expects(:use_service_user?).returns false
83
+ setting.owner.should == "root"
84
+ end
85
+
86
+ it "should be nil when the owner is unspecified" do
87
+ FileSetting.new(:settings => mock("settings"), :desc => "a setting").owner.should be_nil
88
+ end
89
+ end
90
+
91
+ describe "when setting the group" do
92
+ it "should allow the group to be service" do
93
+ service_group = lambda { FileSetting.new(:settings => mock("settings"), :group => "service", :desc => "a setting") }
94
+ service_group.should_not raise_error
95
+ end
96
+
97
+ it "should allow the group to be unspecified" do
98
+ no_group = lambda { FileSetting.new(:settings => mock("settings"), :desc => "a setting") }
99
+ no_group.should_not raise_error
100
+ end
101
+
102
+ it "should not allow invalid groups" do
103
+ invalid_group = lambda { FileSetting.new(:settings => mock("settings"), :group => "invalid", :desc => "a setting") }
104
+ invalid_group.should raise_error(FileSetting::SettingError)
105
+ end
106
+ end
107
+
108
+ describe "when reading the group" do
109
+ it "should be service when the setting specifies service" do
110
+ setting = FileSetting.new(:settings => mock("settings", :[] => "the_service"), :group => "service", :desc => "a setting")
111
+ setting.group.should == "the_service"
112
+ end
113
+
114
+ it "should be nil when the group is unspecified" do
115
+ FileSetting.new(:settings => mock("settings"), :desc => "a setting").group.should be_nil
116
+ end
117
+ end
118
+
119
+ it "should be able to be converted into a resource" do
120
+ FileSetting.new(:settings => mock("settings"), :desc => "eh").should respond_to(:to_resource)
121
+ end
122
+
123
+ describe "when being converted to a resource" do
124
+ before do
125
+ @settings = mock 'settings'
126
+ @file = Puppet::Util::Settings::FileSetting.new(:settings => @settings, :desc => "eh", :name => :mydir, :section => "mysect")
127
+ @settings.stubs(:value).with(:mydir).returns @basepath
128
+ end
129
+
130
+ it "should skip files that cannot determine their types" do
131
+ @file.expects(:type).returns nil
132
+ @file.to_resource.should be_nil
133
+ end
134
+
135
+ it "should skip non-existent files if 'create_files' is not enabled" do
136
+ @file.expects(:create_files?).returns false
137
+ @file.expects(:type).returns :file
138
+ File.expects(:exist?).with(@basepath).returns false
139
+ @file.to_resource.should be_nil
140
+ end
141
+
142
+ it "should manage existent files even if 'create_files' is not enabled" do
143
+ @file.expects(:create_files?).returns false
144
+ @file.expects(:type).returns :file
145
+ File.expects(:exist?).with(@basepath).returns true
146
+ @file.to_resource.should be_instance_of(Puppet::Resource)
147
+ end
148
+
149
+ describe "on POSIX systems" do
150
+ confine "no /dev on Microsoft Windows" => Puppet.features.posix?
151
+
152
+ it "should skip files in /dev" do
153
+ @settings.stubs(:value).with(:mydir).returns "/dev/file"
154
+ @file.to_resource.should be_nil
155
+ end
156
+ end
157
+
158
+ it "should skip files whose paths are not strings" do
159
+ @settings.stubs(:value).with(:mydir).returns :foo
160
+ @file.to_resource.should be_nil
161
+ end
162
+
163
+ it "should return a file resource with the path set appropriately" do
164
+ resource = @file.to_resource
165
+ resource.type.should == "File"
166
+ resource.title.should == @basepath
167
+ end
168
+
169
+ it "should fully qualified returned files if necessary (#795)" do
170
+ @settings.stubs(:value).with(:mydir).returns "myfile"
171
+ @file.to_resource.title.should == File.join(Dir.getwd, "myfile")
172
+ end
173
+
174
+ it "should set the mode on the file if a mode is provided" do
175
+ @file.mode = 0755
176
+
177
+ @file.to_resource[:mode].should == 0755
178
+ end
179
+
180
+ it "should not set the mode on a the file if manage_internal_file_permissions is disabled" do
181
+ Puppet[:manage_internal_file_permissions] = false
182
+
183
+ @file.stubs(:mode).returns(0755)
184
+
185
+ @file.to_resource[:mode].should == nil
186
+ end
187
+
188
+ it "should set the owner if running as root and the owner is provided" do
189
+ Puppet.features.expects(:root?).returns true
190
+ @file.stubs(:owner).returns "foo"
191
+ @file.to_resource[:owner].should == "foo"
192
+ end
193
+
194
+ it "should not set the owner if manage_internal_file_permissions is disabled" do
195
+ Puppet[:manage_internal_file_permissions] = false
196
+ Puppet.features.stubs(:root?).returns true
197
+ @file.stubs(:owner).returns "foo"
198
+
199
+ @file.to_resource[:owner].should == nil
200
+ end
201
+
202
+ it "should set the group if running as root and the group is provided" do
203
+ Puppet.features.expects(:root?).returns true
204
+ @file.stubs(:group).returns "foo"
205
+ @file.to_resource[:group].should == "foo"
206
+ end
207
+
208
+ it "should not set the group if manage_internal_file_permissions is disabled" do
209
+ Puppet[:manage_internal_file_permissions] = false
210
+ Puppet.features.stubs(:root?).returns true
211
+ @file.stubs(:group).returns "foo"
212
+
213
+ @file.to_resource[:group].should == nil
214
+ end
215
+
216
+
217
+ it "should not set owner if not running as root" do
218
+ Puppet.features.expects(:root?).returns false
219
+ @file.stubs(:owner).returns "foo"
220
+ @file.to_resource[:owner].should be_nil
221
+ end
222
+
223
+ it "should not set group if not running as root" do
224
+ Puppet.features.expects(:root?).returns false
225
+ @file.stubs(:group).returns "foo"
226
+ @file.to_resource[:group].should be_nil
227
+ end
228
+
229
+ it "should set :ensure to the file type" do
230
+ @file.expects(:type).returns :directory
231
+ @file.to_resource[:ensure].should == :directory
232
+ end
233
+
234
+ it "should set the loglevel to :debug" do
235
+ @file.to_resource[:loglevel].should == :debug
236
+ end
237
+
238
+ it "should set the backup to false" do
239
+ @file.to_resource[:backup].should be_false
240
+ end
241
+
242
+ it "should tag the resource with the settings section" do
243
+ @file.expects(:section).returns "mysect"
244
+ @file.to_resource.should be_tagged("mysect")
245
+ end
246
+
247
+ it "should tag the resource with the setting name" do
248
+ @file.to_resource.should be_tagged("mydir")
249
+ end
250
+
251
+ it "should tag the resource with 'settings'" do
252
+ @file.to_resource.should be_tagged("settings")
253
+ end
254
+ end
255
+ end
256
+
@@ -0,0 +1,1099 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ describe Puppet::Util::Settings do
6
+ describe "when specifying defaults" do
7
+ before do
8
+ @settings = Puppet::Util::Settings.new
9
+ end
10
+
11
+ it "should start with no defined parameters" do
12
+ @settings.params.length.should == 0
13
+ end
14
+
15
+ it "should allow specification of default values associated with a section as an array" do
16
+ @settings.setdefaults(:section, :myvalue => ["defaultval", "my description"])
17
+ end
18
+
19
+ it "should not allow duplicate parameter specifications" do
20
+ @settings.setdefaults(:section, :myvalue => ["a", "b"])
21
+ lambda { @settings.setdefaults(:section, :myvalue => ["c", "d"]) }.should raise_error(ArgumentError)
22
+ end
23
+
24
+ it "should allow specification of default values associated with a section as a hash" do
25
+ @settings.setdefaults(:section, :myvalue => {:default => "defaultval", :desc => "my description"})
26
+ end
27
+
28
+ it "should consider defined parameters to be valid" do
29
+ @settings.setdefaults(:section, :myvalue => ["defaultval", "my description"])
30
+ @settings.valid?(:myvalue).should be_true
31
+ end
32
+
33
+ it "should require a description when defaults are specified with an array" do
34
+ lambda { @settings.setdefaults(:section, :myvalue => ["a value"]) }.should raise_error(ArgumentError)
35
+ end
36
+
37
+ it "should require a description when defaults are specified with a hash" do
38
+ lambda { @settings.setdefaults(:section, :myvalue => {:default => "a value"}) }.should raise_error(ArgumentError)
39
+ end
40
+
41
+ it "should raise an error if we can't guess the type" do
42
+ lambda { @settings.setdefaults(:section, :myvalue => {:default => Object.new, :desc => "An impossible object"}) }.should raise_error(ArgumentError)
43
+ end
44
+
45
+ it "should support specifying owner, group, and mode when specifying files" do
46
+ @settings.setdefaults(:section, :myvalue => {:default => "/some/file", :owner => "service", :mode => "boo", :group => "service", :desc => "whatever"})
47
+ end
48
+
49
+ it "should support specifying a short name" do
50
+ @settings.setdefaults(:section, :myvalue => {:default => "w", :desc => "b", :short => "m"})
51
+ end
52
+
53
+ it "should support specifying the setting type" do
54
+ @settings.setdefaults(:section, :myvalue => {:default => "/w", :desc => "b", :type => :setting})
55
+ @settings.setting(:myvalue).should be_instance_of(Puppet::Util::Settings::Setting)
56
+ end
57
+
58
+ it "should fail if an invalid setting type is specified" do
59
+ lambda { @settings.setdefaults(:section, :myvalue => {:default => "w", :desc => "b", :type => :foo}) }.should raise_error(ArgumentError)
60
+ end
61
+
62
+ it "should fail when short names conflict" do
63
+ @settings.setdefaults(:section, :myvalue => {:default => "w", :desc => "b", :short => "m"})
64
+ lambda { @settings.setdefaults(:section, :myvalue => {:default => "w", :desc => "b", :short => "m"}) }.should raise_error(ArgumentError)
65
+ end
66
+ end
67
+
68
+ describe "when setting values" do
69
+ before do
70
+ @settings = Puppet::Util::Settings.new
71
+ @settings.setdefaults :main, :myval => ["val", "desc"]
72
+ @settings.setdefaults :main, :bool => [true, "desc"]
73
+ end
74
+
75
+ it "should provide a method for setting values from other objects" do
76
+ @settings[:myval] = "something else"
77
+ @settings[:myval].should == "something else"
78
+ end
79
+
80
+ it "should support a getopt-specific mechanism for setting values" do
81
+ @settings.handlearg("--myval", "newval")
82
+ @settings[:myval].should == "newval"
83
+ end
84
+
85
+ it "should support a getopt-specific mechanism for turning booleans off" do
86
+ @settings[:bool] = true
87
+ @settings.handlearg("--no-bool", "")
88
+ @settings[:bool].should == false
89
+ end
90
+
91
+ it "should support a getopt-specific mechanism for turning booleans on" do
92
+ # Turn it off first
93
+ @settings[:bool] = false
94
+ @settings.handlearg("--bool", "")
95
+ @settings[:bool].should == true
96
+ end
97
+
98
+ it "should consider a cli setting with no argument to be a boolean" do
99
+ # Turn it off first
100
+ @settings[:bool] = false
101
+ @settings.handlearg("--bool")
102
+ @settings[:bool].should == true
103
+ end
104
+
105
+ it "should consider a cli setting with an empty string as an argument to be a boolean, if the setting itself is a boolean" do
106
+ # Turn it off first
107
+ @settings[:bool] = false
108
+ @settings.handlearg("--bool", "")
109
+ @settings[:bool].should == true
110
+ end
111
+
112
+ it "should consider a cli setting with an empty string as an argument to be an empty argument, if the setting itself is not a boolean" do
113
+ @settings[:myval] = "bob"
114
+ @settings.handlearg("--myval", "")
115
+ @settings[:myval].should == ""
116
+ end
117
+
118
+ it "should consider a cli setting with a boolean as an argument to be a boolean" do
119
+ # Turn it off first
120
+ @settings[:bool] = false
121
+ @settings.handlearg("--bool", "true")
122
+ @settings[:bool].should == true
123
+ end
124
+
125
+ it "should not consider a cli setting of a non boolean with a boolean as an argument to be a boolean" do
126
+ # Turn it off first
127
+ @settings[:myval] = "bob"
128
+ @settings.handlearg("--no-myval", "")
129
+ @settings[:myval].should == ""
130
+ end
131
+
132
+ it "should clear the cache when setting getopt-specific values" do
133
+ @settings.setdefaults :mysection, :one => ["whah", "yay"], :two => ["$one yay", "bah"]
134
+ @settings[:two].should == "whah yay"
135
+ @settings.handlearg("--one", "else")
136
+ @settings[:two].should == "else yay"
137
+ end
138
+
139
+ it "should not clear other values when setting getopt-specific values" do
140
+ @settings[:myval] = "yay"
141
+ @settings.handlearg("--no-bool", "")
142
+ @settings[:myval].should == "yay"
143
+ end
144
+
145
+ it "should clear the list of used sections" do
146
+ @settings.expects(:clearused)
147
+ @settings[:myval] = "yay"
148
+ end
149
+
150
+ it "should call passed blocks when values are set" do
151
+ values = []
152
+ @settings.setdefaults(:section, :hooker => {:default => "yay", :desc => "boo", :hook => lambda { |v| values << v }})
153
+ values.should == []
154
+
155
+ @settings[:hooker] = "something"
156
+ values.should == %w{something}
157
+ end
158
+
159
+ it "should call passed blocks when values are set via the command line" do
160
+ values = []
161
+ @settings.setdefaults(:section, :hooker => {:default => "yay", :desc => "boo", :hook => lambda { |v| values << v }})
162
+ values.should == []
163
+
164
+ @settings.handlearg("--hooker", "yay")
165
+
166
+ values.should == %w{yay}
167
+ end
168
+
169
+ it "should provide an option to call passed blocks during definition" do
170
+ values = []
171
+ @settings.setdefaults(:section, :hooker => {:default => "yay", :desc => "boo", :call_on_define => true, :hook => lambda { |v| values << v }})
172
+ values.should == %w{yay}
173
+ end
174
+
175
+ it "should pass the fully interpolated value to the hook when called on definition" do
176
+ values = []
177
+ @settings.setdefaults(:section, :one => ["test", "a"])
178
+ @settings.setdefaults(:section, :hooker => {:default => "$one/yay", :desc => "boo", :call_on_define => true, :hook => lambda { |v| values << v }})
179
+ values.should == %w{test/yay}
180
+ end
181
+
182
+ it "should munge values using the setting-specific methods" do
183
+ @settings[:bool] = "false"
184
+ @settings[:bool].should == false
185
+ end
186
+
187
+ it "should prefer cli values to values set in Ruby code" do
188
+ @settings.handlearg("--myval", "cliarg")
189
+ @settings[:myval] = "memarg"
190
+ @settings[:myval].should == "cliarg"
191
+ end
192
+
193
+ it "should clear the list of environments" do
194
+ Puppet::Node::Environment.expects(:clear).at_least(1)
195
+ @settings[:myval] = "memarg"
196
+ end
197
+
198
+ it "should raise an error if we try to set 'name'" do
199
+ lambda{ @settings[:name] = "foo" }.should raise_error(ArgumentError)
200
+ end
201
+
202
+ it "should raise an error if we try to set 'run_mode'" do
203
+ lambda{ @settings[:run_mode] = "foo" }.should raise_error(ArgumentError)
204
+ end
205
+
206
+ it "should warn and use [master] if we ask for [puppetmasterd]" do
207
+ Puppet.expects(:warning)
208
+ @settings.set_value(:myval, "foo", :puppetmasterd)
209
+
210
+ @settings.stubs(:run_mode).returns(:master)
211
+ @settings.value(:myval).should == "foo"
212
+ end
213
+
214
+ it "should warn and use [agent] if we ask for [puppetd]" do
215
+ Puppet.expects(:warning)
216
+ @settings.set_value(:myval, "foo", :puppetd)
217
+
218
+ @settings.stubs(:run_mode).returns(:agent)
219
+ @settings.value(:myval).should == "foo"
220
+ end
221
+ end
222
+
223
+ describe "when returning values" do
224
+ before do
225
+ @settings = Puppet::Util::Settings.new
226
+ @settings.setdefaults :section, :config => ["/my/file", "eh"], :one => ["ONE", "a"], :two => ["$one TWO", "b"], :three => ["$one $two THREE", "c"], :four => ["$two $three FOUR", "d"]
227
+ FileTest.stubs(:exist?).returns true
228
+ end
229
+
230
+ it "should provide a mechanism for returning set values" do
231
+ @settings[:one] = "other"
232
+ @settings[:one].should == "other"
233
+ end
234
+
235
+ it "should interpolate default values for other parameters into returned parameter values" do
236
+ @settings[:one].should == "ONE"
237
+ @settings[:two].should == "ONE TWO"
238
+ @settings[:three].should == "ONE ONE TWO THREE"
239
+ end
240
+
241
+ it "should interpolate default values that themselves need to be interpolated" do
242
+ @settings[:four].should == "ONE TWO ONE ONE TWO THREE FOUR"
243
+ end
244
+
245
+ it "should provide a method for returning uninterpolated values" do
246
+ @settings[:two] = "$one tw0"
247
+ @settings.uninterpolated_value(:two).should == "$one tw0"
248
+ @settings.uninterpolated_value(:four).should == "$two $three FOUR"
249
+ end
250
+
251
+ it "should interpolate set values for other parameters into returned parameter values" do
252
+ @settings[:one] = "on3"
253
+ @settings[:two] = "$one tw0"
254
+ @settings[:three] = "$one $two thr33"
255
+ @settings[:four] = "$one $two $three f0ur"
256
+ @settings[:one].should == "on3"
257
+ @settings[:two].should == "on3 tw0"
258
+ @settings[:three].should == "on3 on3 tw0 thr33"
259
+ @settings[:four].should == "on3 on3 tw0 on3 on3 tw0 thr33 f0ur"
260
+ end
261
+
262
+ it "should not cache interpolated values such that stale information is returned" do
263
+ @settings[:two].should == "ONE TWO"
264
+ @settings[:one] = "one"
265
+ @settings[:two].should == "one TWO"
266
+ end
267
+
268
+ it "should not cache values such that information from one environment is returned for another environment" do
269
+ text = "[env1]\none = oneval\n[env2]\none = twoval\n"
270
+ @settings.stubs(:read_file).returns(text)
271
+ @settings.parse
272
+
273
+ @settings.value(:one, "env1").should == "oneval"
274
+ @settings.value(:one, "env2").should == "twoval"
275
+ end
276
+
277
+ it "should have a run_mode that defaults to user" do
278
+ @settings.run_mode.should == :user
279
+ end
280
+ end
281
+
282
+ describe "when choosing which value to return" do
283
+ before do
284
+ @settings = Puppet::Util::Settings.new
285
+ @settings.setdefaults :section,
286
+ :config => ["/my/file", "a"],
287
+ :one => ["ONE", "a"]
288
+ FileTest.stubs(:exist?).returns true
289
+ Puppet.stubs(:run_mode).returns stub('run_mode', :name => :mymode)
290
+ end
291
+
292
+ it "should return default values if no values have been set" do
293
+ @settings[:one].should == "ONE"
294
+ end
295
+
296
+ it "should return values set on the cli before values set in the configuration file" do
297
+ text = "[main]\none = fileval\n"
298
+ @settings.stubs(:read_file).returns(text)
299
+ @settings.handlearg("--one", "clival")
300
+ @settings.parse
301
+
302
+ @settings[:one].should == "clival"
303
+ end
304
+
305
+ it "should return values set on the cli before values set in Ruby" do
306
+ @settings[:one] = "rubyval"
307
+ @settings.handlearg("--one", "clival")
308
+ @settings[:one].should == "clival"
309
+ end
310
+
311
+ it "should return values set in the mode-specific section before values set in the main section" do
312
+ text = "[main]\none = mainval\n[mymode]\none = modeval\n"
313
+ @settings.stubs(:read_file).returns(text)
314
+ @settings.parse
315
+
316
+ @settings[:one].should == "modeval"
317
+ end
318
+
319
+ it "should not return values outside of its search path" do
320
+ text = "[other]\none = oval\n"
321
+ file = "/some/file"
322
+ @settings.stubs(:read_file).returns(text)
323
+ @settings.parse
324
+ @settings[:one].should == "ONE"
325
+ end
326
+
327
+ it "should return values in a specified environment" do
328
+ text = "[env]\none = envval\n"
329
+ @settings.stubs(:read_file).returns(text)
330
+ @settings.parse
331
+ @settings.value(:one, "env").should == "envval"
332
+ end
333
+
334
+ it "should interpolate found values using the current environment" do
335
+ @settings.setdefaults :main, :myval => ["$environment/foo", "mydocs"]
336
+
337
+ @settings.value(:myval, "myenv").should == "myenv/foo"
338
+ end
339
+
340
+ it "should return values in a specified environment before values in the main or name sections" do
341
+ text = "[env]\none = envval\n[main]\none = mainval\n[myname]\none = nameval\n"
342
+ @settings.stubs(:read_file).returns(text)
343
+ @settings.parse
344
+ @settings.value(:one, "env").should == "envval"
345
+ end
346
+ end
347
+
348
+ describe "when parsing its configuration" do
349
+ before do
350
+ @settings = Puppet::Util::Settings.new
351
+ @settings.stubs(:service_user_available?).returns true
352
+ @file = "/some/file"
353
+ @settings.setdefaults :section, :user => ["suser", "doc"], :group => ["sgroup", "doc"]
354
+ @settings.setdefaults :section, :config => ["/some/file", "eh"], :one => ["ONE", "a"], :two => ["$one TWO", "b"], :three => ["$one $two THREE", "c"]
355
+ FileTest.stubs(:exist?).returns true
356
+ end
357
+
358
+ it "should not ignore the report setting" do
359
+ @settings.setdefaults :section, :report => ["false", "a"]
360
+ myfile = stub "myfile"
361
+ @settings[:config] = myfile
362
+ text = <<-CONF
363
+ [puppetd]
364
+ report=true
365
+ CONF
366
+ @settings.expects(:read_file).returns(text)
367
+ @settings.parse
368
+ @settings[:report].should be_true
369
+ end
370
+
371
+ it "should use its current ':config' value for the file to parse" do
372
+ myfile = Puppet.features.posix? ? "/my/file" : "C:/myfile" # do not stub expand_path here, as this leads to a stack overflow, when mocha tries to use it
373
+ @settings[:config] = myfile
374
+
375
+ File.expects(:read).with(myfile).returns "[main]"
376
+
377
+ @settings.parse
378
+ end
379
+
380
+ it "should fail if no configuration setting is defined" do
381
+ @settings = Puppet::Util::Settings.new
382
+ lambda { @settings.parse }.should raise_error(RuntimeError)
383
+ end
384
+
385
+ it "should not try to parse non-existent files" do
386
+ FileTest.expects(:exist?).with("/some/file").returns false
387
+
388
+ File.expects(:read).with("/some/file").never
389
+
390
+ @settings.parse
391
+ end
392
+
393
+ it "should set a timer that triggers reparsing, even if the file does not exist" do
394
+ FileTest.expects(:exist?).returns false
395
+ @settings.expects(:set_filetimeout_timer)
396
+
397
+ @settings.parse
398
+ end
399
+
400
+ it "should return values set in the configuration file" do
401
+ text = "[main]
402
+ one = fileval
403
+ "
404
+ @settings.expects(:read_file).returns(text)
405
+ @settings.parse
406
+ @settings[:one].should == "fileval"
407
+ end
408
+
409
+ #484 - this should probably be in the regression area
410
+ it "should not throw an exception on unknown parameters" do
411
+ text = "[main]\nnosuchparam = mval\n"
412
+ @settings.expects(:read_file).returns(text)
413
+ lambda { @settings.parse }.should_not raise_error
414
+ end
415
+
416
+ it "should convert booleans in the configuration file into Ruby booleans" do
417
+ text = "[main]
418
+ one = true
419
+ two = false
420
+ "
421
+ @settings.expects(:read_file).returns(text)
422
+ @settings.parse
423
+ @settings[:one].should == true
424
+ @settings[:two].should == false
425
+ end
426
+
427
+ it "should convert integers in the configuration file into Ruby Integers" do
428
+ text = "[main]
429
+ one = 65
430
+ "
431
+ @settings.expects(:read_file).returns(text)
432
+ @settings.parse
433
+ @settings[:one].should == 65
434
+ end
435
+
436
+ it "should support specifying all metadata (owner, group, mode) in the configuration file" do
437
+ @settings.setdefaults :section, :myfile => ["/myfile", "a"]
438
+
439
+ text = "[main]
440
+ myfile = /other/file {owner = service, group = service, mode = 644}
441
+ "
442
+ @settings.expects(:read_file).returns(text)
443
+ @settings.parse
444
+ @settings[:myfile].should == "/other/file"
445
+ @settings.metadata(:myfile).should == {:owner => "suser", :group => "sgroup", :mode => "644"}
446
+ end
447
+
448
+ it "should support specifying a single piece of metadata (owner, group, or mode) in the configuration file" do
449
+ @settings.setdefaults :section, :myfile => ["/myfile", "a"]
450
+
451
+ text = "[main]
452
+ myfile = /other/file {owner = service}
453
+ "
454
+ file = "/some/file"
455
+ @settings.expects(:read_file).returns(text)
456
+ @settings.parse
457
+ @settings[:myfile].should == "/other/file"
458
+ @settings.metadata(:myfile).should == {:owner => "suser"}
459
+ end
460
+
461
+ it "should call hooks associated with values set in the configuration file" do
462
+ values = []
463
+ @settings.setdefaults :section, :mysetting => {:default => "defval", :desc => "a", :hook => proc { |v| values << v }}
464
+
465
+ text = "[main]
466
+ mysetting = setval
467
+ "
468
+ @settings.expects(:read_file).returns(text)
469
+ @settings.parse
470
+ values.should == ["setval"]
471
+ end
472
+
473
+ it "should not call the same hook for values set multiple times in the configuration file" do
474
+ values = []
475
+ @settings.setdefaults :section, :mysetting => {:default => "defval", :desc => "a", :hook => proc { |v| values << v }}
476
+
477
+ text = "[user]
478
+ mysetting = setval
479
+ [main]
480
+ mysetting = other
481
+ "
482
+ @settings.expects(:read_file).returns(text)
483
+ @settings.parse
484
+ values.should == ["setval"]
485
+ end
486
+
487
+ it "should pass the environment-specific value to the hook when one is available" do
488
+ values = []
489
+ @settings.setdefaults :section, :mysetting => {:default => "defval", :desc => "a", :hook => proc { |v| values << v }}
490
+ @settings.setdefaults :section, :environment => ["yay", "a"]
491
+ @settings.setdefaults :section, :environments => ["yay,foo", "a"]
492
+
493
+ text = "[main]
494
+ mysetting = setval
495
+ [yay]
496
+ mysetting = other
497
+ "
498
+ @settings.expects(:read_file).returns(text)
499
+ @settings.parse
500
+ values.should == ["other"]
501
+ end
502
+
503
+ it "should pass the interpolated value to the hook when one is available" do
504
+ values = []
505
+ @settings.setdefaults :section, :base => {:default => "yay", :desc => "a", :hook => proc { |v| values << v }}
506
+ @settings.setdefaults :section, :mysetting => {:default => "defval", :desc => "a", :hook => proc { |v| values << v }}
507
+
508
+ text = "[main]
509
+ mysetting = $base/setval
510
+ "
511
+ @settings.expects(:read_file).returns(text)
512
+ @settings.parse
513
+ values.should == ["yay/setval"]
514
+ end
515
+
516
+ it "should allow empty values" do
517
+ @settings.setdefaults :section, :myarg => ["myfile", "a"]
518
+
519
+ text = "[main]
520
+ myarg =
521
+ "
522
+ @settings.stubs(:read_file).returns(text)
523
+ @settings.parse
524
+ @settings[:myarg].should == ""
525
+ end
526
+
527
+ describe "and when reading a non-positive filetimeout value from the config file" do
528
+ before do
529
+ @settings.setdefaults :foo, :filetimeout => [5, "eh"]
530
+
531
+ somefile = "/some/file"
532
+ text = "[main]
533
+ filetimeout = -1
534
+ "
535
+ File.expects(:read).with(somefile).returns(text)
536
+ File.expects(:expand_path).with(somefile).returns somefile
537
+ @settings[:config] = somefile
538
+ end
539
+
540
+ it "should not set a timer" do
541
+ EventLoop::Timer.expects(:new).never
542
+
543
+ @settings.parse
544
+ end
545
+ end
546
+ end
547
+
548
+ describe "when reparsing its configuration" do
549
+ before do
550
+ @settings = Puppet::Util::Settings.new
551
+ @settings.setdefaults :section, :config => ["/test/file", "a"], :one => ["ONE", "a"], :two => ["$one TWO", "b"], :three => ["$one $two THREE", "c"]
552
+ FileTest.stubs(:exist?).returns true
553
+ end
554
+
555
+ it "should use a LoadedFile instance to determine if the file has changed" do
556
+ file = mock 'file'
557
+ Puppet::Util::LoadedFile.expects(:new).with("/test/file").returns file
558
+
559
+ file.expects(:changed?)
560
+
561
+ @settings.stubs(:parse)
562
+ @settings.reparse
563
+ end
564
+
565
+ it "should not create the LoadedFile instance and should not parse if the file does not exist" do
566
+ FileTest.expects(:exist?).with("/test/file").returns false
567
+ Puppet::Util::LoadedFile.expects(:new).never
568
+
569
+ @settings.expects(:parse).never
570
+
571
+ @settings.reparse
572
+ end
573
+
574
+ it "should not reparse if the file has not changed" do
575
+ file = mock 'file'
576
+ Puppet::Util::LoadedFile.expects(:new).with("/test/file").returns file
577
+
578
+ file.expects(:changed?).returns false
579
+
580
+ @settings.expects(:parse).never
581
+
582
+ @settings.reparse
583
+ end
584
+
585
+ it "should reparse if the file has changed" do
586
+ file = stub 'file', :file => "/test/file"
587
+ Puppet::Util::LoadedFile.expects(:new).with("/test/file").returns file
588
+
589
+ file.expects(:changed?).returns true
590
+
591
+ @settings.expects(:parse)
592
+
593
+ @settings.reparse
594
+ end
595
+
596
+ it "should use a cached LoadedFile instance" do
597
+ first = mock 'first'
598
+ second = mock 'second'
599
+ Puppet::Util::LoadedFile.expects(:new).times(2).with("/test/file").returns(first).then.returns(second)
600
+
601
+ @settings.file.should equal(first)
602
+ Puppet::Util::Cacher.expire
603
+ @settings.file.should equal(second)
604
+ end
605
+
606
+ it "should replace in-memory values with on-file values" do
607
+ # Init the value
608
+ text = "[main]\none = disk-init\n"
609
+ file = mock 'file'
610
+ file.stubs(:changed?).returns(true)
611
+ file.stubs(:file).returns("/test/file")
612
+ @settings[:one] = "init"
613
+ @settings.file = file
614
+
615
+ # Now replace the value
616
+ text = "[main]\none = disk-replace\n"
617
+
618
+ # This is kinda ridiculous - the reason it parses twice is that
619
+ # it goes to parse again when we ask for the value, because the
620
+ # mock always says it should get reparsed.
621
+ @settings.stubs(:read_file).returns(text)
622
+ @settings.reparse
623
+ @settings[:one].should == "disk-replace"
624
+ end
625
+
626
+ it "should retain parameters set by cli when configuration files are reparsed" do
627
+ @settings.handlearg("--one", "clival")
628
+
629
+ text = "[main]\none = on-disk\n"
630
+ @settings.stubs(:read_file).returns(text)
631
+ @settings.parse
632
+
633
+ @settings[:one].should == "clival"
634
+ end
635
+
636
+ it "should remove in-memory values that are no longer set in the file" do
637
+ # Init the value
638
+ text = "[main]\none = disk-init\n"
639
+ @settings.expects(:read_file).returns(text)
640
+ @settings.parse
641
+ @settings[:one].should == "disk-init"
642
+
643
+ # Now replace the value
644
+ text = "[main]\ntwo = disk-replace\n"
645
+ @settings.expects(:read_file).returns(text)
646
+ @settings.parse
647
+ #@settings.reparse
648
+
649
+ # The originally-overridden value should be replaced with the default
650
+ @settings[:one].should == "ONE"
651
+
652
+ # and we should now have the new value in memory
653
+ @settings[:two].should == "disk-replace"
654
+ end
655
+
656
+ it "should retain in-memory values if the file has a syntax error" do
657
+ # Init the value
658
+ text = "[main]\none = initial-value\n"
659
+ @settings.expects(:read_file).returns(text)
660
+ @settings.parse
661
+ @settings[:one].should == "initial-value"
662
+
663
+ # Now replace the value with something bogus
664
+ text = "[main]\nkenny = killed-by-what-follows\n1 is 2, blah blah florp\n"
665
+ @settings.expects(:read_file).returns(text)
666
+ @settings.parse
667
+
668
+ # The originally-overridden value should not be replaced with the default
669
+ @settings[:one].should == "initial-value"
670
+
671
+ # and we should not have the new value in memory
672
+ @settings[:kenny].should be_nil
673
+ end
674
+ end
675
+
676
+ it "should provide a method for creating a catalog of resources from its configuration" do
677
+ Puppet::Util::Settings.new.should respond_to(:to_catalog)
678
+ end
679
+
680
+ describe "when creating a catalog" do
681
+ before do
682
+ @settings = Puppet::Util::Settings.new
683
+ @settings.stubs(:service_user_available?).returns true
684
+ @prefix = Puppet.features.posix? ? "" : "C:"
685
+ end
686
+
687
+ it "should add all file resources to the catalog if no sections have been specified" do
688
+ @settings.setdefaults :main, :maindir => [@prefix+"/maindir", "a"], :seconddir => [@prefix+"/seconddir", "a"]
689
+ @settings.setdefaults :other, :otherdir => [@prefix+"/otherdir", "a"]
690
+
691
+ catalog = @settings.to_catalog
692
+
693
+ [@prefix+"/maindir", @prefix+"/seconddir", @prefix+"/otherdir"].each do |path|
694
+ catalog.resource(:file, path).should be_instance_of(Puppet::Resource)
695
+ end
696
+ end
697
+
698
+ it "should add only files in the specified sections if section names are provided" do
699
+ @settings.setdefaults :main, :maindir => [@prefix+"/maindir", "a"]
700
+ @settings.setdefaults :other, :otherdir => [@prefix+"/otherdir", "a"]
701
+ catalog = @settings.to_catalog(:main)
702
+ catalog.resource(:file, @prefix+"/otherdir").should be_nil
703
+ catalog.resource(:file, @prefix+"/maindir").should be_instance_of(Puppet::Resource)
704
+ end
705
+
706
+ it "should not try to add the same file twice" do
707
+ @settings.setdefaults :main, :maindir => [@prefix+"/maindir", "a"]
708
+ @settings.setdefaults :other, :otherdir => [@prefix+"/maindir", "a"]
709
+ lambda { @settings.to_catalog }.should_not raise_error
710
+ end
711
+
712
+ it "should ignore files whose :to_resource method returns nil" do
713
+ @settings.setdefaults :main, :maindir => [@prefix+"/maindir", "a"]
714
+ @settings.setting(:maindir).expects(:to_resource).returns nil
715
+
716
+ Puppet::Resource::Catalog.any_instance.expects(:add_resource).never
717
+ @settings.to_catalog
718
+ end
719
+
720
+ describe "when adding users and groups to the catalog" do
721
+ before do
722
+ Puppet.features.stubs(:root?).returns true
723
+ @settings.setdefaults :foo, :mkusers => [true, "e"], :user => ["suser", "doc"], :group => ["sgroup", "doc"]
724
+ @settings.setdefaults :other, :otherdir => {:default => "/otherdir", :desc => "a", :owner => "service", :group => "service"}
725
+
726
+ @catalog = @settings.to_catalog
727
+ end
728
+
729
+ it "should add each specified user and group to the catalog if :mkusers is a valid setting, is enabled, and we're running as root" do
730
+ @catalog.resource(:user, "suser").should be_instance_of(Puppet::Resource)
731
+ @catalog.resource(:group, "sgroup").should be_instance_of(Puppet::Resource)
732
+ end
733
+
734
+ it "should only add users and groups to the catalog from specified sections" do
735
+ @settings.setdefaults :yay, :yaydir => {:default => "/yaydir", :desc => "a", :owner => "service", :group => "service"}
736
+ catalog = @settings.to_catalog(:other)
737
+ catalog.resource(:user, "jane").should be_nil
738
+ catalog.resource(:group, "billy").should be_nil
739
+ end
740
+
741
+ it "should not add users or groups to the catalog if :mkusers not running as root" do
742
+ Puppet.features.stubs(:root?).returns false
743
+
744
+ catalog = @settings.to_catalog
745
+ catalog.resource(:user, "suser").should be_nil
746
+ catalog.resource(:group, "sgroup").should be_nil
747
+ end
748
+
749
+ it "should not add users or groups to the catalog if :mkusers is not a valid setting" do
750
+ Puppet.features.stubs(:root?).returns true
751
+ settings = Puppet::Util::Settings.new
752
+ settings.setdefaults :other, :otherdir => {:default => "/otherdir", :desc => "a", :owner => "service", :group => "service"}
753
+
754
+ catalog = settings.to_catalog
755
+ catalog.resource(:user, "suser").should be_nil
756
+ catalog.resource(:group, "sgroup").should be_nil
757
+ end
758
+
759
+ it "should not add users or groups to the catalog if :mkusers is a valid setting but is disabled" do
760
+ @settings[:mkusers] = false
761
+
762
+ catalog = @settings.to_catalog
763
+ catalog.resource(:user, "suser").should be_nil
764
+ catalog.resource(:group, "sgroup").should be_nil
765
+ end
766
+
767
+ it "should not try to add users or groups to the catalog twice" do
768
+ @settings.setdefaults :yay, :yaydir => {:default => "/yaydir", :desc => "a", :owner => "service", :group => "service"}
769
+
770
+ # This would fail if users/groups were added twice
771
+ lambda { @settings.to_catalog }.should_not raise_error
772
+ end
773
+
774
+ it "should set :ensure to :present on each created user and group" do
775
+ @catalog.resource(:user, "suser")[:ensure].should == :present
776
+ @catalog.resource(:group, "sgroup")[:ensure].should == :present
777
+ end
778
+
779
+ it "should set each created user's :gid to the service group" do
780
+ @settings.to_catalog.resource(:user, "suser")[:gid].should == "sgroup"
781
+ end
782
+
783
+ it "should not attempt to manage the root user" do
784
+ Puppet.features.stubs(:root?).returns true
785
+ @settings.setdefaults :foo, :foodir => {:default => "/foodir", :desc => "a", :owner => "root", :group => "service"}
786
+
787
+ @settings.to_catalog.resource(:user, "root").should be_nil
788
+ end
789
+ end
790
+ end
791
+
792
+ it "should be able to be converted to a manifest" do
793
+ Puppet::Util::Settings.new.should respond_to(:to_manifest)
794
+ end
795
+
796
+ describe "when being converted to a manifest" do
797
+ it "should produce a string with the code for each resource joined by two carriage returns" do
798
+ @settings = Puppet::Util::Settings.new
799
+ @settings.setdefaults :main, :maindir => ["/maindir", "a"], :seconddir => ["/seconddir", "a"]
800
+
801
+ main = stub 'main_resource', :ref => "File[/maindir]"
802
+ main.expects(:to_manifest).returns "maindir"
803
+ second = stub 'second_resource', :ref => "File[/seconddir]"
804
+ second.expects(:to_manifest).returns "seconddir"
805
+ @settings.setting(:maindir).expects(:to_resource).returns main
806
+ @settings.setting(:seconddir).expects(:to_resource).returns second
807
+
808
+ @settings.to_manifest.split("\n\n").sort.should == %w{maindir seconddir}
809
+ end
810
+ end
811
+
812
+ describe "when using sections of the configuration to manage the local host" do
813
+ before do
814
+ @settings = Puppet::Util::Settings.new
815
+ @settings.stubs(:service_user_available?).returns true
816
+ @settings.setdefaults :main, :noop => [false, ""]
817
+ @settings.setdefaults :main, :maindir => ["/maindir", "a"], :seconddir => ["/seconddir", "a"]
818
+ @settings.setdefaults :main, :user => ["suser", "doc"], :group => ["sgroup", "doc"]
819
+ @settings.setdefaults :other, :otherdir => {:default => "/otherdir", :desc => "a", :owner => "service", :group => "service", :mode => 0755}
820
+ @settings.setdefaults :third, :thirddir => ["/thirddir", "b"]
821
+ @settings.setdefaults :files, :myfile => {:default => "/myfile", :desc => "a", :mode => 0755}
822
+ end
823
+
824
+ it "should provide a method that writes files with the correct modes" do
825
+ @settings.should respond_to(:write)
826
+ end
827
+
828
+ it "should provide a method that creates directories with the correct modes" do
829
+ Puppet::Util::SUIDManager.expects(:asuser).with("suser", "sgroup").yields
830
+ Dir.expects(:mkdir).with("/otherdir", 0755)
831
+ @settings.mkdir(:otherdir)
832
+ end
833
+
834
+ it "should create a catalog with the specified sections" do
835
+ @settings.expects(:to_catalog).with(:main, :other).returns Puppet::Resource::Catalog.new("foo")
836
+ @settings.use(:main, :other)
837
+ end
838
+
839
+ it "should canonicalize the sections" do
840
+ @settings.expects(:to_catalog).with(:main, :other).returns Puppet::Resource::Catalog.new("foo")
841
+ @settings.use("main", "other")
842
+ end
843
+
844
+ it "should ignore sections that have already been used" do
845
+ @settings.expects(:to_catalog).with(:main).returns Puppet::Resource::Catalog.new("foo")
846
+ @settings.use(:main)
847
+ @settings.expects(:to_catalog).with(:other).returns Puppet::Resource::Catalog.new("foo")
848
+ @settings.use(:main, :other)
849
+ end
850
+
851
+ it "should ignore tags and schedules when creating files and directories"
852
+
853
+ it "should be able to provide all of its parameters in a format compatible with GetOpt::Long" do
854
+ pending "Not converted from test/unit yet"
855
+ end
856
+
857
+ it "should convert the created catalog to a RAL catalog" do
858
+ @catalog = Puppet::Resource::Catalog.new("foo")
859
+ @settings.expects(:to_catalog).with(:main).returns @catalog
860
+
861
+ @catalog.expects(:to_ral).returns @catalog
862
+ @settings.use(:main)
863
+ end
864
+
865
+ it "should specify that it is not managing a host catalog" do
866
+ catalog = Puppet::Resource::Catalog.new("foo")
867
+ catalog.expects(:apply)
868
+ @settings.expects(:to_catalog).returns catalog
869
+
870
+ catalog.stubs(:to_ral).returns catalog
871
+
872
+ catalog.expects(:host_config=).with false
873
+
874
+ @settings.use(:main)
875
+ end
876
+
877
+ it "should support a method for re-using all currently used sections" do
878
+ @settings.expects(:to_catalog).with(:main, :third).times(2).returns Puppet::Resource::Catalog.new("foo")
879
+
880
+ @settings.use(:main, :third)
881
+ @settings.reuse
882
+ end
883
+
884
+ it "should fail with an appropriate message if any resources fail" do
885
+ @catalog = Puppet::Resource::Catalog.new("foo")
886
+ @catalog.stubs(:to_ral).returns @catalog
887
+ @settings.expects(:to_catalog).returns @catalog
888
+
889
+ @trans = mock("transaction")
890
+ @catalog.expects(:apply).yields(@trans)
891
+
892
+ @trans.expects(:any_failed?).returns(true)
893
+
894
+ report = mock 'report'
895
+ @trans.expects(:report).returns report
896
+
897
+ log = mock 'log', :to_s => "My failure", :level => :err
898
+ report.expects(:logs).returns [log]
899
+
900
+ @settings.expects(:raise).with { |msg| msg.include?("My failure") }
901
+ @settings.use(:whatever)
902
+ end
903
+ end
904
+
905
+ describe "when dealing with printing configs" do
906
+ before do
907
+ @settings = Puppet::Util::Settings.new
908
+ #these are the magic default values
909
+ @settings.stubs(:value).with(:configprint).returns("")
910
+ @settings.stubs(:value).with(:genconfig).returns(false)
911
+ @settings.stubs(:value).with(:genmanifest).returns(false)
912
+ @settings.stubs(:value).with(:environment).returns(nil)
913
+ end
914
+
915
+ describe "when checking print_config?" do
916
+ it "should return false when the :configprint, :genconfig and :genmanifest are not set" do
917
+ @settings.print_configs?.should be_false
918
+ end
919
+
920
+ it "should return true when :configprint has a value" do
921
+ @settings.stubs(:value).with(:configprint).returns("something")
922
+ @settings.print_configs?.should be_true
923
+ end
924
+
925
+ it "should return true when :genconfig has a value" do
926
+ @settings.stubs(:value).with(:genconfig).returns(true)
927
+ @settings.print_configs?.should be_true
928
+ end
929
+
930
+ it "should return true when :genmanifest has a value" do
931
+ @settings.stubs(:value).with(:genmanifest).returns(true)
932
+ @settings.print_configs?.should be_true
933
+ end
934
+ end
935
+
936
+ describe "when printing configs" do
937
+ describe "when :configprint has a value" do
938
+ it "should call print_config_options" do
939
+ @settings.stubs(:value).with(:configprint).returns("something")
940
+ @settings.expects(:print_config_options)
941
+ @settings.print_configs
942
+ end
943
+
944
+ it "should get the value of the option using the environment" do
945
+ @settings.stubs(:value).with(:configprint).returns("something")
946
+ @settings.stubs(:include?).with("something").returns(true)
947
+ @settings.expects(:value).with(:environment).returns("env")
948
+ @settings.expects(:value).with("something", "env").returns("foo")
949
+ @settings.stubs(:puts).with("foo")
950
+ @settings.print_configs
951
+ end
952
+
953
+ it "should print the value of the option" do
954
+ @settings.stubs(:value).with(:configprint).returns("something")
955
+ @settings.stubs(:include?).with("something").returns(true)
956
+ @settings.stubs(:value).with("something", nil).returns("foo")
957
+ @settings.expects(:puts).with("foo")
958
+ @settings.print_configs
959
+ end
960
+
961
+ it "should print the value pairs if there are multiple options" do
962
+ @settings.stubs(:value).with(:configprint).returns("bar,baz")
963
+ @settings.stubs(:include?).with("bar").returns(true)
964
+ @settings.stubs(:include?).with("baz").returns(true)
965
+ @settings.stubs(:value).with("bar", nil).returns("foo")
966
+ @settings.stubs(:value).with("baz", nil).returns("fud")
967
+ @settings.expects(:puts).with("bar = foo")
968
+ @settings.expects(:puts).with("baz = fud")
969
+ @settings.print_configs
970
+ end
971
+
972
+ it "should print a whole bunch of stuff if :configprint = all"
973
+
974
+ it "should return true after printing" do
975
+ @settings.stubs(:value).with(:configprint).returns("something")
976
+ @settings.stubs(:include?).with("something").returns(true)
977
+ @settings.stubs(:value).with("something", nil).returns("foo")
978
+ @settings.stubs(:puts).with("foo")
979
+ @settings.print_configs.should be_true
980
+ end
981
+
982
+ it "should return false if a config param is not found" do
983
+ @settings.stubs :puts
984
+ @settings.stubs(:value).with(:configprint).returns("something")
985
+ @settings.stubs(:include?).with("something").returns(false)
986
+ @settings.print_configs.should be_false
987
+ end
988
+ end
989
+
990
+ describe "when genconfig is true" do
991
+ before do
992
+ @settings.stubs :puts
993
+ end
994
+
995
+ it "should call to_config" do
996
+ @settings.stubs(:value).with(:genconfig).returns(true)
997
+ @settings.expects(:to_config)
998
+ @settings.print_configs
999
+ end
1000
+
1001
+ it "should return true from print_configs" do
1002
+ @settings.stubs(:value).with(:genconfig).returns(true)
1003
+ @settings.stubs(:to_config)
1004
+ @settings.print_configs.should be_true
1005
+ end
1006
+ end
1007
+
1008
+ describe "when genmanifest is true" do
1009
+ before do
1010
+ @settings.stubs :puts
1011
+ end
1012
+
1013
+ it "should call to_config" do
1014
+ @settings.stubs(:value).with(:genmanifest).returns(true)
1015
+ @settings.expects(:to_manifest)
1016
+ @settings.print_configs
1017
+ end
1018
+
1019
+ it "should return true from print_configs" do
1020
+ @settings.stubs(:value).with(:genmanifest).returns(true)
1021
+ @settings.stubs(:to_manifest)
1022
+ @settings.print_configs.should be_true
1023
+ end
1024
+ end
1025
+ end
1026
+ end
1027
+
1028
+ describe "when setting a timer to trigger configuration file reparsing" do
1029
+ before do
1030
+ @settings = Puppet::Util::Settings.new
1031
+ @settings.setdefaults :foo, :filetimeout => [5, "eh"]
1032
+ end
1033
+
1034
+ it "should do nothing if no filetimeout setting is available" do
1035
+ @settings.expects(:value).with(:filetimeout).returns nil
1036
+ EventLoop::Timer.expects(:new).never
1037
+ @settings.set_filetimeout_timer
1038
+ end
1039
+
1040
+ it "should always convert the timer interval to an integer" do
1041
+ @settings.expects(:value).with(:filetimeout).returns "10"
1042
+ EventLoop::Timer.expects(:new).with(:interval => 10, :start? => true, :tolerance => 1)
1043
+ @settings.set_filetimeout_timer
1044
+ end
1045
+
1046
+ it "should do nothing if the filetimeout setting is not greater than 0" do
1047
+ @settings.expects(:value).with(:filetimeout).returns -2
1048
+ EventLoop::Timer.expects(:new).never
1049
+ @settings.set_filetimeout_timer
1050
+ end
1051
+
1052
+ it "should create a timer with its interval set to the filetimeout, start? set to true, and a tolerance of 1" do
1053
+ @settings.expects(:value).with(:filetimeout).returns 5
1054
+ EventLoop::Timer.expects(:new).with(:interval => 5, :start? => true, :tolerance => 1)
1055
+
1056
+ @settings.set_filetimeout_timer
1057
+ end
1058
+
1059
+ it "should reparse when the timer goes off" do
1060
+ EventLoop::Timer.expects(:new).with(:interval => 5, :start? => true, :tolerance => 1).yields
1061
+
1062
+ @settings.expects(:reparse)
1063
+
1064
+ @settings.set_filetimeout_timer
1065
+ end
1066
+ end
1067
+
1068
+ describe "when determining if the service user is available" do
1069
+ it "should return false if there is no user setting" do
1070
+ Puppet::Util::Settings.new.should_not be_service_user_available
1071
+ end
1072
+
1073
+ it "should return false if the user provider says the user is missing" do
1074
+ settings = Puppet::Util::Settings.new
1075
+ settings.setdefaults :main, :user => ["foo", "doc"]
1076
+
1077
+ user = mock 'user'
1078
+ user.expects(:exists?).returns false
1079
+
1080
+ Puppet::Type.type(:user).expects(:new).with { |args| args[:name] == "foo" }.returns user
1081
+
1082
+ settings.should_not be_service_user_available
1083
+ end
1084
+
1085
+ it "should return true if the user provider says the user is present" do
1086
+ settings = Puppet::Util::Settings.new
1087
+ settings.setdefaults :main, :user => ["foo", "doc"]
1088
+
1089
+ user = mock 'user'
1090
+ user.expects(:exists?).returns true
1091
+
1092
+ Puppet::Type.type(:user).expects(:new).with { |args| args[:name] == "foo" }.returns user
1093
+
1094
+ settings.should be_service_user_available
1095
+ end
1096
+
1097
+ it "should cache the result"
1098
+ end
1099
+ end