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,56 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
4
+
5
+ require 'puppet/reports'
6
+
7
+ # FakeHTTP fakes the behavior of Net::HTTP#request and acts as a sensor for an
8
+ # otherwise difficult to trace method call.
9
+ #
10
+ class FakeHTTP
11
+ REQUESTS = {}
12
+ def self.request(req)
13
+ REQUESTS[req.path] = req
14
+ end
15
+ end
16
+
17
+ processor = Puppet::Reports.report(:http)
18
+
19
+ describe processor do
20
+ before { Net::HTTP.any_instance.stubs(:start).yields(FakeHTTP) }
21
+ subject { Puppet::Transaction::Report.new.extend(processor) }
22
+
23
+ it { should respond_to(:process) }
24
+
25
+ it "should use the reporturl setting's host and port" do
26
+ uri = URI.parse(Puppet[:reporturl])
27
+ Net::HTTP.expects(:new).with(uri.host, uri.port).returns(stub_everything('http'))
28
+ subject.process
29
+ end
30
+
31
+ describe "request" do
32
+ before { subject.process }
33
+
34
+ describe "path" do
35
+ it "should use the path specified by the 'reporturl' setting" do
36
+ reports_request.path.should == URI.parse(Puppet[:reporturl]).path
37
+ end
38
+ end
39
+
40
+ describe "body" do
41
+ it "should be the report as YAML" do
42
+ reports_request.body.should == subject.to_yaml
43
+ end
44
+ end
45
+
46
+ describe "content type" do
47
+ it "should be 'application/x-yaml'" do
48
+ reports_request.content_type.should == "application/x-yaml"
49
+ end
50
+ end
51
+ end
52
+
53
+ private
54
+
55
+ def reports_request; FakeHTTP::REQUESTS[URI.parse(Puppet[:reporturl]).path] end
56
+ end
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
4
+
5
+ require 'puppet/reports'
6
+ require 'puppettest'
7
+
8
+ tagmail = Puppet::Reports.report(:tagmail)
9
+
10
+ describe tagmail do
11
+ extend PuppetTest
12
+
13
+ before do
14
+ @processor = Puppet::Transaction::Report.new
15
+ @processor.extend(Puppet::Reports.report(:tagmail))
16
+ end
17
+
18
+ passers = File.join(datadir, "reports", "tagmail_passers.conf")
19
+ File.readlines(passers).each do |line|
20
+ it "should be able to parse '#{line.inspect}'" do
21
+ @processor.parse(line)
22
+ end
23
+ end
24
+
25
+ failers = File.join(datadir, "reports", "tagmail_failers.conf")
26
+ File.readlines(failers).each do |line|
27
+ it "should not be able to parse '#{line.inspect}'" do
28
+ lambda { @processor.parse(line) }.should raise_error(ArgumentError)
29
+ end
30
+ end
31
+
32
+ {
33
+ "tag: abuse@domain.com" => [%w{abuse@domain.com}, %w{tag}, []],
34
+ "tag, other: abuse@domain.com" => [%w{abuse@domain.com}, %w{tag other}, []],
35
+ "tag-other: abuse@domain.com" => [%w{abuse@domain.com}, %w{tag-other}, []],
36
+ "tag, !other: abuse@domain.com" => [%w{abuse@domain.com}, %w{tag}, %w{other}],
37
+ "tag, !other, one, !two: abuse@domain.com" => [%w{abuse@domain.com}, %w{tag one}, %w{other two}],
38
+ "tag: abuse@domain.com, other@domain.com" => [%w{abuse@domain.com other@domain.com}, %w{tag}, []]
39
+
40
+ }.each do |line, results|
41
+ it "should parse '#{line}' as #{results.inspect}" do
42
+ @processor.parse(line).shift.should == results
43
+ end
44
+ end
45
+
46
+ describe "when matching logs" do
47
+ before do
48
+ @processor << Puppet::Util::Log.new(:level => :notice, :message => "first", :tags => %w{one})
49
+ @processor << Puppet::Util::Log.new(:level => :notice, :message => "second", :tags => %w{one two})
50
+ @processor << Puppet::Util::Log.new(:level => :notice, :message => "third", :tags => %w{one two three})
51
+ end
52
+
53
+ def match(pos = [], neg = [])
54
+ pos = Array(pos)
55
+ neg = Array(neg)
56
+ result = @processor.match([[%w{abuse@domain.com}, pos, neg]])
57
+ actual_result = result.shift
58
+ if actual_result
59
+ actual_result[1]
60
+ else
61
+ nil
62
+ end
63
+ end
64
+
65
+ it "should match all messages when provided the 'all' tag as a positive matcher" do
66
+ results = match("all")
67
+ %w{first second third}.each do |str|
68
+ results.should be_include(str)
69
+ end
70
+ end
71
+
72
+ it "should remove messages that match a negated tag" do
73
+ match("all", "three").should_not be_include("third")
74
+ end
75
+
76
+ it "should find any messages tagged with a provided tag" do
77
+ results = match("two")
78
+ results.should be_include("second")
79
+ results.should be_include("third")
80
+ results.should_not be_include("first")
81
+ end
82
+
83
+ it "should allow negation of specific tags from a specific tag list" do
84
+ results = match("two", "three")
85
+ results.should be_include("second")
86
+ results.should_not be_include("third")
87
+ end
88
+
89
+ it "should allow a tag to negate all matches" do
90
+ results = match([], "one")
91
+ results.should be_nil
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+
5
+ require 'puppet/reports'
6
+
7
+ describe Puppet::Reports do
8
+ it "should instance-load report types" do
9
+ Puppet::Reports.instance_loader(:report).should be_instance_of(Puppet::Util::Autoload)
10
+ end
11
+
12
+ it "should have a method for registering report types" do
13
+ Puppet::Reports.should respond_to(:register_report)
14
+ end
15
+
16
+ it "should have a method for retrieving report types by name" do
17
+ Puppet::Reports.should respond_to(:report)
18
+ end
19
+
20
+ it "should provide a method for returning documentation for all reports" do
21
+ Puppet::Reports.expects(:loaded_instances).with(:report).returns([:one, :two])
22
+ one = mock 'one', :doc => "onedoc"
23
+ two = mock 'two', :doc => "twodoc"
24
+ Puppet::Reports.expects(:report).with(:one).returns(one)
25
+ Puppet::Reports.expects(:report).with(:two).returns(two)
26
+
27
+ doc = Puppet::Reports.reportdocs
28
+ doc.include?("onedoc").should be_true
29
+ doc.include?("twodoc").should be_true
30
+ end
31
+ end
32
+
33
+
34
+ describe Puppet::Reports, " when loading report types" do
35
+ it "should use the instance loader to retrieve report types" do
36
+ Puppet::Reports.expects(:loaded_instance).with(:report, :myreporttype)
37
+ Puppet::Reports.report(:myreporttype)
38
+ end
39
+ end
40
+
41
+ describe Puppet::Reports, " when registering report types" do
42
+ it "should evaluate the supplied block as code for a module" do
43
+ Puppet::Reports.expects(:genmodule).returns(Module.new)
44
+ Puppet::Reports.register_report(:testing) { }
45
+ end
46
+
47
+ it "should extend the report type with the Puppet::Util::Docs module" do
48
+ mod = stub 'module', :define_method => true
49
+
50
+ Puppet::Reports.expects(:genmodule).with { |name, options, block| options[:extend] == Puppet::Util::Docs }.returns(mod)
51
+ Puppet::Reports.register_report(:testing) { }
52
+ end
53
+
54
+ it "should define a :report_name method in the module that returns the name of the report" do
55
+ mod = mock 'module'
56
+ mod.expects(:define_method).with(:report_name)
57
+
58
+ Puppet::Reports.expects(:genmodule).returns(mod)
59
+ Puppet::Reports.register_report(:testing) { }
60
+ end
61
+ end
@@ -0,0 +1,1078 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ describe Puppet::Resource::Catalog, "when compiling" do
6
+
7
+ before do
8
+ @basepath = Puppet.features.posix? ? "/somepath" : "C:/somepath"
9
+ # stub this to not try to create state.yaml
10
+ Puppet::Util::Storage.stubs(:store)
11
+ end
12
+
13
+ it "should be an Expirer" do
14
+ Puppet::Resource::Catalog.ancestors.should be_include(Puppet::Util::Cacher::Expirer)
15
+ end
16
+
17
+ it "should always be expired if it's not applying" do
18
+ @catalog = Puppet::Resource::Catalog.new("host")
19
+ @catalog.expects(:applying?).returns false
20
+ @catalog.should be_dependent_data_expired(Time.now)
21
+ end
22
+
23
+ it "should not be expired if it's applying and the timestamp is late enough" do
24
+ @catalog = Puppet::Resource::Catalog.new("host")
25
+ @catalog.expire
26
+ @catalog.expects(:applying?).returns true
27
+ @catalog.should_not be_dependent_data_expired(Time.now)
28
+ end
29
+
30
+ it "should be able to write its list of classes to the class file" do
31
+ @catalog = Puppet::Resource::Catalog.new("host")
32
+
33
+ @catalog.add_class "foo", "bar"
34
+
35
+ Puppet.settings.expects(:value).with(:classfile).returns "/class/file"
36
+
37
+ fh = mock 'filehandle'
38
+ File.expects(:open).with("/class/file", "w").yields fh
39
+
40
+ fh.expects(:puts).with "foo\nbar"
41
+
42
+ @catalog.write_class_file
43
+ end
44
+
45
+ it "should have a client_version attribute" do
46
+ @catalog = Puppet::Resource::Catalog.new("host")
47
+ @catalog.client_version = 5
48
+ @catalog.client_version.should == 5
49
+ end
50
+
51
+ it "should have a server_version attribute" do
52
+ @catalog = Puppet::Resource::Catalog.new("host")
53
+ @catalog.server_version = 5
54
+ @catalog.server_version.should == 5
55
+ end
56
+
57
+ describe "when compiling" do
58
+ it "should accept tags" do
59
+ config = Puppet::Resource::Catalog.new("mynode")
60
+ config.tag("one")
61
+ config.tags.should == %w{one}
62
+ end
63
+
64
+ it "should accept multiple tags at once" do
65
+ config = Puppet::Resource::Catalog.new("mynode")
66
+ config.tag("one", "two")
67
+ config.tags.should == %w{one two}
68
+ end
69
+
70
+ it "should convert all tags to strings" do
71
+ config = Puppet::Resource::Catalog.new("mynode")
72
+ config.tag("one", :two)
73
+ config.tags.should == %w{one two}
74
+ end
75
+
76
+ it "should tag with both the qualified name and the split name" do
77
+ config = Puppet::Resource::Catalog.new("mynode")
78
+ config.tag("one::two")
79
+ config.tags.include?("one").should be_true
80
+ config.tags.include?("one::two").should be_true
81
+ end
82
+
83
+ it "should accept classes" do
84
+ config = Puppet::Resource::Catalog.new("mynode")
85
+ config.add_class("one")
86
+ config.classes.should == %w{one}
87
+ config.add_class("two", "three")
88
+ config.classes.should == %w{one two three}
89
+ end
90
+
91
+ it "should tag itself with passed class names" do
92
+ config = Puppet::Resource::Catalog.new("mynode")
93
+ config.add_class("one")
94
+ config.tags.should == %w{one}
95
+ end
96
+ end
97
+
98
+ describe "when extracting transobjects" do
99
+
100
+ def mkscope
101
+ @node = Puppet::Node.new("mynode")
102
+ @compiler = Puppet::Parser::Compiler.new(@node)
103
+
104
+ # XXX This is ridiculous.
105
+ @compiler.send(:evaluate_main)
106
+ @scope = @compiler.topscope
107
+ end
108
+
109
+ def mkresource(type, name)
110
+ Puppet::Parser::Resource.new(type, name, :source => @source, :scope => @scope)
111
+ end
112
+
113
+ it "should fail if no 'main' stage can be found" do
114
+ lambda { Puppet::Resource::Catalog.new("mynode").extract }.should raise_error(Puppet::DevError)
115
+ end
116
+
117
+ it "should warn if any non-main stages are present" do
118
+ config = Puppet::Resource::Catalog.new("mynode")
119
+
120
+ @scope = mkscope
121
+ @source = mock 'source'
122
+
123
+ main = mkresource("stage", "main")
124
+ config.add_resource(main)
125
+
126
+ other = mkresource("stage", "other")
127
+ config.add_resource(other)
128
+
129
+ Puppet.expects(:warning)
130
+
131
+ config.extract
132
+ end
133
+
134
+ it "should always create a TransBucket for the 'main' stage" do
135
+ config = Puppet::Resource::Catalog.new("mynode")
136
+
137
+ @scope = mkscope
138
+ @source = mock 'source'
139
+
140
+ main = mkresource("stage", "main")
141
+ config.add_resource(main)
142
+
143
+ result = config.extract
144
+ result.type.should == "Stage"
145
+ result.name.should == "main"
146
+ end
147
+
148
+ # Now try it with a more complicated graph -- a three tier graph, each tier
149
+ it "should transform arbitrarily deep graphs into isomorphic trees" do
150
+ config = Puppet::Resource::Catalog.new("mynode")
151
+
152
+ @scope = mkscope
153
+ @scope.stubs(:tags).returns([])
154
+ @source = mock 'source'
155
+
156
+ # Create our scopes.
157
+ top = mkresource "stage", "main"
158
+
159
+ config.add_resource top
160
+ topbucket = []
161
+ topbucket.expects(:classes=).with([])
162
+ top.expects(:to_trans).returns(topbucket)
163
+ topres = mkresource "file", "/top"
164
+ topres.expects(:to_trans).returns(:topres)
165
+ config.add_edge top, topres
166
+
167
+ middle = mkresource "class", "middle"
168
+ middle.expects(:to_trans).returns([])
169
+ config.add_edge top, middle
170
+ midres = mkresource "file", "/mid"
171
+ midres.expects(:to_trans).returns(:midres)
172
+ config.add_edge middle, midres
173
+
174
+ bottom = mkresource "class", "bottom"
175
+ bottom.expects(:to_trans).returns([])
176
+ config.add_edge middle, bottom
177
+ botres = mkresource "file", "/bot"
178
+ botres.expects(:to_trans).returns(:botres)
179
+ config.add_edge bottom, botres
180
+
181
+ toparray = config.extract
182
+
183
+ # This is annoying; it should look like:
184
+ # [[[:botres], :midres], :topres]
185
+ # but we can't guarantee sort order.
186
+ toparray.include?(:topres).should be_true
187
+
188
+ midarray = toparray.find { |t| t.is_a?(Array) }
189
+ midarray.include?(:midres).should be_true
190
+ botarray = midarray.find { |t| t.is_a?(Array) }
191
+ botarray.include?(:botres).should be_true
192
+ end
193
+ end
194
+
195
+ describe " when converting to a Puppet::Resource catalog" do
196
+ before do
197
+ @original = Puppet::Resource::Catalog.new("mynode")
198
+ @original.tag(*%w{one two three})
199
+ @original.add_class *%w{four five six}
200
+
201
+ @top = Puppet::TransObject.new 'top', "class"
202
+ @topobject = Puppet::TransObject.new '/topobject', "file"
203
+ @middle = Puppet::TransObject.new 'middle', "class"
204
+ @middleobject = Puppet::TransObject.new '/middleobject', "file"
205
+ @bottom = Puppet::TransObject.new 'bottom', "class"
206
+ @bottomobject = Puppet::TransObject.new '/bottomobject', "file"
207
+
208
+ @resources = [@top, @topobject, @middle, @middleobject, @bottom, @bottomobject]
209
+
210
+ @original.add_resource(*@resources)
211
+
212
+ @original.add_edge(@top, @topobject)
213
+ @original.add_edge(@top, @middle)
214
+ @original.add_edge(@middle, @middleobject)
215
+ @original.add_edge(@middle, @bottom)
216
+ @original.add_edge(@bottom, @bottomobject)
217
+
218
+ @catalog = @original.to_resource
219
+ end
220
+
221
+ it "should copy over the version" do
222
+ @original.version = "foo"
223
+ @original.to_resource.version.should == "foo"
224
+ end
225
+
226
+ it "should convert parser resources to plain resources" do
227
+ resource = Puppet::Parser::Resource.new(:file, "foo", :scope => stub("scope"), :source => stub("source"))
228
+ catalog = Puppet::Resource::Catalog.new("whev")
229
+ catalog.add_resource(resource)
230
+ new = catalog.to_resource
231
+ new.resource(:file, "foo").class.should == Puppet::Resource
232
+ end
233
+
234
+ it "should add all resources as Puppet::Resource instances" do
235
+ @resources.each { |resource| @catalog.resource(resource.ref).should be_instance_of(Puppet::Resource) }
236
+ end
237
+
238
+ it "should copy the tag list to the new catalog" do
239
+ @catalog.tags.sort.should == @original.tags.sort
240
+ end
241
+
242
+ it "should copy the class list to the new catalog" do
243
+ @catalog.classes.should == @original.classes
244
+ end
245
+
246
+ it "should duplicate the original edges" do
247
+ @original.edges.each do |edge|
248
+ @catalog.edge?(@catalog.resource(edge.source.ref), @catalog.resource(edge.target.ref)).should be_true
249
+ end
250
+ end
251
+
252
+ it "should set itself as the catalog for each converted resource" do
253
+ @catalog.vertices.each { |v| v.catalog.object_id.should equal(@catalog.object_id) }
254
+ end
255
+ end
256
+
257
+ describe "when converting to a RAL catalog" do
258
+ before do
259
+ @original = Puppet::Resource::Catalog.new("mynode")
260
+ @original.tag(*%w{one two three})
261
+ @original.add_class *%w{four five six}
262
+
263
+ @top = Puppet::Resource.new :class, 'top'
264
+ @topobject = Puppet::Resource.new :file, @basepath+'/topobject'
265
+ @middle = Puppet::Resource.new :class, 'middle'
266
+ @middleobject = Puppet::Resource.new :file, @basepath+'/middleobject'
267
+ @bottom = Puppet::Resource.new :class, 'bottom'
268
+ @bottomobject = Puppet::Resource.new :file, @basepath+'/bottomobject'
269
+
270
+ @resources = [@top, @topobject, @middle, @middleobject, @bottom, @bottomobject]
271
+
272
+ @original.add_resource(*@resources)
273
+
274
+ @original.add_edge(@top, @topobject)
275
+ @original.add_edge(@top, @middle)
276
+ @original.add_edge(@middle, @middleobject)
277
+ @original.add_edge(@middle, @bottom)
278
+ @original.add_edge(@bottom, @bottomobject)
279
+
280
+ @catalog = @original.to_ral
281
+ end
282
+
283
+ it "should add all resources as RAL instances" do
284
+ @resources.each { |resource| @catalog.resource(resource.ref).should be_instance_of(Puppet::Type) }
285
+ end
286
+
287
+ it "should copy the tag list to the new catalog" do
288
+ @catalog.tags.sort.should == @original.tags.sort
289
+ end
290
+
291
+ it "should copy the class list to the new catalog" do
292
+ @catalog.classes.should == @original.classes
293
+ end
294
+
295
+ it "should duplicate the original edges" do
296
+ @original.edges.each do |edge|
297
+ @catalog.edge?(@catalog.resource(edge.source.ref), @catalog.resource(edge.target.ref)).should be_true
298
+ end
299
+ end
300
+
301
+ it "should set itself as the catalog for each converted resource" do
302
+ @catalog.vertices.each { |v| v.catalog.object_id.should equal(@catalog.object_id) }
303
+ end
304
+
305
+ # This tests #931.
306
+ it "should not lose track of resources whose names vary" do
307
+ changer = Puppet::TransObject.new 'changer', 'test'
308
+
309
+ config = Puppet::Resource::Catalog.new('test')
310
+ config.add_resource(changer)
311
+ config.add_resource(@top)
312
+
313
+ config.add_edge(@top, changer)
314
+
315
+ resource = stub 'resource', :name => "changer2", :title => "changer2", :ref => "Test[changer2]", :catalog= => nil, :remove => nil
316
+
317
+ #changer is going to get duplicated as part of a fix for aliases 1094
318
+ changer.expects(:dup).returns(changer)
319
+ changer.expects(:to_ral).returns(resource)
320
+
321
+ newconfig = nil
322
+
323
+ proc { @catalog = config.to_ral }.should_not raise_error
324
+ @catalog.resource("Test[changer2]").should equal(resource)
325
+ end
326
+
327
+ after do
328
+ # Remove all resource instances.
329
+ @catalog.clear(true)
330
+ end
331
+ end
332
+
333
+ describe "when filtering" do
334
+ before :each do
335
+ @original = Puppet::Resource::Catalog.new("mynode")
336
+ @original.tag(*%w{one two three})
337
+ @original.add_class *%w{four five six}
338
+
339
+ @r1 = stub_everything 'r1', :ref => "File[/a]"
340
+ @r1.stubs(:respond_to?).with(:ref).returns(true)
341
+ @r1.stubs(:dup).returns(@r1)
342
+ @r1.stubs(:is_a?).returns(Puppet::Resource).returns(true)
343
+
344
+ @r2 = stub_everything 'r2', :ref => "File[/b]"
345
+ @r2.stubs(:respond_to?).with(:ref).returns(true)
346
+ @r2.stubs(:dup).returns(@r2)
347
+ @r2.stubs(:is_a?).returns(Puppet::Resource).returns(true)
348
+
349
+ @resources = [@r1,@r2]
350
+
351
+ @original.add_resource(@r1,@r2)
352
+ end
353
+
354
+ it "should transform the catalog to a resource catalog" do
355
+ @original.expects(:to_catalog).with { |h,b| h == :to_resource }
356
+
357
+ @original.filter
358
+ end
359
+
360
+ it "should scan each catalog resource in turn and apply filtering block" do
361
+ @resources.each { |r| r.expects(:test?) }
362
+ @original.filter do |r|
363
+ r.test?
364
+ end
365
+ end
366
+
367
+ it "should filter out resources which produce true when the filter block is evaluated" do
368
+ @original.filter do |r|
369
+ r == @r1
370
+ end.resource("File[/a]").should be_nil
371
+ end
372
+
373
+ it "should not consider edges against resources that were filtered out" do
374
+ @original.add_edge(@r1,@r2)
375
+ @original.filter do |r|
376
+ r == @r1
377
+ end.edge(@r1,@r2).should be_empty
378
+ end
379
+ end
380
+
381
+ describe "when functioning as a resource container" do
382
+ before do
383
+ @catalog = Puppet::Resource::Catalog.new("host")
384
+ @one = Puppet::Type.type(:notify).new :name => "one"
385
+ @two = Puppet::Type.type(:notify).new :name => "two"
386
+ @dupe = Puppet::Type.type(:notify).new :name => "one"
387
+ end
388
+
389
+ it "should provide a method to add one or more resources" do
390
+ @catalog.add_resource @one, @two
391
+ @catalog.resource(@one.ref).should equal(@one)
392
+ @catalog.resource(@two.ref).should equal(@two)
393
+ end
394
+
395
+ it "should add resources to the relationship graph if it exists" do
396
+ relgraph = @catalog.relationship_graph
397
+ @catalog.add_resource @one
398
+ relgraph.should be_vertex(@one)
399
+ end
400
+
401
+ it "should yield added resources if a block is provided" do
402
+ yielded = []
403
+ @catalog.add_resource(@one, @two) { |r| yielded << r }
404
+ yielded.length.should == 2
405
+ end
406
+
407
+ it "should set itself as the resource's catalog if it is not a relationship graph" do
408
+ @one.expects(:catalog=).with(@catalog)
409
+ @catalog.add_resource @one
410
+ end
411
+
412
+ it "should make all vertices available by resource reference" do
413
+ @catalog.add_resource(@one)
414
+ @catalog.resource(@one.ref).should equal(@one)
415
+ @catalog.vertices.find { |r| r.ref == @one.ref }.should equal(@one)
416
+ end
417
+
418
+ it "should canonize how resources are referred to during retrieval when both type and title are provided" do
419
+ @catalog.add_resource(@one)
420
+
421
+ @catalog.resource("notify", "one").should equal(@one)
422
+ end
423
+
424
+ it "should canonize how resources are referred to during retrieval when just the title is provided" do
425
+ @catalog.add_resource(@one)
426
+
427
+ @catalog.resource("notify[one]", nil).should equal(@one)
428
+ end
429
+
430
+ it "should not allow two resources with the same resource reference" do
431
+ @catalog.add_resource(@one)
432
+
433
+ proc { @catalog.add_resource(@dupe) }.should raise_error(Puppet::Resource::Catalog::DuplicateResourceError)
434
+ end
435
+
436
+ it "should not store objects that do not respond to :ref" do
437
+ proc { @catalog.add_resource("thing") }.should raise_error(ArgumentError)
438
+ end
439
+
440
+ it "should remove all resources when asked" do
441
+ @catalog.add_resource @one
442
+ @catalog.add_resource @two
443
+ @one.expects :remove
444
+ @two.expects :remove
445
+ @catalog.clear(true)
446
+ end
447
+
448
+ it "should support a mechanism for finishing resources" do
449
+ @one.expects :finish
450
+ @two.expects :finish
451
+ @catalog.add_resource @one
452
+ @catalog.add_resource @two
453
+
454
+ @catalog.finalize
455
+ end
456
+
457
+ it "should make default resources when finalizing" do
458
+ @catalog.expects(:make_default_resources)
459
+ @catalog.finalize
460
+ end
461
+
462
+ it "should add default resources to the catalog upon creation" do
463
+ @catalog.make_default_resources
464
+ @catalog.resource(:schedule, "daily").should_not be_nil
465
+ end
466
+
467
+ it "should optionally support an initialization block and should finalize after such blocks" do
468
+ @one.expects :finish
469
+ @two.expects :finish
470
+ config = Puppet::Resource::Catalog.new("host") do |conf|
471
+ conf.add_resource @one
472
+ conf.add_resource @two
473
+ end
474
+ end
475
+
476
+ it "should inform the resource that it is the resource's catalog" do
477
+ @one.expects(:catalog=).with(@catalog)
478
+ @catalog.add_resource @one
479
+ end
480
+
481
+ it "should be able to find resources by reference" do
482
+ @catalog.add_resource @one
483
+ @catalog.resource(@one.ref).should equal(@one)
484
+ end
485
+
486
+ it "should be able to find resources by reference or by type/title tuple" do
487
+ @catalog.add_resource @one
488
+ @catalog.resource("notify", "one").should equal(@one)
489
+ end
490
+
491
+ it "should have a mechanism for removing resources" do
492
+ @catalog.add_resource @one
493
+ @one.expects :remove
494
+ @catalog.remove_resource(@one)
495
+ @catalog.resource(@one.ref).should be_nil
496
+ @catalog.vertex?(@one).should be_false
497
+ end
498
+
499
+ it "should have a method for creating aliases for resources" do
500
+ @catalog.add_resource @one
501
+ @catalog.alias(@one, "other")
502
+ @catalog.resource("notify", "other").should equal(@one)
503
+ end
504
+
505
+ it "should ignore conflicting aliases that point to the aliased resource" do
506
+ @catalog.alias(@one, "other")
507
+ lambda { @catalog.alias(@one, "other") }.should_not raise_error
508
+ end
509
+
510
+ it "should create aliases for resources isomorphic resources whose names do not match their titles" do
511
+ resource = Puppet::Type::File.new(:title => "testing", :path => @basepath+"/something")
512
+
513
+ @catalog.add_resource(resource)
514
+
515
+ @catalog.resource(:file, @basepath+"/something").should equal(resource)
516
+ end
517
+
518
+ it "should not create aliases for resources non-isomorphic resources whose names do not match their titles" do
519
+ resource = Puppet::Type.type(:exec).new(:title => "testing", :command => "echo", :path => %w{/bin /usr/bin /usr/local/bin})
520
+
521
+ @catalog.add_resource(resource)
522
+
523
+ # Yay, I've already got a 'should' method
524
+ @catalog.resource(:exec, "echo").object_id.should == nil.object_id
525
+ end
526
+
527
+ # This test is the same as the previous, but the behaviour should be explicit.
528
+ it "should alias using the class name from the resource reference, not the resource class name" do
529
+ @catalog.add_resource @one
530
+ @catalog.alias(@one, "other")
531
+ @catalog.resource("notify", "other").should equal(@one)
532
+ end
533
+
534
+ it "should ignore conflicting aliases that point to the aliased resource" do
535
+ @catalog.alias(@one, "other")
536
+ lambda { @catalog.alias(@one, "other") }.should_not raise_error
537
+ end
538
+
539
+ it "should fail to add an alias if the aliased name already exists" do
540
+ @catalog.add_resource @one
541
+ proc { @catalog.alias @two, "one" }.should raise_error(ArgumentError)
542
+ end
543
+
544
+ it "should not fail when a resource has duplicate aliases created" do
545
+ @catalog.add_resource @one
546
+ proc { @catalog.alias @one, "one" }.should_not raise_error
547
+ end
548
+
549
+ it "should not create aliases that point back to the resource" do
550
+ @catalog.alias(@one, "one")
551
+ @catalog.resource(:notify, "one").should be_nil
552
+ end
553
+
554
+ it "should be able to look resources up by their aliases" do
555
+ @catalog.add_resource @one
556
+ @catalog.alias @one, "two"
557
+ @catalog.resource(:notify, "two").should equal(@one)
558
+ end
559
+
560
+ it "should remove resource aliases when the target resource is removed" do
561
+ @catalog.add_resource @one
562
+ @catalog.alias(@one, "other")
563
+ @one.expects :remove
564
+ @catalog.remove_resource(@one)
565
+ @catalog.resource("notify", "other").should be_nil
566
+ end
567
+
568
+ it "should add an alias for the namevar when the title and name differ on isomorphic resource types" do
569
+ resource = Puppet::Type.type(:file).new :path => @basepath+"/something", :title => "other", :content => "blah"
570
+ resource.expects(:isomorphic?).returns(true)
571
+ @catalog.add_resource(resource)
572
+ @catalog.resource(:file, "other").should equal(resource)
573
+ @catalog.resource(:file, @basepath+"/something").ref.should == resource.ref
574
+ end
575
+
576
+ it "should not add an alias for the namevar when the title and name differ on non-isomorphic resource types" do
577
+ resource = Puppet::Type.type(:file).new :path => @basepath+"/something", :title => "other", :content => "blah"
578
+ resource.expects(:isomorphic?).returns(false)
579
+ @catalog.add_resource(resource)
580
+ @catalog.resource(:file, resource.title).should equal(resource)
581
+ # We can't use .should here, because the resources respond to that method.
582
+ raise "Aliased non-isomorphic resource" if @catalog.resource(:file, resource.name)
583
+ end
584
+
585
+ it "should provide a method to create additional resources that also registers the resource" do
586
+ args = {:name => "/yay", :ensure => :file}
587
+ resource = stub 'file', :ref => "File[/yay]", :catalog= => @catalog, :title => "/yay", :[] => "/yay"
588
+ Puppet::Type.type(:file).expects(:new).with(args).returns(resource)
589
+ @catalog.create_resource :file, args
590
+ @catalog.resource("File[/yay]").should equal(resource)
591
+ end
592
+ end
593
+
594
+ describe "when applying" do
595
+ before :each do
596
+ @catalog = Puppet::Resource::Catalog.new("host")
597
+
598
+ @transaction = mock 'transaction'
599
+ Puppet::Transaction.stubs(:new).returns(@transaction)
600
+ @transaction.stubs(:evaluate)
601
+ @transaction.stubs(:add_times)
602
+
603
+ Puppet.settings.stubs(:use)
604
+ end
605
+
606
+ it "should create and evaluate a transaction" do
607
+ @transaction.expects(:evaluate)
608
+ @catalog.apply
609
+ end
610
+
611
+ it "should provide the catalog retrieval time to the transaction" do
612
+ @catalog.retrieval_duration = 5
613
+ @transaction.expects(:add_times).with(:config_retrieval => 5)
614
+ @catalog.apply
615
+ end
616
+
617
+ it "should use a retrieval time of 0 if none is set in the catalog" do
618
+ @catalog.retrieval_duration = nil
619
+ @transaction.expects(:add_times).with(:config_retrieval => 0)
620
+ @catalog.apply
621
+ end
622
+
623
+ it "should return the transaction" do
624
+ @catalog.apply.should equal(@transaction)
625
+ end
626
+
627
+ it "should yield the transaction if a block is provided" do
628
+ @catalog.apply do |trans|
629
+ trans.should equal(@transaction)
630
+ end
631
+ end
632
+
633
+ it "should default to being a host catalog" do
634
+ @catalog.host_config.should be_true
635
+ end
636
+
637
+ it "should be able to be set to a non-host_config" do
638
+ @catalog.host_config = false
639
+ @catalog.host_config.should be_false
640
+ end
641
+
642
+ it "should pass supplied tags on to the transaction" do
643
+ @transaction.expects(:tags=).with(%w{one two})
644
+ @catalog.apply(:tags => %w{one two})
645
+ end
646
+
647
+ it "should set ignoreschedules on the transaction if specified in apply()" do
648
+ @transaction.expects(:ignoreschedules=).with(true)
649
+ @catalog.apply(:ignoreschedules => true)
650
+ end
651
+
652
+ it "should expire cached data in the resources both before and after the transaction" do
653
+ @catalog.expects(:expire).times(2)
654
+ @catalog.apply
655
+ end
656
+
657
+ describe "host catalogs" do
658
+
659
+ # super() doesn't work in the setup method for some reason
660
+ before do
661
+ @catalog.host_config = true
662
+ Puppet::Util::Storage.stubs(:store)
663
+ end
664
+
665
+ it "should initialize the state database before applying a catalog" do
666
+ Puppet::Util::Storage.expects(:load)
667
+
668
+ # Short-circuit the apply, so we know we're loading before the transaction
669
+ Puppet::Transaction.expects(:new).raises ArgumentError
670
+ proc { @catalog.apply }.should raise_error(ArgumentError)
671
+ end
672
+
673
+ it "should sync the state database after applying" do
674
+ Puppet::Util::Storage.expects(:store)
675
+ @transaction.stubs :any_failed? => false
676
+ @catalog.apply
677
+ end
678
+
679
+ after { Puppet.settings.clear }
680
+ end
681
+
682
+ describe "non-host catalogs" do
683
+
684
+ before do
685
+ @catalog.host_config = false
686
+ end
687
+
688
+ it "should never send reports" do
689
+ Puppet[:report] = true
690
+ Puppet[:summarize] = true
691
+ @catalog.apply
692
+ end
693
+
694
+ it "should never modify the state database" do
695
+ Puppet::Util::Storage.expects(:load).never
696
+ Puppet::Util::Storage.expects(:store).never
697
+ @catalog.apply
698
+ end
699
+
700
+ after { Puppet.settings.clear }
701
+ end
702
+ end
703
+
704
+ describe "when creating a relationship graph" do
705
+ before do
706
+ Puppet::Type.type(:component)
707
+ @catalog = Puppet::Resource::Catalog.new("host")
708
+ @compone = Puppet::Type::Component.new :name => "one"
709
+ @comptwo = Puppet::Type::Component.new :name => "two", :require => "Class[one]"
710
+ @file = Puppet::Type.type(:file)
711
+ @one = @file.new :path => @basepath+"/one"
712
+ @two = @file.new :path => @basepath+"/two"
713
+ @sub = @file.new :path => @basepath+"/two/subdir"
714
+ @catalog.add_edge @compone, @one
715
+ @catalog.add_edge @comptwo, @two
716
+
717
+ @three = @file.new :path => @basepath+"/three"
718
+ @four = @file.new :path => @basepath+"/four", :require => "File[#{@basepath}/three]"
719
+ @five = @file.new :path => @basepath+"/five"
720
+ @catalog.add_resource @compone, @comptwo, @one, @two, @three, @four, @five, @sub
721
+
722
+ @relationships = @catalog.relationship_graph
723
+ end
724
+
725
+ it "should be able to create a relationship graph" do
726
+ @relationships.should be_instance_of(Puppet::SimpleGraph)
727
+ end
728
+
729
+ it "should not have any components" do
730
+ @relationships.vertices.find { |r| r.instance_of?(Puppet::Type::Component) }.should be_nil
731
+ end
732
+
733
+ it "should have all non-component resources from the catalog" do
734
+ # The failures print out too much info, so i just do a class comparison
735
+ @relationships.vertex?(@five).should be_true
736
+ end
737
+
738
+ it "should have all resource relationships set as edges" do
739
+ @relationships.edge?(@three, @four).should be_true
740
+ end
741
+
742
+ it "should copy component relationships to all contained resources" do
743
+ @relationships.edge?(@one, @two).should be_true
744
+ end
745
+
746
+ it "should add automatic relationships to the relationship graph" do
747
+ @relationships.edge?(@two, @sub).should be_true
748
+ end
749
+
750
+ it "should get removed when the catalog is cleaned up" do
751
+ @relationships.expects(:clear)
752
+ @catalog.clear
753
+ @catalog.instance_variable_get("@relationship_graph").should be_nil
754
+ end
755
+
756
+ it "should write :relationships and :expanded_relationships graph files if the catalog is a host catalog" do
757
+ @catalog.clear
758
+ graph = Puppet::SimpleGraph.new
759
+ Puppet::SimpleGraph.expects(:new).returns graph
760
+
761
+ graph.expects(:write_graph).with(:relationships)
762
+ graph.expects(:write_graph).with(:expanded_relationships)
763
+
764
+ @catalog.host_config = true
765
+
766
+ @catalog.relationship_graph
767
+ end
768
+
769
+ it "should not write graph files if the catalog is not a host catalog" do
770
+ @catalog.clear
771
+ graph = Puppet::SimpleGraph.new
772
+ Puppet::SimpleGraph.expects(:new).returns graph
773
+
774
+ graph.expects(:write_graph).never
775
+
776
+ @catalog.host_config = false
777
+
778
+ @catalog.relationship_graph
779
+ end
780
+
781
+ it "should create a new relationship graph after clearing the old one" do
782
+ @relationships.expects(:clear)
783
+ @catalog.clear
784
+ @catalog.relationship_graph.should be_instance_of(Puppet::SimpleGraph)
785
+ end
786
+
787
+ it "should remove removed resources from the relationship graph if it exists" do
788
+ @catalog.remove_resource(@one)
789
+ @catalog.relationship_graph.vertex?(@one).should be_false
790
+ end
791
+ end
792
+
793
+ describe "when writing dot files" do
794
+ before do
795
+ @catalog = Puppet::Resource::Catalog.new("host")
796
+ @name = :test
797
+ @file = File.join(Puppet[:graphdir], @name.to_s + ".dot")
798
+ end
799
+
800
+ it "should only write when it is a host catalog" do
801
+ File.expects(:open).with(@file).never
802
+ @catalog.host_config = false
803
+ Puppet[:graph] = true
804
+ @catalog.write_graph(@name)
805
+ end
806
+
807
+ after do
808
+ Puppet.settings.clear
809
+ end
810
+ end
811
+
812
+ describe "when indirecting" do
813
+ before do
814
+ @real_indirection = Puppet::Resource::Catalog.indirection
815
+
816
+ @indirection = stub 'indirection', :name => :catalog
817
+
818
+ Puppet::Util::Cacher.expire
819
+ end
820
+
821
+ it "should redirect to the indirection for retrieval" do
822
+ Puppet::Resource::Catalog.stubs(:indirection).returns(@indirection)
823
+ @indirection.expects(:find)
824
+ Puppet::Resource::Catalog.find(:myconfig)
825
+ end
826
+
827
+ it "should use the value of the 'catalog_terminus' setting to determine its terminus class" do
828
+ # Puppet only checks the terminus setting the first time you ask
829
+ # so this returns the object to the clean state
830
+ # at the expense of making this test less pure
831
+ Puppet::Resource::Catalog.indirection.reset_terminus_class
832
+
833
+ Puppet.settings[:catalog_terminus] = "rest"
834
+ Puppet::Resource::Catalog.indirection.terminus_class.should == :rest
835
+ end
836
+
837
+ it "should allow the terminus class to be set manually" do
838
+ Puppet::Resource::Catalog.indirection.terminus_class = :rest
839
+ Puppet::Resource::Catalog.indirection.terminus_class.should == :rest
840
+ end
841
+
842
+ after do
843
+ Puppet::Util::Cacher.expire
844
+ @real_indirection.reset_terminus_class
845
+ end
846
+ end
847
+
848
+ describe "when converting to yaml" do
849
+ before do
850
+ @catalog = Puppet::Resource::Catalog.new("me")
851
+ @catalog.add_edge("one", "two")
852
+ end
853
+
854
+ it "should be able to be dumped to yaml" do
855
+ YAML.dump(@catalog).should be_instance_of(String)
856
+ end
857
+ end
858
+
859
+ describe "when converting from yaml" do
860
+ before do
861
+ @catalog = Puppet::Resource::Catalog.new("me")
862
+ @catalog.add_edge("one", "two")
863
+
864
+ text = YAML.dump(@catalog)
865
+ @newcatalog = YAML.load(text)
866
+ end
867
+
868
+ it "should get converted back to a catalog" do
869
+ @newcatalog.should be_instance_of(Puppet::Resource::Catalog)
870
+ end
871
+
872
+ it "should have all vertices" do
873
+ @newcatalog.vertex?("one").should be_true
874
+ @newcatalog.vertex?("two").should be_true
875
+ end
876
+
877
+ it "should have all edges" do
878
+ @newcatalog.edge?("one", "two").should be_true
879
+ end
880
+ end
881
+ end
882
+
883
+ describe Puppet::Resource::Catalog, "when converting to pson" do
884
+ confine "Missing 'pson' library" => Puppet.features.pson?
885
+
886
+ before do
887
+ @catalog = Puppet::Resource::Catalog.new("myhost")
888
+ end
889
+
890
+ def pson_output_should
891
+ @catalog.class.expects(:pson_create).with { |hash| yield hash }.returns(:something)
892
+ end
893
+
894
+ # LAK:NOTE For all of these tests, we convert back to the resource so we can
895
+ # trap the actual data structure then.
896
+ it "should set its document_type to 'Catalog'" do
897
+ pson_output_should { |hash| hash['document_type'] == "Catalog" }
898
+
899
+ PSON.parse @catalog.to_pson
900
+ end
901
+
902
+ it "should set its data as a hash" do
903
+ pson_output_should { |hash| hash['data'].is_a?(Hash) }
904
+ PSON.parse @catalog.to_pson
905
+ end
906
+
907
+ [:name, :version, :tags, :classes].each do |param|
908
+ it "should set its #{param} to the #{param} of the resource" do
909
+ @catalog.send(param.to_s + "=", "testing") unless @catalog.send(param)
910
+
911
+ pson_output_should { |hash| hash['data'][param.to_s] == @catalog.send(param) }
912
+ PSON.parse @catalog.to_pson
913
+ end
914
+ end
915
+
916
+ it "should convert its resources to a PSON-encoded array and store it as the 'resources' data" do
917
+ one = stub 'one', :to_pson_data_hash => "one_resource", :ref => "Foo[one]"
918
+ two = stub 'two', :to_pson_data_hash => "two_resource", :ref => "Foo[two]"
919
+
920
+ @catalog.add_resource(one)
921
+ @catalog.add_resource(two)
922
+
923
+ # TODO this should really guarantee sort order
924
+ PSON.parse(@catalog.to_pson,:create_additions => false)['data']['resources'].sort.should == ["one_resource", "two_resource"].sort
925
+
926
+ end
927
+
928
+ it "should convert its edges to a PSON-encoded array and store it as the 'edges' data" do
929
+ one = stub 'one', :to_pson_data_hash => "one_resource", :ref => 'Foo[one]'
930
+ two = stub 'two', :to_pson_data_hash => "two_resource", :ref => 'Foo[two]'
931
+ three = stub 'three', :to_pson_data_hash => "three_resource", :ref => 'Foo[three]'
932
+
933
+ @catalog.add_edge(one, two)
934
+ @catalog.add_edge(two, three)
935
+
936
+ @catalog.edge(one, two ).expects(:to_pson_data_hash).returns "one_two_pson"
937
+ @catalog.edge(two, three).expects(:to_pson_data_hash).returns "two_three_pson"
938
+
939
+ PSON.parse(@catalog.to_pson,:create_additions => false)['data']['edges'].sort.should == %w{one_two_pson two_three_pson}.sort
940
+ end
941
+ end
942
+
943
+ describe Puppet::Resource::Catalog, "when converting from pson" do
944
+ confine "Missing 'pson' library" => Puppet.features.pson?
945
+
946
+ def pson_result_should
947
+ Puppet::Resource::Catalog.expects(:new).with { |hash| yield hash }
948
+ end
949
+
950
+ before do
951
+ @data = {
952
+ 'name' => "myhost"
953
+ }
954
+ @pson = {
955
+ 'document_type' => 'Puppet::Resource::Catalog',
956
+ 'data' => @data,
957
+ 'metadata' => {}
958
+ }
959
+
960
+ @catalog = Puppet::Resource::Catalog.new("myhost")
961
+ Puppet::Resource::Catalog.stubs(:new).returns @catalog
962
+ end
963
+
964
+ it "should be extended with the PSON utility module" do
965
+ Puppet::Resource::Catalog.singleton_class.ancestors.should be_include(Puppet::Util::Pson)
966
+ end
967
+
968
+ it "should create it with the provided name" do
969
+ Puppet::Resource::Catalog.expects(:new).with('myhost').returns @catalog
970
+ PSON.parse @pson.to_pson
971
+ end
972
+
973
+ it "should set the provided version on the catalog if one is set" do
974
+ @data['version'] = 50
975
+ PSON.parse @pson.to_pson
976
+ @catalog.version.should == @data['version']
977
+ end
978
+
979
+ it "should set any provided tags on the catalog" do
980
+ @data['tags'] = %w{one two}
981
+ PSON.parse @pson.to_pson
982
+ @catalog.tags.should == @data['tags']
983
+ end
984
+
985
+ it "should set any provided classes on the catalog" do
986
+ @data['classes'] = %w{one two}
987
+ PSON.parse @pson.to_pson
988
+ @catalog.classes.should == @data['classes']
989
+ end
990
+
991
+ it 'should convert the resources list into resources and add each of them' do
992
+ @data['resources'] = [Puppet::Resource.new(:file, "/foo"), Puppet::Resource.new(:file, "/bar")]
993
+
994
+ @catalog.expects(:add_resource).times(2).with { |res| res.type == "File" }
995
+ PSON.parse @pson.to_pson
996
+ end
997
+
998
+ it 'should convert resources even if they do not include "type" information' do
999
+ @data['resources'] = [Puppet::Resource.new(:file, "/foo")]
1000
+
1001
+ @data['resources'][0].expects(:to_pson).returns '{"title":"/foo","tags":["file"],"type":"File"}'
1002
+
1003
+ @catalog.expects(:add_resource).with { |res| res.type == "File" }
1004
+
1005
+ PSON.parse @pson.to_pson
1006
+ end
1007
+
1008
+ it 'should convert the edges list into edges and add each of them' do
1009
+ one = Puppet::Relationship.new("osource", "otarget", :event => "one", :callback => "refresh")
1010
+ two = Puppet::Relationship.new("tsource", "ttarget", :event => "two", :callback => "refresh")
1011
+
1012
+ @data['edges'] = [one, two]
1013
+
1014
+ @catalog.stubs(:resource).returns("eh")
1015
+
1016
+ @catalog.expects(:add_edge).with { |edge| edge.event == "one" }
1017
+ @catalog.expects(:add_edge).with { |edge| edge.event == "two" }
1018
+
1019
+ PSON.parse @pson.to_pson
1020
+ end
1021
+
1022
+ it "should be able to convert relationships that do not include 'type' information" do
1023
+ one = Puppet::Relationship.new("osource", "otarget", :event => "one", :callback => "refresh")
1024
+ one.expects(:to_pson).returns "{\"event\":\"one\",\"callback\":\"refresh\",\"source\":\"osource\",\"target\":\"otarget\"}"
1025
+
1026
+ @data['edges'] = [one]
1027
+
1028
+ @catalog.stubs(:resource).returns("eh")
1029
+
1030
+ @catalog.expects(:add_edge).with { |edge| edge.event == "one" }
1031
+
1032
+ PSON.parse @pson.to_pson
1033
+ end
1034
+
1035
+ it "should set the source and target for each edge to the actual resource" do
1036
+ edge = Puppet::Relationship.new("source", "target")
1037
+
1038
+ @data['edges'] = [edge]
1039
+
1040
+ @catalog.expects(:resource).with("source").returns("source_resource")
1041
+ @catalog.expects(:resource).with("target").returns("target_resource")
1042
+
1043
+ @catalog.expects(:add_edge).with { |edge| edge.source == "source_resource" and edge.target == "target_resource" }
1044
+
1045
+ PSON.parse @pson.to_pson
1046
+ end
1047
+
1048
+ it "should fail if the source resource cannot be found" do
1049
+ edge = Puppet::Relationship.new("source", "target")
1050
+
1051
+ @data['edges'] = [edge]
1052
+
1053
+ @catalog.expects(:resource).with("source").returns(nil)
1054
+ @catalog.stubs(:resource).with("target").returns("target_resource")
1055
+
1056
+ lambda { PSON.parse @pson.to_pson }.should raise_error(ArgumentError)
1057
+ end
1058
+
1059
+ it "should fail if the target resource cannot be found" do
1060
+ edge = Puppet::Relationship.new("source", "target")
1061
+
1062
+ @data['edges'] = [edge]
1063
+
1064
+ @catalog.stubs(:resource).with("source").returns("source_resource")
1065
+ @catalog.expects(:resource).with("target").returns(nil)
1066
+
1067
+ lambda { PSON.parse @pson.to_pson }.should raise_error(ArgumentError)
1068
+ end
1069
+
1070
+ describe "#title_key_for_ref" do
1071
+ it "should parse a resource ref string into a pair" do
1072
+ @catalog.title_key_for_ref("Title[name]").should == ["Title", "name"]
1073
+ end
1074
+ it "should parse a resource ref string into a pair, even if there's a newline inside the name" do
1075
+ @catalog.title_key_for_ref("Title[na\nme]").should == ["Title", "na\nme"]
1076
+ end
1077
+ end
1078
+ end