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
@@ -9,1203 +9,738 @@ require 'puppettest'
9
9
  require 'puppettest/support/utils'
10
10
 
11
11
  class TestParser < Test::Unit::TestCase
12
- include PuppetTest
13
- include PuppetTest::ParserTesting
14
- include PuppetTest::Support::Utils
15
- def setup
16
- super
17
- Puppet[:parseonly] = true
18
- #@lexer = Puppet::Parser::Lexer.new()
19
- end
20
-
21
- def test_each_file
22
- textfiles { |file|
23
- parser = mkparser
24
- Puppet.debug("parsing %s" % file) if __FILE__ == $0
25
- assert_nothing_raised() {
26
- parser.file = file
27
- parser.parse
28
- }
29
- }
30
- end
31
-
32
- def test_failers
33
- failers { |file|
34
- parser = mkparser
35
- Puppet.debug("parsing failer %s" % file) if __FILE__ == $0
36
- assert_raise(Puppet::ParseError, "Did not fail while parsing %s" % file) {
37
- parser.file = file
38
- ast = parser.parse
39
- config = mkcompiler(parser)
40
- config.compile
41
- #ast.hostclass("").evaluate config.topscope
42
- }
43
- }
44
- end
45
-
46
- def test_arrayrvalues
47
- parser = mkparser
48
- ret = nil
49
- file = tempfile()
50
- assert_nothing_raised {
51
- parser.string = "file { \"#{file}\": mode => [755, 640] }"
52
- }
53
-
54
- assert_nothing_raised {
55
- ret = parser.parse
56
- }
57
- end
58
-
59
- def test_arrayrvalueswithtrailingcomma
60
- parser = mkparser
61
- ret = nil
62
- file = tempfile()
63
- assert_nothing_raised {
64
- parser.string = "file { \"#{file}\": mode => [755, 640,] }"
65
- }
66
-
67
- assert_nothing_raised {
68
- ret = parser.parse
69
- }
70
- end
71
-
72
- def mkmanifest(file)
73
- name = File.join(tmpdir, "file%s" % rand(100))
74
- @@tmpfiles << name
75
-
76
- File.open(file, "w") { |f|
77
- f.puts "file { \"%s\": ensure => file, mode => 755 }\n" %
78
- name
79
- }
80
- end
81
-
82
- def test_importglobbing
83
- basedir = File.join(tmpdir(), "importesting")
84
- @@tmpfiles << basedir
85
- Dir.mkdir(basedir)
86
-
87
- subdir = "subdir"
88
- Dir.mkdir(File.join(basedir, subdir))
89
- manifest = File.join(basedir, "manifest")
90
- File.open(manifest, "w") { |f|
91
- f.puts "import \"%s/*\"" % subdir
92
- }
93
-
94
- 4.times { |i|
95
- path = File.join(basedir, subdir, "subfile%s" % i)
96
- mkmanifest(path)
97
- }
98
-
99
- assert_nothing_raised("Could not parse multiple files") {
100
- parser = mkparser
101
- parser.file = manifest
102
- parser.parse
103
- }
104
- end
105
-
106
- def test_nonexistent_import
107
- basedir = File.join(tmpdir(), "importesting")
108
- @@tmpfiles << basedir
109
- Dir.mkdir(basedir)
110
- manifest = File.join(basedir, "manifest")
111
- File.open(manifest, "w") do |f|
112
- f.puts "import \" no such file \""
113
- end
114
- assert_raise(Puppet::ParseError) {
115
- parser = mkparser
116
- parser.file = manifest
117
- parser.parse
118
- }
119
- end
120
-
121
- def test_trailingcomma
122
- path = tempfile()
123
- str = %{file { "#{path}": ensure => file, }
124
- }
125
-
126
- parser = mkparser
127
- parser.string = str
128
-
129
- assert_nothing_raised("Could not parse trailing comma") {
130
- parser.parse
131
- }
132
- end
133
-
134
- def test_importedclasses
135
- imported = tempfile()
136
- importer = tempfile()
137
-
138
- made = tempfile()
139
-
140
- File.open(imported, "w") do |f|
141
- f.puts %{class foo { file { "#{made}": ensure => file }}}
142
- end
143
-
144
- File.open(importer, "w") do |f|
145
- f.puts %{import "#{imported}"\ninclude foo}
146
- end
147
-
148
- parser = mkparser
149
- parser.file = importer
150
-
151
- # Make sure it parses fine
152
- assert_nothing_raised {
153
- parser.parse
154
- }
155
-
156
- # Now make sure it actually does the work
157
- assert_creates(importer, made)
158
- end
159
-
160
- # Make sure fully qualified and unqualified files can be imported
161
- def test_fqfilesandlocalfiles
162
- dir = tempfile()
163
- Dir.mkdir(dir)
164
- importer = File.join(dir, "site.pp")
165
- fullfile = File.join(dir, "full.pp")
166
- localfile = File.join(dir, "local.pp")
167
-
168
- files = []
169
-
170
- File.open(importer, "w") do |f|
171
- f.puts %{import "#{fullfile}"\ninclude full\nimport "local.pp"\ninclude local}
172
- end
173
-
174
- fullmaker = tempfile()
175
- files << fullmaker
176
-
177
- File.open(fullfile, "w") do |f|
178
- f.puts %{class full { file { "#{fullmaker}": ensure => file }}}
179
- end
180
-
181
- localmaker = tempfile()
182
- files << localmaker
183
-
184
- File.open(localfile, "w") do |f|
185
- f.puts %{class local { file { "#{localmaker}": ensure => file }}}
186
- end
187
-
188
- parser = mkparser
189
- parser.file = importer
190
-
191
- # Make sure it parses
192
- assert_nothing_raised {
193
- parser.parse
194
- }
195
-
196
- # Now make sure it actually does the work
197
- assert_creates(importer, *files)
198
- end
199
-
200
- # Make sure the parser adds '.pp' when necessary
201
- def test_addingpp
202
- dir = tempfile()
203
- Dir.mkdir(dir)
204
- importer = File.join(dir, "site.pp")
205
- localfile = File.join(dir, "local.pp")
206
-
207
- files = []
208
-
209
- File.open(importer, "w") do |f|
210
- f.puts %{import "local"\ninclude local}
211
- end
212
-
213
- file = tempfile()
214
- files << file
215
-
216
- File.open(localfile, "w") do |f|
217
- f.puts %{class local { file { "#{file}": ensure => file }}}
218
- end
219
-
220
- parser = mkparser
221
- parser.file = importer
222
-
223
- assert_nothing_raised {
224
- parser.parse
225
- }
226
- end
227
-
228
- # Make sure that file importing changes file relative names.
229
- def test_changingrelativenames
230
- dir = tempfile()
231
- Dir.mkdir(dir)
232
- Dir.mkdir(File.join(dir, "subdir"))
233
- top = File.join(dir, "site.pp")
234
- subone = File.join(dir, "subdir/subone")
235
- subtwo = File.join(dir, "subdir/subtwo")
236
-
237
- files = []
238
- file = tempfile()
239
- files << file
240
-
241
- File.open(subone + ".pp", "w") do |f|
242
- f.puts %{class one { file { "#{file}": ensure => file }}}
243
- end
244
-
245
- otherfile = tempfile()
246
- files << otherfile
247
- File.open(subtwo + ".pp", "w") do |f|
248
- f.puts %{import "subone"\n class two inherits one {
249
- file { "#{otherfile}": ensure => file }
250
- }}
251
- end
252
-
253
- File.open(top, "w") do |f|
254
- f.puts %{import "subdir/subtwo"}
255
- end
256
-
257
- parser = mkparser
258
- parser.file = top
259
-
260
- assert_nothing_raised {
261
- parser.parse
262
- }
263
- end
264
-
265
- # Defaults are purely syntactical, so it doesn't make sense to be able to
266
- # collect them.
267
- def test_uncollectabledefaults
268
- string = "@Port { protocols => tcp }"
269
-
270
- assert_raise(Puppet::ParseError) {
271
- mkparser.parse(string)
272
- }
273
- end
274
-
275
- # Verify that we can parse collections
276
- def test_collecting
277
- text = "Port <| |>"
278
- parser = mkparser
279
- parser.string = text
280
-
281
- ret = nil
282
- assert_nothing_raised {
283
- ret = parser.parse
284
- }
285
-
286
- ret.hostclass("").code.each do |obj|
287
- assert_instance_of(AST::Collection, obj)
288
- end
289
- end
290
-
291
- def test_emptyfile
292
- file = tempfile()
293
- File.open(file, "w") do |f|
294
- f.puts %{}
295
- end
296
- parser = mkparser
12
+ include PuppetTest
13
+ include PuppetTest::ParserTesting
14
+ include PuppetTest::Support::Utils
15
+ def setup
16
+ super
17
+ Puppet[:parseonly] = true
18
+ #@lexer = Puppet::Parser::Lexer.new
19
+ end
20
+
21
+ def teardown
22
+ super
23
+ Puppet::Node::Environment.clear
24
+ end
25
+
26
+ def test_each_file
27
+ textfiles { |file|
28
+ Puppet::Node::Environment.clear
29
+ parser = mkparser
30
+ Puppet.debug("parsing #{file}") if __FILE__ == $0
31
+ assert_nothing_raised {
297
32
  parser.file = file
298
- assert_nothing_raised {
299
- parser.parse
300
- }
301
- end
302
-
303
- def test_multiple_nodes_named
304
- file = tempfile()
305
- other = tempfile()
306
-
307
- File.open(file, "w") do |f|
308
- f.puts %{
309
- node nodeA, nodeB {
310
- file { "#{other}": ensure => file }
311
-
312
- }
313
- }
314
- end
315
-
316
- parser = mkparser
33
+ parser.parse
34
+ }
35
+ }
36
+ end
37
+
38
+ def test_failers
39
+ failers { |file|
40
+ parser = mkparser
41
+ Puppet.debug("parsing failer #{file}") if __FILE__ == $0
42
+ assert_raise(Puppet::ParseError, "Did not fail while parsing #{file}") {
317
43
  parser.file = file
318
- ast = nil
319
- assert_nothing_raised {
320
- ast = parser.parse
321
- }
322
- end
323
-
324
- def test_emptyarrays
325
- str = %{$var = []\n}
326
-
327
- parser = mkparser
328
- parser.string = str
329
-
330
- # Make sure it parses fine
331
- assert_nothing_raised {
332
- parser.parse
333
- }
334
- end
335
-
336
- # Make sure function names aren't reserved words.
337
- def test_functionnamecollision
338
- str = %{tag yayness
339
- tag(rahness)
340
-
341
- file { "/tmp/yayness":
342
- tag => "rahness",
343
- ensure => exists
344
- }
345
- }
346
- parser = mkparser
347
- parser.string = str
348
-
349
- # Make sure it parses fine
350
- assert_nothing_raised {
351
- parser.parse
352
- }
353
- end
354
-
355
- def test_metaparams_in_definition_prototypes
356
- parser = mkparser
357
-
358
-
359
- assert_raise(Puppet::ParseError) {
360
- parser.parse %{define mydef($schedule) {}}
361
- }
362
-
363
- assert_nothing_raised {
364
- parser.parse %{define adef($schedule = false) {}}
365
- parser.parse %{define mydef($schedule = daily) {}}
366
- }
367
- end
368
-
369
- def test_parsingif
370
- parser = mkparser
371
- exec = proc do |val|
372
- %{exec { "/bin/echo #{val}": logoutput => true }}
373
- end
374
- str1 = %{if true { #{exec.call("true")} }}
375
- ret = nil
376
- assert_nothing_raised {
377
- ret = parser.parse(str1).hostclass("").code[0]
378
- }
379
- assert_instance_of(Puppet::Parser::AST::IfStatement, ret)
380
- parser = mkparser
381
- str2 = %{if true { #{exec.call("true")} } else { #{exec.call("false")} }}
382
- assert_nothing_raised {
383
- ret = parser.parse(str2).hostclass("").code[0]
384
- }
385
- assert_instance_of(Puppet::Parser::AST::IfStatement, ret)
386
- assert_instance_of(Puppet::Parser::AST::Else, ret.else)
387
- end
44
+ ast = parser.parse
45
+ config = mkcompiler(parser)
46
+ config.compile
47
+ #ast.hostclass("").evaluate config.topscope
48
+ }
49
+ }
50
+ end
51
+
52
+ def test_arrayrvalues
53
+ parser = mkparser
54
+ ret = nil
55
+ file = tempfile
56
+ assert_nothing_raised {
57
+ parser.string = "file { \"#{file}\": mode => [755, 640] }"
58
+ }
59
+
60
+ assert_nothing_raised {
61
+ ret = parser.parse
62
+ }
63
+ end
64
+
65
+ def test_arrayrvalueswithtrailingcomma
66
+ parser = mkparser
67
+ ret = nil
68
+ file = tempfile
69
+ assert_nothing_raised {
70
+ parser.string = "file { \"#{file}\": mode => [755, 640,] }"
71
+ }
72
+
73
+ assert_nothing_raised {
74
+ ret = parser.parse
75
+ }
76
+ end
77
+
78
+ def mkmanifest(file)
79
+ name = File.join(tmpdir, "file#{rand(100)}")
80
+ @@tmpfiles << name
81
+
82
+ File.open(file, "w") { |f|
83
+ f.puts "file { \"%s\": ensure => file, mode => 755 }\n" % name
84
+ }
85
+ end
86
+
87
+ def test_importglobbing
88
+ basedir = File.join(tmpdir, "importesting")
89
+ @@tmpfiles << basedir
90
+ Dir.mkdir(basedir)
91
+
92
+ subdir = "subdir"
93
+ Dir.mkdir(File.join(basedir, subdir))
94
+ manifest = File.join(basedir, "manifest")
95
+ File.open(manifest, "w") { |f|
96
+ f.puts "import \"%s/*\"" % subdir
97
+ }
98
+
99
+ 4.times { |i|
100
+ path = File.join(basedir, subdir, "subfile#{i}")
101
+ mkmanifest(path)
102
+ }
103
+
104
+ assert_nothing_raised("Could not parse multiple files") {
105
+ parser = mkparser
106
+ parser.file = manifest
107
+ parser.parse
108
+ }
109
+ end
110
+
111
+ def test_nonexistent_import
112
+ basedir = File.join(tmpdir, "importesting")
113
+ @@tmpfiles << basedir
114
+ Dir.mkdir(basedir)
115
+ manifest = File.join(basedir, "manifest")
116
+ File.open(manifest, "w") do |f|
117
+ f.puts "import \" no such file \""
118
+ end
119
+ assert_raise(Puppet::ParseError) {
120
+ parser = mkparser
121
+ parser.file = manifest
122
+ parser.parse
123
+ }
124
+ end
388
125
 
389
- def test_hostclass
390
- parser = mkparser
391
-
392
- assert_nothing_raised {
393
- parser.parse %{class myclass { class other {} }}
394
- }
395
- assert(parser.hostclass("myclass"), "Could not find myclass")
396
- assert(parser.hostclass("myclass::other"), "Could not find myclass::other")
397
-
398
- assert_nothing_raised {
399
- parser.parse "class base {}
400
- class container {
401
- class deep::sub inherits base {}
402
- }"
403
- }
404
- sub = parser.hostclass("container::deep::sub")
405
- assert(sub, "Could not find sub")
406
-
407
- # Now try it with a parent class being a fq class
408
- assert_nothing_raised {
409
- parser.parse "class container::one inherits container::deep::sub {}"
410
- }
411
- sub = parser.hostclass("container::one")
412
- assert(sub, "Could not find one")
413
- assert_equal("container::deep::sub", sub.parentclass)
414
-
415
- # Finally, try including a qualified class
416
- assert_nothing_raised("Could not include fully qualified class") {
417
- parser.parse "include container::deep::sub"
418
- }
419
- end
126
+ def test_trailingcomma
127
+ path = tempfile
128
+ str = %{file { "#{path}": ensure => file, }
129
+ }
420
130
 
421
- def test_topnamespace
422
- parser = mkparser
131
+ parser = mkparser
132
+ parser.string = str
423
133
 
424
- # Make sure we put the top-level code into a class called "" in
425
- # the "" namespace
426
- assert_nothing_raised do
427
- out = parser.parse ""
134
+ assert_nothing_raised("Could not parse trailing comma") {
135
+ parser.parse
136
+ }
137
+ end
138
+
139
+ def test_importedclasses
140
+ imported = tempfile
141
+ importer = tempfile
142
+
143
+ made = tempfile
144
+
145
+ File.open(imported, "w") do |f|
146
+ f.puts %{class foo { file { "#{made}": ensure => file }}}
147
+ end
428
148
 
429
- assert_instance_of(Puppet::Parser::LoadedCode, out)
430
- assert_nil(parser.hostclass(""), "Got a 'main' class when we had no code")
431
- end
432
-
433
- # Now try something a touch more complicated
434
- parser.initvars
435
- assert_nothing_raised do
436
- out = parser.parse "Exec { path => '/usr/bin:/usr/sbin' }"
437
- assert_instance_of(Puppet::Parser::LoadedCode, out)
438
- assert_equal("", parser.hostclass("").classname)
439
- assert_equal("", parser.hostclass("").namespace)
440
- end
149
+ File.open(importer, "w") do |f|
150
+ f.puts %{import "#{imported}"\ninclude foo}
441
151
  end
442
152
 
443
- # Make sure virtual and exported resources work appropriately.
444
- def test_virtualresources
445
- tests = [:virtual]
446
- if Puppet.features.rails?
447
- catalog_cache_class = Puppet::Resource::Catalog.indirection.cache_class
448
- facts_cache_class = Puppet::Node::Facts.indirection.cache_class
449
- node_cache_class = Puppet::Node.indirection.cache_class
450
- Puppet[:storeconfigs] = true
451
- tests << :exported
452
- end
153
+ parser = mkparser
154
+ parser.file = importer
453
155
 
454
- tests.each do |form|
455
- parser = mkparser
456
-
457
- if form == :virtual
458
- at = "@"
459
- else
460
- at = "@@"
461
- end
462
-
463
- check = proc do |res, msg|
464
- if res.is_a?(Puppet::Parser::Resource)
465
- txt = res.ref
466
- else
467
- txt = res.class
468
- end
469
- # Real resources get marked virtual when exported
470
- if form == :virtual or res.is_a?(Puppet::Parser::Resource)
471
- assert(res.virtual, "#{msg} #{at}#{txt} is not virtual")
472
- end
473
- if form == :virtual
474
- assert(! res.exported, "#{msg} #{at}#{txt} is exported")
475
- else
476
- assert(res.exported, "#{msg} #{at}#{txt} is not exported")
477
- end
478
- end
479
-
480
- ret = nil
481
- assert_nothing_raised do
482
- ret = parser.parse("#{at}file { '/tmp/testing': owner => root }")
483
- end
484
-
485
- assert_instance_of(AST::ASTArray, ret.hostclass("").code)
486
- resdef = ret.hostclass("").code[0]
487
- assert_instance_of(AST::Resource, resdef)
488
- assert_equal("/tmp/testing", resdef.title.value)
489
- # We always get an astarray back, so...
490
- check.call(resdef, "simple resource")
491
-
492
- # Now let's try it with multiple resources in the same spec
493
- assert_nothing_raised do
494
- ret = parser.parse("#{at}file { ['/tmp/1', '/tmp/2']: owner => root }")
495
- end
496
-
497
- ret.hostclass("").each do |res|
498
- assert_instance_of(AST::Resource, res)
499
- check.call(res, "multiresource")
500
- end
501
- end
502
- if Puppet.features.rails?
503
- Puppet[:storeconfigs] = false
504
- Puppet::Resource::Catalog.cache_class = catalog_cache_class
505
- Puppet::Node::Facts.cache_class = facts_cache_class
506
- Puppet::Node.cache_class = node_cache_class
507
- end
508
- end
156
+ # Make sure it parses fine
157
+ assert_nothing_raised {
158
+ parser.parse
159
+ }
509
160
 
510
- def test_collections
511
- tests = [:virtual]
512
- if Puppet.features.rails?
513
- catalog_cache_class = Puppet::Resource::Catalog.indirection.cache_class
514
- facts_cache_class = Puppet::Node::Facts.indirection.cache_class
515
- node_cache_class = Puppet::Node.indirection.cache_class
516
- Puppet[:storeconfigs] = true
517
- tests << :exported
518
- end
519
-
520
- tests.each do |form|
521
- parser = mkparser
161
+ # Now make sure it actually does the work
162
+ assert_creates(importer, made)
163
+ end
522
164
 
523
- if form == :virtual
524
- arrow = "<||>"
525
- else
526
- arrow = "<<||>>"
527
- end
165
+ # Make sure fully qualified and unqualified files can be imported
166
+ def test_fqfilesandlocalfiles
167
+ dir = tempfile
168
+ Dir.mkdir(dir)
169
+ importer = File.join(dir, "site.pp")
170
+ fullfile = File.join(dir, "full.pp")
171
+ localfile = File.join(dir, "local.pp")
528
172
 
529
- ret = nil
530
- assert_nothing_raised do
531
- ret = parser.parse("File #{arrow}")
532
- end
173
+ files = []
533
174
 
534
- coll = ret.hostclass("").code[0]
535
- assert_instance_of(AST::Collection, coll)
536
- assert_equal(form, coll.form)
537
- end
538
- if Puppet.features.rails?
539
- Puppet[:storeconfigs] = false
540
- Puppet::Resource::Catalog.cache_class = catalog_cache_class
541
- Puppet::Node::Facts.cache_class = facts_cache_class
542
- Puppet::Node.cache_class = node_cache_class
543
- end
175
+ File.open(importer, "w") do |f|
176
+ f.puts %{import "#{fullfile}"\ninclude full\nimport "local.pp"\ninclude local}
544
177
  end
545
178
 
546
- def test_collectionexpressions
547
- %w{== !=}.each do |oper|
548
- str = "File <| title #{oper} '/tmp/testing' |>"
549
-
550
- parser = mkparser
551
-
552
- res = nil
553
- assert_nothing_raised do
554
- res = parser.parse(str).hostclass("").code[0]
555
- end
556
-
557
- assert_instance_of(AST::Collection, res)
179
+ fullmaker = tempfile
180
+ files << fullmaker
558
181
 
559
- query = res.query
560
- assert_instance_of(AST::CollExpr, query)
561
-
562
- assert_equal(:virtual, query.form)
563
- assert_equal("title", query.test1.value)
564
- assert_equal("/tmp/testing", query.test2.value)
565
- assert_equal(oper, query.oper)
566
- end
182
+ File.open(fullfile, "w") do |f|
183
+ f.puts %{class full { file { "#{fullmaker}": ensure => file }}}
567
184
  end
568
185
 
569
- def test_collectionstatements
570
- %w{and or}.each do |joiner|
571
- str = "File <| title == '/tmp/testing' #{joiner} owner == root |>"
572
-
573
- parser = mkparser
186
+ localmaker = tempfile
187
+ files << localmaker
574
188
 
575
- res = nil
576
- assert_nothing_raised do
577
- res = parser.parse(str).hostclass("").code[0]
578
- end
579
-
580
- assert_instance_of(AST::Collection, res)
581
-
582
- query = res.query
583
- assert_instance_of(AST::CollExpr, query)
584
-
585
- assert_equal(joiner, query.oper)
586
- assert_instance_of(AST::CollExpr, query.test1)
587
- assert_instance_of(AST::CollExpr, query.test2)
588
- end
189
+ File.open(localfile, "w") do |f|
190
+ f.puts %{class local { file { "#{localmaker}": ensure => file }}}
589
191
  end
590
192
 
591
- def test_collectionstatements_with_parens
592
- [
593
- "(title == '/tmp/testing' and owner == root) or owner == wheel",
594
- "(title == '/tmp/testing')"
595
- ].each do |test|
596
- str = "File <| #{test} |>"
597
- parser = mkparser
193
+ parser = mkparser
194
+ parser.file = importer
598
195
 
599
- res = nil
600
- assert_nothing_raised("Could not parse '#{test}'") do
601
- res = parser.parse(str).hostclass("").code[0]
602
- end
196
+ # Make sure it parses
197
+ assert_nothing_raised {
198
+ parser.parse
199
+ }
603
200
 
604
- assert_instance_of(AST::Collection, res)
201
+ # Now make sure it actually does the work
202
+ assert_creates(importer, *files)
203
+ end
605
204
 
606
- query = res.query
607
- assert_instance_of(AST::CollExpr, query)
205
+ # Make sure the parser adds '.pp' when necessary
206
+ def test_addingpp
207
+ dir = tempfile
208
+ Dir.mkdir(dir)
209
+ importer = File.join(dir, "site.pp")
210
+ localfile = File.join(dir, "local.pp")
608
211
 
609
- #assert_equal(joiner, query.oper)
610
- #assert_instance_of(AST::CollExpr, query.test1)
611
- #assert_instance_of(AST::CollExpr, query.test2)
612
- end
613
- end
212
+ files = []
614
213
 
615
- # We've had problems with files other than site.pp importing into main.
616
- def test_importing_into_main
617
- top = tempfile()
618
- other = tempfile()
619
- File.open(top, "w") do |f|
620
- f.puts "import '#{other}'"
621
- end
622
-
623
- file = tempfile()
624
- File.open(other, "w") do |f|
625
- f.puts "file { '#{file}': ensure => present }"
626
- end
627
-
628
- Puppet[:manifest] = top
629
- interp = Puppet::Parser::Interpreter.new
630
-
631
- code = nil
632
- assert_nothing_raised do
633
- code = interp.compile(mknode).extract.flatten
634
- end
635
- assert(code.length == 1, "Did not get the file")
636
- assert_instance_of(Puppet::TransObject, code[0])
214
+ File.open(importer, "w") do |f|
215
+ f.puts %{import "local"\ninclude local}
637
216
  end
638
217
 
639
- def test_fully_qualified_definitions
640
- parser = mkparser
641
-
642
- assert_nothing_raised("Could not parse fully-qualified definition") {
643
- parser.parse %{define one::two { }}
644
- }
645
- assert(parser.definition("one::two"), "Could not find one::two with no namespace")
646
-
647
- # Now try using the definition
648
- assert_nothing_raised("Could not parse fully-qualified definition usage") {
649
- parser.parse %{one::two { yayness: }}
650
- }
651
- end
218
+ file = tempfile
219
+ files << file
652
220
 
653
- # #524
654
- def test_functions_with_no_arguments
655
- parser = mkparser
656
- assert_nothing_raised("Could not parse statement function with no args") {
657
- parser.parse %{tag()}
658
- }
659
- assert_nothing_raised("Could not parse rvalue function with no args") {
660
- parser.parse %{$testing = template()}
661
- }
221
+ File.open(localfile, "w") do |f|
222
+ f.puts %{class local { file { "#{file}": ensure => file }}}
662
223
  end
663
224
 
664
- # #774
665
- def test_fully_qualified_collection_statement
666
- parser = mkparser
667
- assert_nothing_raised("Could not parse fully qualified collection statement") {
668
- parser.parse %{Foo::Bar <||>}
669
- }
670
- end
225
+ parser = mkparser
226
+ parser.file = importer
671
227
 
672
- def test_module_import
673
- basedir = File.join(tmpdir(), "module-import")
674
- @@tmpfiles << basedir
675
- Dir.mkdir(basedir)
676
- modfiles = [ "init.pp", "mani1.pp", "mani2.pp",
677
- "sub/smani1.pp", "sub/smani2.pp" ]
678
-
679
- modpath = File.join(basedir, "modules")
680
- Puppet[:modulepath] = modpath
681
-
682
- modname = "amod"
683
- manipath = File::join(modpath, modname, Puppet::Module::MANIFESTS)
684
- FileUtils::mkdir_p(File::join(manipath, "sub"))
685
- targets = []
686
- modfiles.each do |fname|
687
- target = File::join(basedir, File::basename(fname, '.pp'))
688
- targets << target
689
- txt = %[ file { '#{target}': content => "#{fname}" } ]
690
- if fname == "init.pp"
691
- txt = %[import 'mani1' \nimport '#{modname}/mani2'\nimport '#{modname}/sub/*.pp'\n ] + txt
692
- end
693
- File::open(File::join(manipath, fname), "w") do |f|
694
- f.puts txt
695
- end
696
- end
228
+ assert_nothing_raised {
229
+ parser.parse
230
+ }
231
+ end
697
232
 
698
- manifest_texts = [ "import '#{modname}'",
699
- "import '#{modname}/init'",
700
- "import '#{modname}/init.pp'" ]
233
+ # Make sure that file importing changes file relative names.
234
+ def test_changingrelativenames
235
+ dir = tempfile
236
+ Dir.mkdir(dir)
237
+ Dir.mkdir(File.join(dir, "subdir"))
238
+ top = File.join(dir, "site.pp")
239
+ subone = File.join(dir, "subdir/subone")
240
+ subtwo = File.join(dir, "subdir/subtwo")
701
241
 
702
- manifest = File.join(modpath, "manifest.pp")
703
- manifest_texts.each do |txt|
704
- File.open(manifest, "w") { |f| f.puts txt }
242
+ files = []
243
+ file = tempfile
244
+ files << file
705
245
 
706
- assert_nothing_raised {
707
- parser = mkparser
708
- parser.file = manifest
709
- parser.parse
710
- }
711
- assert_creates(manifest, *targets)
712
- end
246
+ File.open(subone + ".pp", "w") do |f|
247
+ f.puts %{class one { file { "#{file}": ensure => file }}}
713
248
  end
714
249
 
715
- # #544
716
- def test_ignoreimports
717
- parser = mkparser
718
-
719
- assert(! Puppet[:ignoreimport], ":ignoreimport defaulted to true")
720
- assert_raise(Puppet::ParseError, "Did not fail on missing import") do
721
- parser.parse("import 'nosuchfile'")
722
- end
723
- assert_nothing_raised("could not set :ignoreimport") do
724
- Puppet[:ignoreimport] = true
725
- end
726
- assert_nothing_raised("Parser did not follow :ignoreimports") do
727
- parser.parse("import 'nosuchfile'")
728
- end
729
- end
730
-
731
- def test_multiple_imports_on_one_line
732
- one = tempfile
733
- two = tempfile
734
- base = tempfile
735
- File.open(one, "w") { |f| f.puts "$var = value" }
736
- File.open(two, "w") { |f| f.puts "$var = value" }
737
- File.open(base, "w") { |f| f.puts "import '#{one}', '#{two}'" }
738
-
739
- parser = mkparser
740
- parser.file = base
741
-
742
- # Importing is logged at debug time.
743
- Puppet::Util::Log.level = :debug
744
- assert_nothing_raised("Parser could not import multiple files at once") do
745
- parser.parse
746
- end
747
-
748
- [one, two].each do |file|
749
- assert(@logs.detect { |l| l.message =~ /importing '#{file}'/},
750
- "did not import %s" % file)
751
- end
752
- end
753
-
754
- def test_cannot_assign_qualified_variables
755
- parser = mkparser
756
- assert_raise(Puppet::ParseError, "successfully assigned a qualified variable") do
757
- parser.parse("$one::two = yay")
758
- end
759
- end
760
-
761
- # #588
762
- def test_globbing_with_directories
763
- dir = tempfile
764
- Dir.mkdir(dir)
765
- subdir = File.join(dir, "subdir")
766
- Dir.mkdir(subdir)
767
- file = File.join(dir, "file.pp")
768
- maker = tempfile
769
- File.open(file, "w") { |f| f.puts "file { '#{maker}': ensure => file }" }
770
-
771
- parser = mkparser
772
- assert_nothing_raised("Globbing failed when it matched a directory") do
773
- parser.import("%s/*" % dir)
774
- end
250
+ otherfile = tempfile
251
+ files << otherfile
252
+ File.open(subtwo + ".pp", "w") do |f|
253
+ f.puts %{import "subone"\n class two inherits one {
254
+ file { "#{otherfile}": ensure => file }
255
+ }}
775
256
  end
776
257
 
777
- # #629 - undef keyword
778
- def test_undef
779
- parser = mkparser
780
- result = nil
781
- assert_nothing_raised("Could not parse assignment to undef") {
782
- result = parser.parse %{$variable = undef}
783
- }
784
-
785
- main = result.hostclass("").code
786
- children = main.children
787
- assert_instance_of(AST::VarDef, main.children[0])
788
- assert_instance_of(AST::Undef, main.children[0].value)
258
+ File.open(top, "w") do |f|
259
+ f.puts %{import "subdir/subtwo"}
789
260
  end
790
261
 
791
- # Prompted by #729 -- parsing should not modify the interpreter.
792
- def test_parse
793
- parser = mkparser
262
+ parser = mkparser
263
+ parser.file = top
794
264
 
795
- str = "file { '/tmp/yay': ensure => file }\nclass yay {}\nnode foo {}\ndefine bar {}\n"
796
- result = nil
797
- assert_nothing_raised("Could not parse") do
798
- result = parser.parse(str)
799
- end
800
- assert_instance_of(Puppet::Parser::LoadedCode, result, "Did not get a ASTSet back from parsing")
265
+ assert_nothing_raised {
266
+ parser.parse
267
+ }
268
+ end
801
269
 
802
- assert_instance_of(AST::HostClass, result.hostclass("yay"), "Did not create 'yay' class")
803
- assert_instance_of(AST::HostClass, result.hostclass(""), "Did not create main class")
804
- assert_instance_of(AST::Definition, result.definition("bar"), "Did not create 'bar' definition")
805
- assert_instance_of(AST::Node, result.node("foo"), "Did not create 'foo' node")
806
- end
270
+ # Defaults are purely syntactical, so it doesn't make sense to be able to
271
+ # collect them.
272
+ def test_uncollectabledefaults
273
+ string = "@Port { protocols => tcp }"
807
274
 
808
- # Make sure our node gets added to the node table.
809
- def test_newnode
810
- parser = mkparser
811
-
812
- # First just try calling it directly
813
- assert_nothing_raised {
814
- parser.newnode("mynode", :code => :yay)
815
- }
816
-
817
- assert_equal(:yay, parser.node("mynode").code)
818
-
819
- # Now make sure that trying to redefine it throws an error.
820
- assert_raise(Puppet::ParseError) {
821
- parser.newnode("mynode", {})
822
- }
823
-
824
- # Now try one with no code
825
- assert_nothing_raised {
826
- parser.newnode("simplenode", :parent => :foo)
827
- }
828
-
829
- # Now define the parent node
830
- parser.newnode(:foo)
831
-
832
- # And make sure we get things back correctly
833
- assert_equal(:foo, parser.node("simplenode").parentclass)
834
- assert_nil(parser.node("simplenode").code)
835
-
836
- # Now make sure that trying to redefine it throws an error.
837
- assert_raise(Puppet::ParseError) {
838
- parser.newnode("mynode", {})
839
- }
840
-
841
- # Test multiple names
842
- names = ["one", "two", "three"]
843
- assert_nothing_raised {
844
- parser.newnode(names, {:code => :yay, :parent => :foo})
845
- }
846
-
847
- names.each do |name|
848
- assert_equal(:yay, parser.node(name).code)
849
- assert_equal(:foo, parser.node(name).parentclass)
850
- # Now make sure that trying to redefine it throws an error.
851
- assert_raise(Puppet::ParseError) {
852
- parser.newnode(name, {})
853
- }
854
- end
855
- end
275
+ assert_raise(Puppet::ParseError) {
276
+ mkparser.parse(string)
277
+ }
278
+ end
856
279
 
857
- def test_newdefine
858
- parser = mkparser
280
+ # Verify that we can parse collections
281
+ def test_collecting
282
+ text = "Port <| |>"
283
+ parser = mkparser
284
+ parser.string = text
859
285
 
860
- assert_nothing_raised {
861
- parser.newdefine("mydefine", :code => :yay,
862
- :arguments => ["a", stringobj("b")])
863
- }
864
-
865
- mydefine = parser.definition("mydefine")
866
- assert(mydefine, "Could not find definition")
867
- assert_equal("", mydefine.namespace)
868
- assert_equal("mydefine", mydefine.classname)
869
-
870
- assert_raise(Puppet::ParseError) do
871
- parser.newdefine("mydefine", :code => :yay,
872
- :arguments => ["a", stringobj("b")])
873
- end
286
+ ret = nil
287
+ assert_nothing_raised {
288
+ ret = parser.parse
289
+ }
874
290
 
875
- # Now define the same thing in a different scope
876
- assert_nothing_raised {
877
- parser.newdefine("other::mydefine", :code => :other,
878
- :arguments => ["a", stringobj("b")])
879
- }
880
- other = parser.definition("other::mydefine")
881
- assert(other, "Could not find definition")
882
- assert(parser.definition("other::mydefine"),
883
- "Could not find other::mydefine")
884
- assert_equal(:other, other.code)
885
- assert_equal("other", other.namespace)
886
- assert_equal("other::mydefine", other.classname)
291
+ ret.hostclass("").code.each do |obj|
292
+ assert_instance_of(AST::Collection, obj)
887
293
  end
294
+ end
888
295
 
889
- def test_newclass
890
- scope = mkscope
891
- parser = scope.compiler.parser
892
-
893
- mkcode = proc do |ary|
894
- classes = ary.collect do |string|
895
- AST::FlatString.new(:value => string)
896
- end
897
- AST::ASTArray.new(:children => classes)
898
- end
899
-
900
-
901
- # First make sure that code is being appended
902
- code = mkcode.call(%w{original code})
903
-
904
- klass = nil
905
- assert_nothing_raised {
906
- klass = parser.newclass("myclass", :code => code)
907
- }
908
-
909
- assert(klass, "Did not return class")
910
-
911
- assert(parser.hostclass("myclass"), "Could not find definition")
912
- assert_equal("myclass", parser.hostclass("myclass").classname)
913
- assert_equal(%w{original code},
914
- parser.hostclass("myclass").code.evaluate(scope))
915
-
916
- # Newclass behaves differently than the others -- it just appends
917
- # the code to the existing class.
918
- code = mkcode.call(%w{something new})
919
- assert_nothing_raised do
920
- klass = parser.newclass("myclass", :code => code)
921
- end
922
- assert(klass, "Did not return class when appending")
923
- assert_equal(%w{original code something new},
924
- parser.hostclass("myclass").code.evaluate(scope))
925
-
926
- # Now create the same class name in a different scope
927
- assert_nothing_raised {
928
- klass = parser.newclass("other::myclass",
929
- :code => mkcode.call(%w{something diff}))
930
- }
931
- assert(klass, "Did not return class")
932
- other = parser.hostclass("other::myclass")
933
- assert(other, "Could not find class")
934
- assert_equal("other::myclass", other.classname)
935
- assert_equal("other::myclass", other.namespace)
936
- assert_equal(%w{something diff},
937
- other.code.evaluate(scope))
938
-
939
- # Make sure newclass deals correctly with nodes with no code
940
- klass = parser.newclass("nocode")
941
- assert(klass, "Did not return class")
942
-
943
- assert_nothing_raised do
944
- klass = parser.newclass("nocode", :code => mkcode.call(%w{yay test}))
945
- end
946
- assert(klass, "Did not return class with no code")
947
- assert_equal(%w{yay test},
948
- parser.hostclass("nocode").code.evaluate(scope))
949
-
950
- # Then try merging something into nothing
951
- parser.newclass("nocode2", :code => mkcode.call(%w{foo test}))
952
- assert(klass, "Did not return class with no code")
953
-
954
- assert_nothing_raised do
955
- klass = parser.newclass("nocode2")
956
- end
957
- assert(klass, "Did not return class with no code")
958
- assert_equal(%w{foo test},
959
- parser.hostclass("nocode2").code.evaluate(scope))
960
-
961
- # And lastly, nothing and nothing
962
- klass = parser.newclass("nocode3")
963
- assert(klass, "Did not return class with no code")
964
-
965
- assert_nothing_raised do
966
- klass = parser.newclass("nocode3")
967
- end
968
- assert(klass, "Did not return class with no code")
969
- assert_nil(parser.hostclass("nocode3").code)
296
+ def test_emptyfile
297
+ file = tempfile
298
+ File.open(file, "w") do |f|
299
+ f.puts %{}
970
300
  end
301
+ parser = mkparser
302
+ parser.file = file
303
+ assert_nothing_raised {
304
+ parser.parse
305
+ }
306
+ end
971
307
 
972
- # Make sure you can't have classes and defines with the same name in the
973
- # same scope.
974
- def test_classes_beat_defines
975
- parser = mkparser
976
-
977
- assert_nothing_raised {
978
- parser.newclass("yay::funtest")
979
- }
980
-
981
- assert_raise(Puppet::ParseError) do
982
- parser.newdefine("yay::funtest")
983
- end
308
+ def test_multiple_nodes_named
309
+ file = tempfile
310
+ other = tempfile
984
311
 
985
- assert_nothing_raised {
986
- parser.newdefine("yay::yaytest")
987
- }
312
+ File.open(file, "w") do |f|
313
+ f.puts %{
314
+ node nodeA, nodeB {
315
+ file { "#{other}": ensure => file }
988
316
 
989
- assert_raise(Puppet::ParseError) do
990
- parser.newclass("yay::yaytest")
991
- end
317
+ }
318
+ }
992
319
  end
993
320
 
994
- def test_namesplit
995
- parser = mkparser
996
-
997
- assert_nothing_raised do
998
- {"base::sub" => %w{base sub},
999
- "main" => ["", "main"],
1000
- "one::two::three::four" => ["one::two::three", "four"],
1001
- }.each do |name, ary|
1002
- result = parser.namesplit(name)
1003
- assert_equal(ary, result, "%s split to %s" % [name, result])
1004
- end
1005
- end
1006
- end
321
+ parser = mkparser
322
+ parser.file = file
323
+ ast = nil
324
+ assert_nothing_raised {
325
+ ast = parser.parse
326
+ }
327
+ end
1007
328
 
1008
- # Now make sure we get appropriate behaviour with parent class conflicts.
1009
- def test_newclass_parentage
1010
- parser = mkparser
1011
- parser.newclass("base1")
1012
- parser.newclass("one::two::three")
1013
-
1014
- # First create it with no parentclass.
1015
- assert_nothing_raised {
1016
- parser.newclass("sub")
1017
- }
1018
- assert(parser.hostclass("sub"), "Could not find definition")
1019
- assert_nil(parser.hostclass("sub").parentclass)
1020
-
1021
- # Make sure we can't set the parent class to ourself.
1022
- assert_raise(Puppet::ParseError) {
1023
- parser.newclass("sub", :parent => "sub")
1024
- }
1025
-
1026
- # Now create another one, with a parentclass.
1027
- assert_nothing_raised {
1028
- parser.newclass("sub", :parent => "base1")
1029
- }
1030
-
1031
- # Make sure we get the right parent class, and make sure it's not an object.
1032
- assert_equal("base1",
1033
- parser.hostclass("sub").parentclass)
1034
-
1035
- # Now make sure we get a failure if we try to conflict.
1036
- assert_raise(Puppet::ParseError) {
1037
- parser.newclass("sub", :parent => "one::two::three")
1038
- }
1039
-
1040
- # Make sure that failure didn't screw us up in any way.
1041
- assert_equal("base1",
1042
- parser.hostclass("sub").parentclass)
1043
- # But make sure we can create a class with a fq parent
1044
- assert_nothing_raised {
1045
- parser.newclass("another", :parent => "one::two::three")
1046
- }
1047
- assert_equal("one::two::three",
1048
- parser.hostclass("another").parentclass)
329
+ def test_emptyarrays
330
+ str = %{$var = []\n}
1049
331
 
1050
- end
332
+ parser = mkparser
333
+ parser.string = str
1051
334
 
1052
- # Setup a module.
1053
- def mk_module(name, files = {})
1054
- mdir = File.join(@dir, name)
1055
- mandir = File.join(mdir, "manifests")
1056
- FileUtils.mkdir_p mandir
335
+ # Make sure it parses fine
336
+ assert_nothing_raised {
337
+ parser.parse
338
+ }
339
+ end
1057
340
 
1058
- if defs = files[:define]
1059
- files.delete(:define)
1060
- end
1061
- Dir.chdir(mandir) do
1062
- files.each do |file, classes|
1063
- File.open("%s.pp" % file, "w") do |f|
1064
- classes.each { |klass|
1065
- if defs
1066
- f.puts "define %s {}" % klass
1067
- else
1068
- f.puts "class %s {}" % klass
1069
- end
1070
- }
1071
- end
1072
- end
1073
- end
1074
- end
1075
-
1076
- # #596 - make sure classes and definitions load automatically if they're in modules, so we don't have to manually load each one.
1077
- def test_module_autoloading
1078
- @dir = tempfile
1079
- Puppet[:modulepath] = @dir
1080
-
1081
- FileUtils.mkdir_p @dir
1082
-
1083
- parser = mkparser
1084
-
1085
- # Make sure we fail like normal for actually missing classes
1086
- assert_nil(parser.find_hostclass("", "nosuchclass"), "Did not return nil on missing classes")
1087
-
1088
- # test the simple case -- the module class itself
1089
- name = "simple"
1090
- mk_module(name, :init => [name])
1091
-
1092
- # Try to load the module automatically now
1093
- klass = parser.find_hostclass("", name)
1094
- assert_instance_of(AST::HostClass, klass, "Did not autoload class from module init file")
1095
- assert_equal(name, klass.classname, "Incorrect class was returned")
1096
-
1097
- # Try loading the simple module when we're in something other than the base namespace.
1098
- parser = mkparser
1099
- klass = parser.find_hostclass("something::else", name)
1100
- assert_instance_of(AST::HostClass, klass, "Did not autoload class from module init file")
1101
- assert_equal(name, klass.classname, "Incorrect class was returned")
1102
-
1103
- # Now try it with a definition as the base file
1104
- name = "simpdef"
1105
- mk_module(name, :define => true, :init => [name])
1106
-
1107
- klass = parser.find_definition("", name)
1108
- assert_instance_of(AST::Definition, klass, "Did not autoload class from module init file")
1109
- assert_equal(name, klass.classname, "Incorrect class was returned")
1110
-
1111
- # Now try it with namespace classes where both classes are in the init file
1112
- parser = mkparser
1113
- modname = "both"
1114
- name = "sub"
1115
- mk_module(modname, :init => %w{both both::sub})
1116
-
1117
- # First try it with a namespace
1118
- klass = parser.find_hostclass("both", name)
1119
- assert_instance_of(AST::HostClass, klass, "Did not autoload sub class from module init file with a namespace")
1120
- assert_equal("both::sub", klass.classname, "Incorrect class was returned")
1121
-
1122
- # Now try it using the fully qualified name
1123
- parser = mkparser
1124
- klass = parser.find_hostclass("", "both::sub")
1125
- assert_instance_of(AST::HostClass, klass, "Did not autoload sub class from module init file with no namespace")
1126
- assert_equal("both::sub", klass.classname, "Incorrect class was returned")
1127
-
1128
-
1129
- # Now try it with the class in a different file
1130
- parser = mkparser
1131
- modname = "separate"
1132
- name = "sub"
1133
- mk_module(modname, :init => %w{separate}, :sub => %w{separate::sub})
1134
-
1135
- # First try it with a namespace
1136
- klass = parser.find_hostclass("separate", name)
1137
- assert_instance_of(AST::HostClass, klass, "Did not autoload sub class from separate file with a namespace")
1138
- assert_equal("separate::sub", klass.classname, "Incorrect class was returned")
1139
-
1140
- # Now try it using the fully qualified name
1141
- parser = mkparser
1142
- klass = parser.find_hostclass("", "separate::sub")
1143
- assert_instance_of(AST::HostClass, klass, "Did not autoload sub class from separate file with no namespace")
1144
- assert_equal("separate::sub", klass.classname, "Incorrect class was returned")
1145
-
1146
- # Now make sure we don't get a failure when there's no module file
1147
- parser = mkparser
1148
- modname = "alone"
1149
- name = "sub"
1150
- mk_module(modname, :sub => %w{alone::sub})
1151
-
1152
- # First try it with a namespace
1153
- assert_nothing_raised("Could not autoload file when module file is missing") do
1154
- klass = parser.find_hostclass("alone", name)
1155
- end
1156
- assert_instance_of(AST::HostClass, klass, "Did not autoload sub class from alone file with a namespace")
1157
- assert_equal("alone::sub", klass.classname, "Incorrect class was returned")
1158
-
1159
- # Now try it using the fully qualified name
1160
- parser = mkparser
1161
- klass = parser.find_hostclass("", "alone::sub")
1162
- assert_instance_of(AST::HostClass, klass, "Did not autoload sub class from alone file with no namespace")
1163
- assert_equal("alone::sub", klass.classname, "Incorrect class was returned")
1164
-
1165
- # and with the definition in its own file
1166
- name = "mymod"
1167
- mk_module(name, :define => true, :mydefine => ["mymod::mydefine"])
1168
-
1169
- klass = parser.find_definition("", "mymod::mydefine")
1170
- assert_instance_of(AST::Definition, klass, "Did not autoload definition from its own file")
1171
- assert_equal("mymod::mydefine", klass.classname, "Incorrect definition was returned")
1172
- end
1173
-
1174
- # Make sure class, node, and define methods are case-insensitive
1175
- def test_structure_case_insensitivity
1176
- parser = mkparser
341
+ # Make sure function names aren't reserved words.
342
+ def test_functionnamecollision
343
+ str = %{tag yayness
344
+ tag(rahness)
1177
345
 
1178
- result = nil
1179
- assert_nothing_raised do
1180
- result = parser.newclass "Yayness"
1181
- end
1182
- assert_equal(result, parser.find_hostclass("", "yayNess"))
1183
-
1184
- assert_nothing_raised do
1185
- result = parser.newdefine "FunTest"
1186
- end
1187
- assert_equal(result, parser.find_definition("", "fUntEst"),
1188
- "%s was not matched" % "fUntEst")
346
+ file { "/tmp/yayness":
347
+ tag => "rahness",
348
+ ensure => exists
349
+ }
350
+ }
351
+ parser = mkparser
352
+ parser.string = str
353
+
354
+ # Make sure it parses fine
355
+ assert_nothing_raised {
356
+ parser.parse
357
+ }
358
+ end
359
+
360
+ def test_metaparams_in_definition_prototypes
361
+ parser = mkparser
362
+
363
+
364
+ assert_raise(Puppet::ParseError) {
365
+ parser.parse %{define mydef($schedule) {}}
366
+ }
367
+
368
+ assert_nothing_raised {
369
+ parser.parse %{define adef($schedule = false) {}}
370
+ parser.parse %{define mydef($schedule = daily) {}}
371
+ }
372
+ end
373
+
374
+ def test_parsingif
375
+ parser = mkparser
376
+ exec = proc do |val|
377
+ %{exec { "/bin/echo #{val}": logoutput => true }}
378
+ end
379
+ str1 = %{if true { #{exec.call("true")} }}
380
+ ret = nil
381
+ assert_nothing_raised {
382
+ ret = parser.parse(str1).hostclass("").code[0]
383
+ }
384
+ assert_instance_of(Puppet::Parser::AST::IfStatement, ret)
385
+ parser = mkparser
386
+ str2 = %{if true { #{exec.call("true")} } else { #{exec.call("false")} }}
387
+ ret = parser.parse(str2).hostclass("").code[0]
388
+ assert_instance_of(Puppet::Parser::AST::IfStatement, ret)
389
+ assert_instance_of(Puppet::Parser::AST::Else, ret.else)
390
+ end
391
+
392
+ def test_hostclass
393
+ parser = mkparser
394
+
395
+ assert_nothing_raised {
396
+ parser.parse %{class myclass { class other {} }}
397
+ }
398
+ assert(parser.hostclass("myclass"), "Could not find myclass")
399
+ assert(parser.hostclass("myclass::other"), "Could not find myclass::other")
400
+
401
+ assert_nothing_raised {
402
+ parser.parse "class base {}
403
+ class container {
404
+ class deep::sub inherits base {}
405
+ }"
406
+ }
407
+ sub = parser.hostclass("container::deep::sub")
408
+ assert(sub, "Could not find sub")
409
+
410
+ # Now try it with a parent class being a fq class
411
+ assert_nothing_raised {
412
+ parser.parse "class container::one inherits container::deep::sub {}"
413
+ }
414
+ sub = parser.hostclass("container::one")
415
+ assert(sub, "Could not find one")
416
+ assert_equal("container::deep::sub", sub.parent)
417
+
418
+ # Finally, try including a qualified class
419
+ assert_nothing_raised("Could not include fully qualified class") {
420
+ parser.parse "include container::deep::sub"
421
+ }
422
+ end
423
+
424
+ def test_topnamespace
425
+ parser = mkparser
426
+
427
+ # Make sure we put the top-level code into a class called "" in
428
+ # the "" namespace
429
+ assert_nothing_raised do
430
+ out = parser.parse ""
431
+
432
+ assert_instance_of(Puppet::Resource::TypeCollection, out)
433
+ assert_nil(parser.hostclass(""), "Got a 'main' class when we had no code")
434
+ end
435
+
436
+ # Now try something a touch more complicated
437
+ parser.initvars
438
+ assert_nothing_raised do
439
+ out = parser.parse "Exec { path => '/usr/bin:/usr/sbin' }"
440
+ assert_instance_of(Puppet::Resource::TypeCollection, out)
441
+ assert_equal("", parser.hostclass("").name)
442
+ assert_equal("", parser.hostclass("").namespace)
443
+ end
444
+ end
445
+
446
+ # Make sure virtual and exported resources work appropriately.
447
+ def test_virtualresources
448
+ tests = [:virtual]
449
+ if Puppet.features.rails?
450
+ catalog_cache_class = Puppet::Resource::Catalog.indirection.cache_class
451
+ facts_cache_class = Puppet::Node::Facts.indirection.cache_class
452
+ node_cache_class = Puppet::Node.indirection.cache_class
453
+ Puppet[:storeconfigs] = true
454
+ tests << :exported
455
+ end
456
+
457
+ tests.each do |form|
458
+ parser = mkparser
459
+
460
+ if form == :virtual
461
+ at = "@"
462
+ else
463
+ at = "@@"
464
+ end
465
+
466
+ check = proc do |res, msg|
467
+ if res.is_a?(Puppet::Parser::Resource)
468
+ txt = res.ref
469
+ else
470
+ txt = res.class
471
+ end
472
+ # Real resources get marked virtual when exported
473
+ if form == :virtual or res.is_a?(Puppet::Parser::Resource)
474
+ assert(res.virtual, "#{msg} #{at}#{txt} is not virtual")
475
+ end
476
+ if form == :virtual
477
+ assert(! res.exported, "#{msg} #{at}#{txt} is exported")
478
+ else
479
+ assert(res.exported, "#{msg} #{at}#{txt} is not exported")
480
+ end
481
+ end
482
+
483
+ ret = nil
484
+ assert_nothing_raised do
485
+ ret = parser.parse("#{at}file { '/tmp/testing': owner => root }")
486
+ end
487
+
488
+ assert_instance_of(AST::ASTArray, ret.hostclass("").code)
489
+ resdef = ret.hostclass("").code[0]
490
+ assert_instance_of(AST::Resource, resdef)
491
+ assert_equal("/tmp/testing", resdef.title.value)
492
+ # We always get an astarray back, so...
493
+ check.call(resdef, "simple resource")
494
+
495
+ # Now let's try it with multiple resources in the same spec
496
+ assert_nothing_raised do
497
+ ret = parser.parse("#{at}file { ['/tmp/1', '/tmp/2']: owner => root }")
498
+ end
499
+
500
+ ret.hostclass("").code.each do |res|
501
+ assert_instance_of(AST::Resource, res)
502
+ check.call(res, "multiresource")
503
+ end
504
+ end
505
+
506
+ ensure
507
+ if Puppet.features.rails?
508
+ Puppet[:storeconfigs] = false
509
+ Puppet::Resource::Catalog.cache_class = catalog_cache_class
510
+ Puppet::Node::Facts.cache_class = facts_cache_class
511
+ Puppet::Node.cache_class = node_cache_class
512
+ end
513
+ end
514
+
515
+ def test_collections
516
+ tests = [:virtual]
517
+ if Puppet.features.rails?
518
+ catalog_cache_class = Puppet::Resource::Catalog.indirection.cache_class
519
+ facts_cache_class = Puppet::Node::Facts.indirection.cache_class
520
+ node_cache_class = Puppet::Node.indirection.cache_class
521
+ Puppet[:storeconfigs] = true
522
+ tests << :exported
1189
523
  end
1190
524
 
1191
- def test_manifests_with_multiple_environments
1192
- parser = mkparser :environment => "something"
1193
-
1194
- # We use an exception to cut short the processing to simplify our stubbing
1195
- #Puppet::Module.expects(:find_manifests).with("test", {:cwd => ".", :environment => "something"}).raises(Puppet::ParseError)
1196
- Puppet::Parser::Files.expects(:find_manifests).with("test", {:cwd => ".", :environment => "something"}).returns([])
525
+ tests.each do |form|
526
+ Puppet::Node::Environment.clear
527
+ parser = mkparser
1197
528
 
1198
- assert_raise(Puppet::ImportError) do
1199
- parser.import("test")
1200
- end
1201
- end
529
+ if form == :virtual
530
+ arrow = "<||>"
531
+ else
532
+ arrow = "<<||>>"
533
+ end
1202
534
 
1203
- def test_watch_file_only_once
1204
- FileTest.stubs(:exists?).returns(true)
1205
- parser = mkparser
1206
- parser.watch_file("doh")
1207
- parser.watch_file("doh")
1208
- assert_equal(1, parser.files.select { |name, file| file.file == "doh" }.length, "Length of watched 'doh' files was not 1")
1209
- end
535
+ ret = nil
536
+ assert_nothing_raised do
537
+ ret = parser.parse("File #{arrow}")
538
+ end
539
+
540
+ coll = ret.hostclass("").code[0]
541
+ assert_instance_of(AST::Collection, coll)
542
+ assert_equal(form, coll.form)
543
+ end
544
+
545
+ ensure
546
+ if Puppet.features.rails?
547
+ Puppet[:storeconfigs] = false
548
+ Puppet::Resource::Catalog.cache_class = catalog_cache_class
549
+ Puppet::Node::Facts.cache_class = facts_cache_class
550
+ Puppet::Node.cache_class = node_cache_class
551
+ end
552
+ end
553
+
554
+ def test_collectionexpressions
555
+ %w{== !=}.each do |oper|
556
+ Puppet::Node::Environment.clear
557
+ str = "File <| title #{oper} '/tmp/testing' |>"
558
+
559
+ parser = mkparser
560
+
561
+ res = nil
562
+ assert_nothing_raised do
563
+ res = parser.parse(str).hostclass("").code[0]
564
+ end
565
+
566
+ assert_instance_of(AST::Collection, res)
567
+
568
+ query = res.query
569
+ assert_instance_of(AST::CollExpr, query)
570
+
571
+ assert_equal(:virtual, query.form)
572
+ assert_equal("title", query.test1.value)
573
+ assert_equal("/tmp/testing", query.test2.value)
574
+ assert_equal(oper, query.oper)
575
+ end
576
+ end
577
+
578
+ def test_collectionstatements
579
+ %w{and or}.each do |joiner|
580
+ str = "File <| title == '/tmp/testing' #{joiner} owner == root |>"
581
+
582
+ parser = mkparser
583
+
584
+ res = nil
585
+ assert_nothing_raised do
586
+ res = parser.parse(str).hostclass("").code[0]
587
+ end
588
+
589
+ assert_instance_of(AST::Collection, res)
590
+
591
+ query = res.query
592
+ assert_instance_of(AST::CollExpr, query)
593
+
594
+ assert_equal(joiner, query.oper)
595
+ assert_instance_of(AST::CollExpr, query.test1)
596
+ assert_instance_of(AST::CollExpr, query.test2)
597
+ end
598
+ end
599
+
600
+ def test_collectionstatements_with_parens
601
+ [
602
+ "(title == '/tmp/testing' and owner == root) or owner == wheel",
603
+ "(title == '/tmp/testing')"
604
+ ].each do |test|
605
+ str = "File <| #{test} |>"
606
+ parser = mkparser
607
+
608
+ res = nil
609
+ assert_nothing_raised("Could not parse '#{test}'") do
610
+ res = parser.parse(str).hostclass("").code[0]
611
+ end
612
+
613
+ assert_instance_of(AST::Collection, res)
614
+
615
+ query = res.query
616
+ assert_instance_of(AST::CollExpr, query)
617
+
618
+ #assert_equal(joiner, query.oper)
619
+ #assert_instance_of(AST::CollExpr, query.test1)
620
+ #assert_instance_of(AST::CollExpr, query.test2)
621
+ end
622
+ end
623
+
624
+ def test_fully_qualified_definitions
625
+ parser = mkparser
626
+
627
+ assert_nothing_raised("Could not parse fully-qualified definition") {
628
+ parser.parse %{define one::two { }}
629
+ }
630
+ assert(parser.definition("one::two"), "Could not find one::two with no namespace")
631
+
632
+ # Now try using the definition
633
+ assert_nothing_raised("Could not parse fully-qualified definition usage") {
634
+ parser.parse %{one::two { yayness: }}
635
+ }
636
+ end
637
+
638
+ # #524
639
+ def test_functions_with_no_arguments
640
+ parser = mkparser
641
+ assert_nothing_raised("Could not parse statement function with no args") {
642
+ parser.parse %{tag()}
643
+ }
644
+ assert_nothing_raised("Could not parse rvalue function with no args") {
645
+ parser.parse %{$testing = template()}
646
+ }
647
+ end
648
+
649
+ # #774
650
+ def test_fully_qualified_collection_statement
651
+ parser = mkparser
652
+ assert_nothing_raised("Could not parse fully qualified collection statement") {
653
+ parser.parse %{Foo::Bar <||>}
654
+ }
655
+ end
656
+
657
+ def test_multiple_imports_on_one_line
658
+ one = tempfile
659
+ two = tempfile
660
+ base = tempfile
661
+ File.open(one, "w") { |f| f.puts "$var = value" }
662
+ File.open(two, "w") { |f| f.puts "$var = value" }
663
+ File.open(base, "w") { |f| f.puts "import '#{one}', '#{two}'" }
664
+
665
+ parser = mkparser
666
+ parser.file = base
667
+
668
+ # Importing is logged at debug time.
669
+ Puppet::Util::Log.level = :debug
670
+ assert_nothing_raised("Parser could not import multiple files at once") do
671
+ parser.parse
672
+ end
673
+
674
+ [one, two].each do |file|
675
+ assert(@logs.detect { |l| l.message =~ /importing '#{file}'/}, "did not import #{file}")
676
+ end
677
+ end
678
+
679
+ def test_cannot_assign_qualified_variables
680
+ parser = mkparser
681
+ assert_raise(Puppet::ParseError, "successfully assigned a qualified variable") do
682
+ parser.parse("$one::two = yay")
683
+ end
684
+ end
685
+
686
+ # #629 - undef keyword
687
+ def test_undef
688
+ parser = mkparser
689
+ result = nil
690
+ assert_nothing_raised("Could not parse assignment to undef") {
691
+ result = parser.parse %{$variable = undef}
692
+ }
693
+
694
+ main = result.hostclass("").code
695
+ children = main.children
696
+ assert_instance_of(AST::VarDef, main.children[0])
697
+ assert_instance_of(AST::Undef, main.children[0].value)
698
+ end
699
+
700
+ # Prompted by #729 -- parsing should not modify the interpreter.
701
+ def test_parse
702
+ parser = mkparser
703
+
704
+ str = "file { '/tmp/yay': ensure => file }\nclass yay {}\nnode foo {}\ndefine bar {}\n"
705
+ result = nil
706
+ assert_nothing_raised("Could not parse") do
707
+ result = parser.parse(str)
708
+ end
709
+ assert_instance_of(Puppet::Resource::TypeCollection, result, "Did not get a ASTSet back from parsing")
710
+
711
+ assert_instance_of(Puppet::Resource::Type, result.hostclass("yay"), "Did not create 'yay' class")
712
+ assert_instance_of(Puppet::Resource::Type, result.hostclass(""), "Did not create main class")
713
+ assert_instance_of(Puppet::Resource::Type, result.definition("bar"), "Did not create 'bar' definition")
714
+ assert_instance_of(Puppet::Resource::Type, result.node("foo"), "Did not create 'foo' node")
715
+ end
716
+
717
+ def test_namesplit
718
+ parser = mkparser
719
+
720
+ assert_nothing_raised do
721
+ {"base::sub" => %w{base sub},
722
+ "main" => ["", "main"],
723
+ "one::two::three::four" => ["one::two::three", "four"],
724
+ }.each do |name, ary|
725
+ result = parser.namesplit(name)
726
+ assert_equal(ary, result, "#{name} split to #{result}")
727
+ end
728
+ end
729
+ end
730
+
731
+ # Make sure class, node, and define methods are case-insensitive
732
+ def test_structure_case_insensitivity
733
+ parser = mkparser
734
+
735
+ result = nil
736
+ assert_nothing_raised do
737
+ result = parser.newclass "Yayness"
738
+ end
739
+ assert_equal(result, parser.find_hostclass("", "yayNess"))
740
+
741
+ assert_nothing_raised do
742
+ result = parser.newdefine "FunTest"
743
+ end
744
+ assert_equal(result, parser.find_definition("", "fUntEst"), "#{"fUntEst"} was not matched")
745
+ end
1210
746
  end
1211
-