puppet 3.3.2 → 3.4.0.rc1

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 (589) hide show
  1. data/CONTRIBUTING.md +22 -0
  2. data/Gemfile +11 -2
  3. data/README.md +13 -17
  4. data/README_DEVELOPER.md +1 -1
  5. data/Rakefile +1 -1
  6. data/examples/hiera/README.md +4 -4
  7. data/ext/debian/puppetmaster.init +1 -0
  8. data/ext/debian/rules +2 -5
  9. data/ext/nagios/check_puppet.rb +7 -7
  10. data/ext/osx/file_mapping.yaml +1 -1
  11. data/ext/osx/preflight.erb +34 -19
  12. data/ext/rack/{files/config.ru → config.ru} +0 -0
  13. data/ext/rack/{files/apache2.conf → example-passenger-vhost.conf} +6 -0
  14. data/ext/redhat/puppet.spec.erb +20 -2
  15. data/ext/systemd/{puppetagent.service → puppet.service} +0 -0
  16. data/lib/hiera_puppet.rb +2 -2
  17. data/lib/puppet/agent.rb +1 -6
  18. data/lib/puppet/application.rb +15 -2
  19. data/lib/puppet/application/agent.rb +2 -7
  20. data/lib/puppet/application/apply.rb +8 -13
  21. data/lib/puppet/application/cert.rb +47 -7
  22. data/lib/puppet/application/device.rb +1 -6
  23. data/lib/puppet/application/face_base.rb +1 -1
  24. data/lib/puppet/application/filebucket.rb +1 -1
  25. data/lib/puppet/application/inspect.rb +3 -12
  26. data/lib/puppet/application/master.rb +1 -6
  27. data/lib/puppet/application/queue.rb +1 -6
  28. data/lib/puppet/application/resource.rb +2 -6
  29. data/lib/puppet/coercion.rb +11 -0
  30. data/lib/puppet/configurer.rb +5 -3
  31. data/lib/puppet/configurer/downloader.rb +3 -1
  32. data/lib/puppet/configurer/plugin_handler.rb +10 -0
  33. data/lib/puppet/confine.rb +80 -0
  34. data/lib/puppet/{provider/confine → confine}/exists.rb +3 -3
  35. data/lib/puppet/{provider/confine → confine}/false.rb +2 -2
  36. data/lib/puppet/{provider/confine → confine}/feature.rb +2 -2
  37. data/lib/puppet/{provider/confine → confine}/true.rb +2 -2
  38. data/lib/puppet/{provider/confine → confine}/variable.rb +2 -2
  39. data/lib/puppet/{provider/confine_collection.rb → confine_collection.rb} +4 -4
  40. data/lib/puppet/{provider/confiner.rb → confiner.rb} +4 -4
  41. data/lib/puppet/daemon.rb +2 -6
  42. data/lib/puppet/data_binding.rb +2 -30
  43. data/lib/puppet/defaults.rb +283 -174
  44. data/lib/puppet/error.rb +1 -0
  45. data/lib/puppet/external/nagios.rb +0 -2
  46. data/lib/puppet/external/nagios/base.rb +4 -3
  47. data/lib/puppet/external/nagios/grammar.ry +173 -112
  48. data/lib/puppet/external/nagios/parser.rb +233 -184
  49. data/lib/puppet/face/file/store.rb +1 -1
  50. data/lib/puppet/face/module/generate.rb +5 -7
  51. data/lib/puppet/face/parser.rb +12 -2
  52. data/lib/puppet/face/plugin.rb +6 -0
  53. data/lib/puppet/feature/base.rb +16 -0
  54. data/lib/puppet/feature/external_facts.rb +5 -0
  55. data/lib/puppet/feature/libuser.rb +1 -1
  56. data/lib/puppet/feature/msgpack.rb +1 -0
  57. data/lib/puppet/feature/rails.rb +2 -2
  58. data/lib/puppet/file_bucket/dipper.rb +8 -6
  59. data/lib/puppet/file_bucket/file.rb +17 -1
  60. data/lib/puppet/file_serving/base.rb +21 -10
  61. data/lib/puppet/file_serving/configuration.rb +5 -7
  62. data/lib/puppet/file_serving/configuration/parser.rb +1 -1
  63. data/lib/puppet/file_serving/content.rb +1 -1
  64. data/lib/puppet/file_serving/fileset.rb +3 -3
  65. data/lib/puppet/file_serving/metadata.rb +22 -18
  66. data/lib/puppet/file_serving/mount/file.rb +1 -1
  67. data/lib/puppet/file_serving/mount/pluginfacts.rb +35 -0
  68. data/lib/puppet/file_system.rb +3 -0
  69. data/lib/puppet/file_system/file.rb +261 -0
  70. data/lib/puppet/file_system/file18.rb +5 -0
  71. data/lib/puppet/file_system/file19.rb +5 -0
  72. data/lib/puppet/file_system/file19windows.rb +113 -0
  73. data/lib/puppet/file_system/memory_file.rb +31 -0
  74. data/lib/puppet/file_system/tempfile.rb +20 -0
  75. data/lib/puppet/indirector/active_record.rb +1 -0
  76. data/lib/puppet/indirector/catalog/compiler.rb +28 -0
  77. data/lib/puppet/indirector/certificate_request/memory.rb +6 -0
  78. data/lib/puppet/indirector/data_binding/hiera.rb +46 -2
  79. data/lib/puppet/indirector/direct_file_server.rb +2 -2
  80. data/lib/puppet/indirector/facts/facter.rb +25 -0
  81. data/lib/puppet/indirector/file_bucket_file/file.rb +60 -74
  82. data/lib/puppet/indirector/indirection.rb +5 -1
  83. data/lib/puppet/indirector/json.rb +1 -1
  84. data/lib/puppet/indirector/key/ca.rb +4 -0
  85. data/lib/puppet/indirector/key/file.rb +7 -3
  86. data/lib/puppet/indirector/key/memory.rb +6 -0
  87. data/lib/puppet/indirector/node/write_only_yaml.rb +2 -2
  88. data/lib/puppet/indirector/request.rb +17 -11
  89. data/lib/puppet/indirector/resource/ral.rb +5 -0
  90. data/lib/puppet/indirector/resource/rest.rb +1 -0
  91. data/lib/puppet/indirector/resource/store_configs.rb +4 -0
  92. data/lib/puppet/indirector/rest.rb +2 -1
  93. data/lib/puppet/indirector/ssl_file.rb +7 -7
  94. data/lib/puppet/indirector/terminus.rb +4 -0
  95. data/lib/puppet/indirector/yaml.rb +3 -3
  96. data/lib/puppet/interface/documentation.rb +4 -11
  97. data/lib/puppet/module.rb +19 -6
  98. data/lib/puppet/module_tool/applications/builder.rb +1 -1
  99. data/lib/puppet/module_tool/applications/installer.rb +1 -1
  100. data/lib/puppet/module_tool/checksums.rb +1 -1
  101. data/lib/puppet/module_tool/dependency.rb +7 -3
  102. data/lib/puppet/module_tool/metadata.rb +6 -2
  103. data/lib/puppet/module_tool/tar.rb +2 -1
  104. data/lib/puppet/module_tool/tar/gnu.rb +6 -2
  105. data/lib/puppet/module_tool/tar/mini.rb +2 -0
  106. data/lib/puppet/module_tool/tar/solaris.rb +2 -5
  107. data/lib/puppet/network/authconfig.rb +0 -2
  108. data/lib/puppet/network/authentication.rb +1 -1
  109. data/lib/puppet/network/authstore.rb +6 -7
  110. data/lib/puppet/network/format.rb +2 -3
  111. data/lib/puppet/network/format_handler.rb +16 -11
  112. data/lib/puppet/network/format_support.rb +14 -0
  113. data/lib/puppet/network/formats.rb +26 -0
  114. data/lib/puppet/network/http/connection.rb +8 -41
  115. data/lib/puppet/network/http/handler.rb +28 -32
  116. data/lib/puppet/network/http/webrick.rb +15 -22
  117. data/lib/puppet/network/http_pool.rb +43 -9
  118. data/lib/puppet/network/rights.rb +0 -0
  119. data/lib/puppet/node.rb +24 -8
  120. data/lib/puppet/node/environment.rb +18 -20
  121. data/lib/puppet/node/facts.rb +23 -6
  122. data/lib/puppet/parameter.rb +15 -2
  123. data/lib/puppet/parameter/boolean.rb +5 -0
  124. data/lib/puppet/parameter/value_collection.rb +6 -4
  125. data/lib/puppet/parser/ast/resourceparam.rb +2 -1
  126. data/lib/puppet/parser/compiler.rb +25 -9
  127. data/lib/puppet/parser/files.rb +1 -1
  128. data/lib/puppet/parser/functions.rb +12 -21
  129. data/lib/puppet/parser/functions/collect.rb +6 -35
  130. data/lib/puppet/parser/functions/contain.rb +26 -0
  131. data/lib/puppet/parser/functions/create_resources.rb +5 -0
  132. data/lib/puppet/parser/functions/extlookup.rb +2 -2
  133. data/lib/puppet/parser/functions/file.rb +1 -1
  134. data/lib/puppet/parser/functions/{reject.rb → filter.rb} +13 -12
  135. data/lib/puppet/parser/functions/fqdn_rand.rb +13 -5
  136. data/lib/puppet/parser/functions/include.rb +18 -1
  137. data/lib/puppet/parser/functions/map.rb +44 -0
  138. data/lib/puppet/parser/functions/select.rb +6 -38
  139. data/lib/puppet/parser/lexer.rb +1 -1
  140. data/lib/puppet/parser/parser_support.rb +1 -1
  141. data/lib/puppet/parser/resource.rb +6 -45
  142. data/lib/puppet/parser/scope.rb +33 -2
  143. data/lib/puppet/parser/type_loader.rb +4 -60
  144. data/lib/puppet/pops/binder/bindings_loader.rb +1 -1
  145. data/lib/puppet/pops/binder/config/binder_config.rb +3 -3
  146. data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +1 -1
  147. data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +1 -1
  148. data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +2 -2
  149. data/lib/puppet/pops/issues.rb +4 -0
  150. data/lib/puppet/pops/model/ast_transformer.rb +4 -1
  151. data/lib/puppet/pops/model/model_label_provider.rb +1 -1
  152. data/lib/puppet/pops/parser/egrammar.ra +5 -24
  153. data/lib/puppet/pops/parser/eparser.rb +859 -902
  154. data/lib/puppet/pops/parser/lexer.rb +48 -30
  155. data/lib/puppet/pops/parser/parser_support.rb +1 -1
  156. data/lib/puppet/pops/patterns.rb +4 -4
  157. data/lib/puppet/pops/utils.rb +1 -1
  158. data/lib/puppet/pops/validation/checker3_1.rb +25 -20
  159. data/lib/puppet/provider.rb +23 -6
  160. data/lib/puppet/provider/aixobject.rb +0 -0
  161. data/lib/puppet/provider/augeas/augeas.rb +21 -5
  162. data/lib/puppet/provider/confine.rb +5 -79
  163. data/lib/puppet/provider/cron/crontab.rb +0 -0
  164. data/lib/puppet/provider/exec.rb +9 -7
  165. data/lib/puppet/provider/exec/posix.rb +10 -1
  166. data/lib/puppet/provider/exec/windows.rb +1 -1
  167. data/lib/puppet/provider/file/posix.rb +1 -0
  168. data/lib/puppet/provider/file/windows.rb +16 -5
  169. data/lib/puppet/provider/group/aix.rb +0 -0
  170. data/lib/puppet/provider/group/windows_adsi.rb +33 -1
  171. data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
  172. data/lib/puppet/provider/mailalias/aliases.rb +0 -0
  173. data/lib/puppet/provider/maillist/mailman.rb +0 -0
  174. data/lib/puppet/provider/mount/parsed.rb +0 -0
  175. data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
  176. data/lib/puppet/provider/package/appdmg.rb +1 -1
  177. data/lib/puppet/provider/package/apple.rb +1 -1
  178. data/lib/puppet/provider/package/apt.rb +1 -1
  179. data/lib/puppet/provider/package/aptitude.rb +0 -0
  180. data/lib/puppet/provider/package/blastwave.rb +1 -1
  181. data/lib/puppet/provider/package/dpkg.rb +1 -1
  182. data/lib/puppet/provider/package/fink.rb +1 -1
  183. data/lib/puppet/provider/package/freebsd.rb +0 -0
  184. data/lib/puppet/provider/package/gem.rb +0 -0
  185. data/lib/puppet/provider/package/macports.rb +0 -0
  186. data/lib/puppet/provider/package/msi.rb +4 -10
  187. data/lib/puppet/provider/package/nim.rb +8 -8
  188. data/lib/puppet/provider/package/openbsd.rb +1 -1
  189. data/lib/puppet/provider/package/opkg.rb +0 -0
  190. data/lib/puppet/provider/package/pacman.rb +2 -2
  191. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  192. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  193. data/lib/puppet/provider/package/ports.rb +0 -0
  194. data/lib/puppet/provider/package/rpm.rb +39 -3
  195. data/lib/puppet/provider/package/sun.rb +3 -3
  196. data/lib/puppet/provider/package/sunfreeware.rb +0 -0
  197. data/lib/puppet/provider/package/windows.rb +12 -19
  198. data/lib/puppet/provider/package/windows/package.rb +1 -1
  199. data/lib/puppet/provider/package/yum.rb +2 -2
  200. data/lib/puppet/provider/parsedfile.rb +0 -0
  201. data/lib/puppet/provider/port/parsed.rb +0 -0
  202. data/lib/puppet/provider/service/base.rb +0 -0
  203. data/lib/puppet/provider/service/bsd.rb +3 -3
  204. data/lib/puppet/provider/service/daemontools.rb +8 -8
  205. data/lib/puppet/provider/service/debian.rb +0 -0
  206. data/lib/puppet/provider/service/freebsd.rb +3 -3
  207. data/lib/puppet/provider/service/init.rb +5 -4
  208. data/lib/puppet/provider/service/launchd.rb +35 -24
  209. data/lib/puppet/provider/service/openbsd.rb +23 -0
  210. data/lib/puppet/provider/service/redhat.rb +0 -0
  211. data/lib/puppet/provider/service/runit.rb +3 -3
  212. data/lib/puppet/provider/service/smf.rb +0 -0
  213. data/lib/puppet/provider/service/src.rb +0 -0
  214. data/lib/puppet/provider/service/systemd.rb +0 -0
  215. data/lib/puppet/provider/service/upstart.rb +3 -3
  216. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +2 -2
  217. data/lib/puppet/provider/sshkey/parsed.rb +0 -0
  218. data/lib/puppet/provider/user/aix.rb +0 -0
  219. data/lib/puppet/provider/user/directoryservice.rb +1 -1
  220. data/lib/puppet/provider/user/useradd.rb +1 -1
  221. data/lib/puppet/provider/zone/solaris.rb +1 -1
  222. data/lib/puppet/rails/benchmark.rb +1 -1
  223. data/lib/puppet/reference/configuration.rb +1 -2
  224. data/lib/puppet/reference/indirection.rb +12 -14
  225. data/lib/puppet/relationship.rb +7 -4
  226. data/lib/puppet/reports.rb +2 -2
  227. data/lib/puppet/reports/rrdgraph.rb +1 -1
  228. data/lib/puppet/reports/store.rb +3 -3
  229. data/lib/puppet/reports/tagmail.rb +2 -2
  230. data/lib/puppet/resource.rb +66 -8
  231. data/lib/puppet/resource/catalog.rb +18 -25
  232. data/lib/puppet/resource/status.rb +10 -4
  233. data/lib/puppet/run.rb +6 -2
  234. data/lib/puppet/settings.rb +39 -119
  235. data/lib/puppet/settings/base_setting.rb +8 -9
  236. data/lib/puppet/settings/directory_setting.rb +8 -0
  237. data/lib/puppet/settings/file_setting.rb +35 -1
  238. data/lib/puppet/settings/priority_setting.rb +42 -0
  239. data/lib/puppet/ssl.rb +4 -0
  240. data/lib/puppet/ssl/certificate.rb +18 -0
  241. data/lib/puppet/ssl/certificate_authority.rb +101 -72
  242. data/lib/puppet/ssl/certificate_authority/autosign_command.rb +44 -0
  243. data/lib/puppet/ssl/certificate_authority/interface.rb +21 -17
  244. data/lib/puppet/ssl/certificate_factory.rb +38 -12
  245. data/lib/puppet/ssl/certificate_request.rb +201 -47
  246. data/lib/puppet/ssl/certificate_request_attributes.rb +34 -0
  247. data/lib/puppet/ssl/certificate_revocation_list.rb +2 -2
  248. data/lib/puppet/ssl/host.rb +21 -10
  249. data/lib/puppet/ssl/inventory.rb +6 -10
  250. data/lib/puppet/ssl/key.rb +1 -1
  251. data/lib/puppet/ssl/oids.rb +78 -0
  252. data/lib/puppet/ssl/validator.rb +41 -97
  253. data/lib/puppet/ssl/validator/default_validator.rb +153 -0
  254. data/lib/puppet/ssl/validator/no_validator.rb +17 -0
  255. data/lib/puppet/status.rb +4 -0
  256. data/lib/puppet/test/test_helper.rb +5 -0
  257. data/lib/puppet/transaction.rb +13 -0
  258. data/lib/puppet/transaction/event.rb +8 -3
  259. data/lib/puppet/transaction/report.rb +6 -2
  260. data/lib/puppet/transaction/resource_harness.rb +173 -115
  261. data/lib/puppet/type.rb +30 -13
  262. data/lib/puppet/type/augeas.rb +12 -46
  263. data/lib/puppet/type/component.rb +1 -7
  264. data/lib/puppet/type/cron.rb +0 -0
  265. data/lib/puppet/type/exec.rb +13 -1
  266. data/lib/puppet/type/file.rb +19 -10
  267. data/lib/puppet/type/file/checksum.rb +0 -0
  268. data/lib/puppet/type/file/content.rb +3 -0
  269. data/lib/puppet/type/file/ensure.rb +33 -15
  270. data/lib/puppet/type/file/group.rb +0 -0
  271. data/lib/puppet/type/file/mode.rb +6 -2
  272. data/lib/puppet/type/file/owner.rb +0 -0
  273. data/lib/puppet/type/file/source.rb +65 -14
  274. data/lib/puppet/type/file/target.rb +6 -6
  275. data/lib/puppet/type/file/type.rb +0 -0
  276. data/lib/puppet/type/filebucket.rb +0 -0
  277. data/lib/puppet/type/group.rb +18 -0
  278. data/lib/puppet/type/host.rb +0 -0
  279. data/lib/puppet/type/k5login.rb +4 -4
  280. data/lib/puppet/type/mailalias.rb +0 -0
  281. data/lib/puppet/type/maillist.rb +0 -0
  282. data/lib/puppet/type/mount.rb +15 -1
  283. data/lib/puppet/type/package.rb +7 -1
  284. data/lib/puppet/type/port.rb +0 -0
  285. data/lib/puppet/type/schedule.rb +9 -4
  286. data/lib/puppet/type/service.rb +1 -1
  287. data/lib/puppet/type/sshkey.rb +0 -0
  288. data/lib/puppet/type/tidy.rb +1 -1
  289. data/lib/puppet/type/user.rb +3 -0
  290. data/lib/puppet/type/yumrepo.rb +8 -6
  291. data/lib/puppet/type/zpool.rb +0 -0
  292. data/lib/puppet/util.rb +4 -31
  293. data/lib/puppet/util/adsi.rb +73 -17
  294. data/lib/puppet/util/autoload.rb +3 -3
  295. data/lib/puppet/util/backups.rb +4 -4
  296. data/lib/puppet/util/cacher.rb +7 -13
  297. data/lib/puppet/util/checksums.rb +2 -2
  298. data/lib/puppet/util/classgen.rb +3 -1
  299. data/lib/puppet/util/colors.rb +1 -0
  300. data/lib/puppet/util/command_line.rb +5 -0
  301. data/lib/puppet/util/docs.rb +33 -27
  302. data/lib/puppet/util/execution.rb +42 -18
  303. data/lib/puppet/util/filetype.rb +3 -3
  304. data/lib/puppet/util/instance_loader.rb +2 -2
  305. data/lib/puppet/util/instrumentation.rb +23 -42
  306. data/lib/puppet/util/instrumentation/data.rb +11 -4
  307. data/lib/puppet/util/instrumentation/indirection_probe.rb +11 -4
  308. data/lib/puppet/util/instrumentation/instrumentable.rb +7 -14
  309. data/lib/puppet/util/instrumentation/listener.rb +15 -8
  310. data/lib/puppet/util/instrumentation/listeners/log.rb +4 -10
  311. data/lib/puppet/util/instrumentation/listeners/performance.rb +8 -14
  312. data/lib/puppet/util/limits.rb +12 -0
  313. data/lib/puppet/util/lockfile.rb +2 -2
  314. data/lib/puppet/util/log.rb +14 -6
  315. data/lib/puppet/util/log/destinations.rb +23 -1
  316. data/lib/puppet/util/metric.rb +9 -3
  317. data/lib/puppet/util/monkey_patches.rb +7 -2
  318. data/lib/puppet/util/network_device/config.rb +1 -1
  319. data/lib/puppet/util/plugins.rb +1 -1
  320. data/lib/puppet/util/posix.rb +0 -0
  321. data/lib/puppet/util/profiler.rb +7 -2
  322. data/lib/puppet/util/provider_features.rb +2 -2
  323. data/lib/puppet/util/rdoc.rb +28 -30
  324. data/lib/puppet/util/rdoc/code_objects.rb +75 -25
  325. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
  326. data/lib/puppet/util/rdoc/parser.rb +12 -487
  327. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +477 -0
  328. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc1.rb +19 -0
  329. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +14 -0
  330. data/lib/puppet/util/reference.rb +1 -1
  331. data/lib/puppet/util/resource_template.rb +1 -1
  332. data/lib/puppet/util/selinux.rb +1 -1
  333. data/lib/puppet/util/storage.rb +2 -2
  334. data/lib/puppet/util/suidmanager.rb +1 -1
  335. data/lib/puppet/util/tag_set.rb +29 -0
  336. data/lib/puppet/util/tagging.rb +8 -24
  337. data/lib/puppet/util/watched_file.rb +1 -1
  338. data/lib/puppet/util/watcher.rb +1 -1
  339. data/lib/puppet/util/windows.rb +3 -0
  340. data/lib/puppet/util/windows/access_control_entry.rb +84 -0
  341. data/lib/puppet/util/windows/access_control_list.rb +106 -0
  342. data/lib/puppet/util/windows/file.rb +213 -0
  343. data/lib/puppet/util/windows/process.rb +199 -0
  344. data/lib/puppet/util/windows/root_certs.rb +52 -37
  345. data/lib/puppet/util/windows/security.rb +270 -245
  346. data/lib/puppet/util/windows/security_descriptor.rb +62 -0
  347. data/lib/puppet/util/windows/sid.rb +26 -4
  348. data/lib/puppet/version.rb +2 -2
  349. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +1 -1
  350. data/spec/fixtures/unit/indirector/{hiera → data_binding/hiera}/global.yaml +0 -0
  351. data/spec/fixtures/unit/indirector/data_binding/hiera/invalid.yaml +1 -0
  352. data/spec/fixtures/unit/module/trailing-comma.json +24 -0
  353. data/spec/fixtures/unit/util/monkey_patches/x509.pem +32 -0
  354. data/spec/integration/application/apply_spec.rb +1 -1
  355. data/spec/integration/application/doc_spec.rb +1 -1
  356. data/spec/integration/configurer_spec.rb +4 -2
  357. data/spec/integration/data_binding.rb +100 -0
  358. data/spec/integration/indirector/catalog/compiler_spec.rb +16 -13
  359. data/spec/integration/indirector/direct_file_server_spec.rb +3 -5
  360. data/spec/integration/indirector/file_content/file_server_spec.rb +2 -2
  361. data/spec/integration/node/facts_spec.rb +1 -1
  362. data/spec/integration/node_spec.rb +1 -1
  363. data/spec/integration/parser/compiler_spec.rb +90 -0
  364. data/spec/integration/parser/parser_spec.rb +2 -2
  365. data/spec/integration/provider/cron/crontab_spec.rb +3 -5
  366. data/spec/integration/resource/catalog_spec.rb +1 -1
  367. data/spec/integration/ssl/autosign_spec.rb +90 -0
  368. data/spec/integration/ssl/certificate_authority_spec.rb +62 -69
  369. data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
  370. data/spec/integration/ssl/host_spec.rb +1 -1
  371. data/spec/integration/transaction_spec.rb +13 -13
  372. data/spec/integration/type/exec_spec.rb +2 -2
  373. data/spec/integration/type/file_spec.rb +287 -45
  374. data/spec/integration/type/tidy_spec.rb +3 -3
  375. data/spec/integration/util/rdoc/parser_spec.rb +236 -35
  376. data/spec/integration/util/settings_spec.rb +1 -1
  377. data/spec/integration/util/windows/process_spec.rb +22 -0
  378. data/spec/integration/util/windows/security_spec.rb +316 -106
  379. data/spec/lib/matchers/containment_matchers.rb +52 -0
  380. data/spec/lib/puppet_spec/compiler.rb +6 -0
  381. data/spec/lib/puppet_spec/files.rb +20 -21
  382. data/spec/shared_behaviours/documentation_on_faces.rb +3 -3
  383. data/spec/shared_behaviours/file_server_terminus.rb +2 -2
  384. data/spec/shared_contexts/platform.rb +1 -0
  385. data/spec/spec_helper.rb +13 -1
  386. data/spec/unit/agent_spec.rb +0 -12
  387. data/spec/unit/application/agent_spec.rb +4 -4
  388. data/spec/unit/application/apply_spec.rb +18 -2
  389. data/spec/unit/application/cert_spec.rb +8 -6
  390. data/spec/unit/application/device_spec.rb +1 -1
  391. data/spec/unit/application/filebucket_spec.rb +1 -1
  392. data/spec/unit/application/inspect_spec.rb +1 -1
  393. data/spec/unit/application_spec.rb +24 -0
  394. data/spec/unit/configurer/downloader_spec.rb +8 -7
  395. data/spec/unit/configurer/fact_handler_spec.rb +23 -0
  396. data/spec/unit/configurer/plugin_handler_spec.rb +7 -2
  397. data/spec/unit/configurer_spec.rb +15 -5
  398. data/spec/unit/{provider/confine → confine}/exists_spec.rb +12 -12
  399. data/spec/unit/{provider/confine → confine}/false_spec.rb +9 -9
  400. data/spec/unit/{provider/confine → confine}/feature_spec.rb +10 -10
  401. data/spec/unit/{provider/confine → confine}/true_spec.rb +7 -7
  402. data/spec/unit/{provider/confine → confine}/variable_spec.rb +16 -16
  403. data/spec/unit/{provider/confine_collection_spec.rb → confine_collection_spec.rb} +30 -30
  404. data/spec/unit/{provider/confine_spec.rb → confine_spec.rb} +11 -11
  405. data/spec/unit/{provider/confiner_spec.rb → confiner_spec.rb} +4 -4
  406. data/spec/unit/face/parser_spec.rb +54 -0
  407. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  408. data/spec/unit/file_serving/base_spec.rb +32 -9
  409. data/spec/unit/file_serving/configuration_spec.rb +7 -7
  410. data/spec/unit/file_serving/content_spec.rb +12 -7
  411. data/spec/unit/file_serving/fileset_spec.rb +57 -27
  412. data/spec/unit/file_serving/metadata_spec.rb +74 -12
  413. data/spec/unit/file_serving/mount/file_spec.rb +10 -10
  414. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +73 -0
  415. data/spec/unit/file_system/file_spec.rb +486 -0
  416. data/spec/unit/file_system/tempfile_spec.rb +48 -0
  417. data/spec/unit/graph/relationship_graph_spec.rb +0 -6
  418. data/spec/unit/hiera_puppet_spec.rb +2 -2
  419. data/spec/unit/indirector/catalog/compiler_spec.rb +15 -19
  420. data/spec/unit/indirector/certificate_status/file_spec.rb +30 -40
  421. data/spec/unit/indirector/data_binding/hiera_spec.rb +95 -2
  422. data/spec/unit/indirector/direct_file_server_spec.rb +6 -6
  423. data/spec/unit/indirector/facts/facter_spec.rb +33 -0
  424. data/spec/unit/indirector/file_bucket_file/file_spec.rb +61 -52
  425. data/spec/unit/indirector/file_metadata/file_spec.rb +2 -2
  426. data/spec/unit/indirector/file_server_spec.rb +4 -4
  427. data/spec/unit/indirector/json_spec.rb +4 -4
  428. data/spec/unit/indirector/key/file_spec.rb +13 -14
  429. data/spec/unit/indirector/resource/ral_spec.rb +7 -0
  430. data/spec/unit/indirector/resource/store_configs_spec.rb +11 -0
  431. data/spec/unit/indirector/rest_spec.rb +7 -3
  432. data/spec/unit/indirector/ssl_file_spec.rb +14 -17
  433. data/spec/unit/indirector/yaml_spec.rb +4 -4
  434. data/spec/unit/module_spec.rb +43 -15
  435. data/spec/unit/module_tool/tar/gnu_spec.rb +2 -2
  436. data/spec/unit/module_tool/tar/solaris_spec.rb +2 -2
  437. data/spec/unit/module_tool/tar_spec.rb +45 -0
  438. data/spec/unit/network/authconfig_spec.rb +2 -1
  439. data/spec/unit/network/authentication_spec.rb +2 -2
  440. data/spec/unit/network/format_handler_spec.rb +2 -2
  441. data/spec/unit/network/formats_spec.rb +24 -0
  442. data/spec/unit/network/http/connection_spec.rb +76 -199
  443. data/spec/unit/network/http/handler_spec.rb +33 -34
  444. data/spec/unit/network/http_pool_spec.rb +8 -5
  445. data/spec/unit/node/environment_spec.rb +76 -90
  446. data/spec/unit/node/facts_spec.rb +20 -3
  447. data/spec/unit/node_spec.rb +43 -0
  448. data/spec/unit/parameter/boolean_spec.rb +22 -12
  449. data/spec/unit/parser/ast/resourceparam_spec.rb +51 -0
  450. data/spec/unit/parser/compiler_spec.rb +103 -35
  451. data/spec/unit/parser/eparser_adapter_spec.rb +12 -12
  452. data/spec/unit/parser/files_spec.rb +11 -11
  453. data/spec/unit/parser/functions/contain_spec.rb +185 -0
  454. data/spec/unit/parser/functions/create_resources_spec.rb +13 -5
  455. data/spec/unit/parser/functions/generate_spec.rb +1 -1
  456. data/spec/unit/parser/functions_spec.rb +2 -2
  457. data/spec/unit/parser/lexer_spec.rb +1 -1
  458. data/spec/unit/parser/methods/each_spec.rb +1 -1
  459. data/spec/unit/parser/methods/{select_spec.rb → filter_spec.rb} +11 -11
  460. data/spec/unit/parser/methods/map_spec.rb +95 -0
  461. data/spec/unit/parser/methods/reduce_spec.rb +12 -11
  462. data/spec/unit/parser/methods/shared.rb +5 -5
  463. data/spec/unit/parser/methods/slice_spec.rb +13 -13
  464. data/spec/unit/parser/parser_spec.rb +1 -1
  465. data/spec/unit/parser/resource/param_spec.rb +44 -0
  466. data/spec/unit/parser/resource_spec.rb +16 -15
  467. data/spec/unit/pops/model/ast_transformer_spec.rb +18 -4
  468. data/spec/unit/pops/parser/lexer_spec.rb +22 -5
  469. data/spec/unit/pops/parser/parse_calls_spec.rb +5 -5
  470. data/spec/unit/pops/transformer/transform_calls_spec.rb +6 -6
  471. data/spec/unit/pops/transformer/transform_containers_spec.rb +2 -2
  472. data/spec/unit/pops/validator/validator_spec.rb +31 -0
  473. data/spec/unit/provider/augeas/augeas_spec.rb +57 -2
  474. data/spec/unit/provider/exec/posix_spec.rb +8 -3
  475. data/spec/unit/provider/file/posix_spec.rb +2 -2
  476. data/spec/unit/provider/group/windows_adsi_spec.rb +70 -3
  477. data/spec/unit/provider/nameservice/directoryservice_spec.rb +3 -3
  478. data/spec/unit/provider/package/apt_spec.rb +1 -1
  479. data/spec/unit/provider/package/msi_spec.rb +15 -42
  480. data/spec/unit/provider/package/openbsd_spec.rb +3 -3
  481. data/spec/unit/provider/package/rpm_spec.rb +56 -13
  482. data/spec/unit/provider/package/windows_spec.rb +15 -19
  483. data/spec/unit/provider/service/base_spec.rb +1 -1
  484. data/spec/unit/provider/service/daemontools_spec.rb +18 -8
  485. data/spec/unit/provider/service/freebsd_spec.rb +3 -3
  486. data/spec/unit/provider/service/gentoo_spec.rb +5 -2
  487. data/spec/unit/provider/service/init_spec.rb +17 -17
  488. data/spec/unit/provider/service/launchd_spec.rb +76 -23
  489. data/spec/unit/provider/service/openbsd_spec.rb +125 -0
  490. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  491. data/spec/unit/provider/service/runit_spec.rb +12 -5
  492. data/spec/unit/provider/service/upstart_spec.rb +4 -4
  493. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +5 -5
  494. data/spec/unit/provider/user/directoryservice_spec.rb +4 -4
  495. data/spec/unit/provider/zone/solaris_spec.rb +1 -1
  496. data/spec/unit/provider_spec.rb +2 -2
  497. data/spec/unit/reports/http_spec.rb +19 -34
  498. data/spec/unit/reports/store_spec.rb +2 -2
  499. data/spec/unit/resource/catalog_spec.rb +81 -11
  500. data/spec/unit/resource/status_spec.rb +11 -1
  501. data/spec/unit/resource/type_spec.rb +30 -1
  502. data/spec/unit/resource_spec.rb +40 -4
  503. data/spec/unit/settings/file_setting_spec.rb +2 -2
  504. data/spec/unit/settings/path_setting_spec.rb +2 -2
  505. data/spec/unit/settings/priority_setting_spec.rb +66 -0
  506. data/spec/unit/settings_spec.rb +16 -31
  507. data/spec/unit/ssl/certificate_authority/autosign_command_spec.rb +30 -0
  508. data/spec/unit/ssl/certificate_authority_spec.rb +129 -134
  509. data/spec/unit/ssl/certificate_factory_spec.rb +18 -0
  510. data/spec/unit/ssl/certificate_request_attributes_spec.rb +61 -0
  511. data/spec/unit/ssl/certificate_request_spec.rb +103 -0
  512. data/spec/unit/ssl/certificate_spec.rb +31 -18
  513. data/spec/unit/ssl/host_spec.rb +34 -8
  514. data/spec/unit/ssl/inventory_spec.rb +27 -62
  515. data/spec/unit/ssl/key_spec.rb +4 -4
  516. data/spec/unit/ssl/oids_spec.rb +48 -0
  517. data/spec/unit/ssl/validator_spec.rb +49 -6
  518. data/spec/unit/status_spec.rb +9 -0
  519. data/spec/unit/transaction/event_spec.rb +1 -9
  520. data/spec/unit/transaction/report_spec.rb +20 -1
  521. data/spec/unit/transaction/resource_harness_spec.rb +60 -210
  522. data/spec/unit/transaction_spec.rb +54 -8
  523. data/spec/unit/type/component_spec.rb +2 -2
  524. data/spec/unit/type/exec_spec.rb +14 -7
  525. data/spec/unit/type/file/content_spec.rb +13 -2
  526. data/spec/unit/type/file/ctime_spec.rb +1 -1
  527. data/spec/unit/type/file/mode_spec.rb +48 -2
  528. data/spec/unit/type/file/mtime_spec.rb +1 -1
  529. data/spec/unit/type/file/source_spec.rb +177 -7
  530. data/spec/unit/type/file_spec.rb +63 -71
  531. data/spec/unit/type/group_spec.rb +20 -0
  532. data/spec/unit/type/k5login_spec.rb +3 -3
  533. data/spec/unit/type/mount_spec.rb +53 -0
  534. data/spec/unit/type/nagios_spec.rb +216 -0
  535. data/spec/unit/type/package_spec.rb +7 -1
  536. data/spec/unit/type/schedule_spec.rb +6 -0
  537. data/spec/unit/type/service_spec.rb +3 -3
  538. data/spec/unit/type/tidy_spec.rb +14 -14
  539. data/spec/unit/type/user_spec.rb +9 -0
  540. data/spec/unit/type_spec.rb +86 -4
  541. data/spec/unit/util/adsi_spec.rb +120 -12
  542. data/spec/unit/util/autoload_spec.rb +14 -14
  543. data/spec/unit/util/backups_spec.rb +29 -21
  544. data/spec/unit/util/checksums_spec.rb +2 -1
  545. data/spec/unit/util/command_line_spec.rb +41 -0
  546. data/spec/unit/util/docs_spec.rb +91 -0
  547. data/spec/unit/util/execution_spec.rb +26 -2
  548. data/spec/unit/util/filetype_spec.rb +7 -7
  549. data/spec/unit/util/lockfile_spec.rb +2 -2
  550. data/spec/unit/util/log/destinations_spec.rb +32 -0
  551. data/spec/unit/util/monkey_patches_spec.rb +41 -0
  552. data/spec/unit/util/pidlock_spec.rb +6 -6
  553. data/spec/unit/util/rdoc/parser_spec.rb +15 -13
  554. data/spec/unit/util/rdoc_spec.rb +18 -24
  555. data/spec/unit/util/resource_template_spec.rb +3 -3
  556. data/spec/unit/util/selinux_spec.rb +4 -2
  557. data/spec/unit/util/storage_spec.rb +4 -4
  558. data/spec/unit/util/suidmanager_spec.rb +7 -0
  559. data/spec/unit/util/tag_set_spec.rb +46 -0
  560. data/spec/unit/util/tagging_spec.rb +82 -45
  561. data/spec/unit/util/watcher_spec.rb +4 -1
  562. data/spec/unit/util/windows/access_control_entry_spec.rb +67 -0
  563. data/spec/unit/util/windows/access_control_list_spec.rb +133 -0
  564. data/spec/unit/util/windows/root_certs_spec.rb +10 -8
  565. data/spec/unit/util/windows/security_descriptor_spec.rb +117 -0
  566. data/spec/unit/util/windows/sid_spec.rb +69 -0
  567. data/spec/unit/util_spec.rb +7 -7
  568. data/tasks/ci.rake +17 -36
  569. metadata +2811 -2746
  570. checksums.yaml +0 -7
  571. data/examples/mac_automount.pp +0 -16
  572. data/examples/mcx_dock_absent.pp +0 -4
  573. data/examples/mcx_dock_default.pp +0 -118
  574. data/examples/mcx_dock_full.pp +0 -125
  575. data/examples/mcx_dock_invalid.pp +0 -9
  576. data/examples/mcx_nogroup.pp +0 -118
  577. data/examples/mcx_notexists_absent.pp +0 -4
  578. data/ext/rack/README +0 -58
  579. data/ext/rack/manifest.pp +0 -59
  580. data/lib/puppet/external/lock.rb +0 -63
  581. data/lib/puppet/indirector/hiera.rb +0 -39
  582. data/lib/puppet/parser/functions/foreach.rb +0 -95
  583. data/spec/integration/network/server/webrick_spec.rb +0 -76
  584. data/spec/integration/parser/functions_spec.rb +0 -16
  585. data/spec/unit/indirector/hiera_spec.rb +0 -154
  586. data/spec/unit/parser/methods/collect_spec.rb +0 -153
  587. data/spec/unit/parser/methods/foreach_spec.rb +0 -91
  588. data/spec/unit/parser/methods/reject_spec.rb +0 -73
  589. data/spec/unit/resource/resource_type.json +0 -34
@@ -28,40 +28,41 @@ describe 'the reduce method' do
28
28
  it 'reduce on an array' do
29
29
  catalog = compile_to_catalog(<<-MANIFEST)
30
30
  $a = [1,2,3]
31
- $b = $a.reduce {|$memo, $x| $memo + $x }
31
+ $b = $a.reduce |$memo, $x| { $memo + $x }
32
32
  file { "/file_$b": ensure => present }
33
33
  MANIFEST
34
34
 
35
35
  catalog.resource(:file, "/file_6")['ensure'].should == 'present'
36
- end
36
+ end
37
+
37
38
  it 'reduce on an array with start value' do
38
39
  catalog = compile_to_catalog(<<-MANIFEST)
39
40
  $a = [1,2,3]
40
- $b = $a.reduce(4) {|$memo, $x| $memo + $x }
41
+ $b = $a.reduce(4) |$memo, $x| { $memo + $x }
41
42
  file { "/file_$b": ensure => present }
42
43
  MANIFEST
43
-
44
+
44
45
  catalog.resource(:file, "/file_10")['ensure'].should == 'present'
45
- end
46
+ end
46
47
  it 'reduce on a hash' do
47
48
  catalog = compile_to_catalog(<<-MANIFEST)
48
49
  $a = {a=>1, b=>2, c=>3}
49
50
  $start = [ignored, 4]
50
- $b = $a.reduce {|$memo, $x| ['sum', $memo[1] + $x[1]] }
51
+ $b = $a.reduce |$memo, $x| {['sum', $memo[1] + $x[1]] }
51
52
  file { "/file_${$b[0]}_${$b[1]}": ensure => present }
52
53
  MANIFEST
53
-
54
+
54
55
  catalog.resource(:file, "/file_sum_6")['ensure'].should == 'present'
55
- end
56
+ end
56
57
  it 'reduce on a hash with start value' do
57
58
  catalog = compile_to_catalog(<<-MANIFEST)
58
59
  $a = {a=>1, b=>2, c=>3}
59
60
  $start = ['ignored', 4]
60
- $b = $a.reduce($start) {|$memo, $x| ['sum', $memo[1] + $x[1]] }
61
+ $b = $a.reduce($start) |$memo, $x| { ['sum', $memo[1] + $x[1]] }
61
62
  file { "/file_${$b[0]}_${$b[1]}": ensure => present }
62
63
  MANIFEST
63
-
64
+
64
65
  catalog.resource(:file, "/file_sum_10")['ensure'].should == 'present'
65
- end
66
+ end
66
67
  end
67
68
  end
@@ -2,7 +2,7 @@
2
2
  shared_examples_for 'all iterative functions hash handling' do |func|
3
3
  it 'passes a hash entry as an array of the key and value' do
4
4
  catalog = compile_to_catalog(<<-MANIFEST)
5
- {a=>1}.#{func} { |$v| notify { "${v[0]} ${v[1]}": } }
5
+ {a=>1}.#{func} |$v| { notify { "${v[0]} ${v[1]}": } }
6
6
  MANIFEST
7
7
 
8
8
  catalog.resource(:notify, "a 1").should_not be_nil
@@ -14,7 +14,7 @@ shared_examples_for 'all iterative functions argument checks' do |func|
14
14
  it 'raises an error when defined with more than 1 argument' do
15
15
  expect do
16
16
  compile_to_catalog(<<-MANIFEST)
17
- [1].#{func} { |$x, $yikes| }
17
+ [1].#{func} |$x, $yikes|{ }
18
18
  MANIFEST
19
19
  end.to raise_error(Puppet::Error, /Too few arguments/)
20
20
  end
@@ -22,7 +22,7 @@ shared_examples_for 'all iterative functions argument checks' do |func|
22
22
  it 'raises an error when defined with fewer than 1 argument' do
23
23
  expect do
24
24
  compile_to_catalog(<<-MANIFEST)
25
- [1].#{func} { || }
25
+ [1].#{func} || { }
26
26
  MANIFEST
27
27
  end.to raise_error(Puppet::Error, /Too many arguments/)
28
28
  end
@@ -30,7 +30,7 @@ shared_examples_for 'all iterative functions argument checks' do |func|
30
30
  it 'raises an error when used against an unsupported type' do
31
31
  expect do
32
32
  compile_to_catalog(<<-MANIFEST)
33
- "not correct".#{func} { |$v| }
33
+ "not correct".#{func} |$v| { }
34
34
  MANIFEST
35
35
  end.to raise_error(Puppet::Error, /must be an Array or a Hash/)
36
36
  end
@@ -38,7 +38,7 @@ shared_examples_for 'all iterative functions argument checks' do |func|
38
38
  it 'raises an error when called with any parameters besides a block' do
39
39
  expect do
40
40
  compile_to_catalog(<<-MANIFEST)
41
- [1].#{func}(1) { |$v| }
41
+ [1].#{func}(1) |$v| { }
42
42
  MANIFEST
43
43
  end.to raise_error(Puppet::Error, /Wrong number of arguments/)
44
44
  end
@@ -27,15 +27,15 @@ describe 'methods' do
27
27
  end
28
28
 
29
29
  context "should be callable on array as" do
30
-
30
+
31
31
  it 'slice with explicit parameters' do
32
32
  catalog = compile_to_catalog(<<-MANIFEST)
33
33
  $a = [1, present, 2, absent, 3, present]
34
- $a.slice(2) |$k,$v| {
34
+ $a.slice(2) |$k,$v| {
35
35
  file { "/file_${$k}": ensure => $v }
36
36
  }
37
37
  MANIFEST
38
-
38
+
39
39
  catalog.resource(:file, "/file_1")['ensure'].should == 'present'
40
40
  catalog.resource(:file, "/file_2")['ensure'].should == 'absent'
41
41
  catalog.resource(:file, "/file_3")['ensure'].should == 'present'
@@ -43,11 +43,11 @@ describe 'methods' do
43
43
  it 'slice with one parameter' do
44
44
  catalog = compile_to_catalog(<<-MANIFEST)
45
45
  $a = [1, present, 2, absent, 3, present]
46
- $a.slice(2) |$k| {
46
+ $a.slice(2) |$k| {
47
47
  file { "/file_${$k[0]}": ensure => $k[1] }
48
48
  }
49
49
  MANIFEST
50
-
50
+
51
51
  catalog.resource(:file, "/file_1")['ensure'].should == 'present'
52
52
  catalog.resource(:file, "/file_2")['ensure'].should == 'absent'
53
53
  catalog.resource(:file, "/file_3")['ensure'].should == 'present'
@@ -55,39 +55,39 @@ describe 'methods' do
55
55
  it 'slice with shorter last slice' do
56
56
  catalog = compile_to_catalog(<<-MANIFEST)
57
57
  $a = [1, present, 2, present, 3, absent]
58
- $a.slice(4) |$a, $b, $c, $d| {
58
+ $a.slice(4) |$a, $b, $c, $d| {
59
59
  file { "/file_$a.$c": ensure => $b }
60
60
  }
61
61
  MANIFEST
62
-
62
+
63
63
  catalog.resource(:file, "/file_1.2")['ensure'].should == 'present'
64
64
  catalog.resource(:file, "/file_3.")['ensure'].should == 'absent'
65
65
  end
66
66
  end
67
67
  context "should be callable on hash as" do
68
-
68
+
69
69
  it 'slice with explicit parameters, missing are empty' do
70
70
  catalog = compile_to_catalog(<<-MANIFEST)
71
71
  $a = {1=>present, 2=>present, 3=>absent}
72
- $a.slice(2) |$a,$b| {
72
+ $a.slice(2) |$a,$b| {
73
73
  file { "/file_${a[0]}.${b[0]}": ensure => $a[1] }
74
74
  }
75
75
  MANIFEST
76
-
76
+
77
77
  catalog.resource(:file, "/file_1.2")['ensure'].should == 'present'
78
78
  catalog.resource(:file, "/file_3.")['ensure'].should == 'absent'
79
79
  end
80
-
80
+
81
81
  end
82
82
  context "when called without a block" do
83
83
  it "should produce an array with the result" do
84
84
  catalog = compile_to_catalog(<<-MANIFEST)
85
85
  $a = [1, present, 2, absent, 3, present]
86
- $a.slice(2).each |$k| {
86
+ $a.slice(2).each |$k| {
87
87
  file { "/file_${$k[0]}": ensure => $k[1] }
88
88
  }
89
89
  MANIFEST
90
-
90
+
91
91
  catalog.resource(:file, "/file_1")['ensure'].should == 'present'
92
92
  catalog.resource(:file, "/file_2")['ensure'].should == 'absent'
93
93
  catalog.resource(:file, "/file_3")['ensure'].should == 'present'
@@ -53,7 +53,7 @@ describe Puppet::Parser do
53
53
 
54
54
  describe "when parsing files" do
55
55
  before do
56
- FileTest.stubs(:exist?).returns true
56
+ Puppet::FileSystem::File.stubs(:exist?).returns true
57
57
  File.stubs(:read).returns ""
58
58
  @parser.stubs(:watch_file)
59
59
  end
@@ -0,0 +1,44 @@
1
+ #! /usr/bin/env ruby
2
+ require 'spec_helper'
3
+
4
+ describe Puppet::Parser::Resource::Param do
5
+ it "can be instantiated" do
6
+ Puppet::Parser::Resource::Param.new(:name => 'myparam', :value => 'foo')
7
+ end
8
+
9
+ it "stores the source file" do
10
+ param = Puppet::Parser::Resource::Param.new(:name => 'myparam', :value => 'foo', :file => 'foo.pp')
11
+ param.file.should == 'foo.pp'
12
+ end
13
+
14
+ it "stores the line number" do
15
+ param = Puppet::Parser::Resource::Param.new(:name => 'myparam', :value => 'foo', :line => 42)
16
+ param.line.should == 42
17
+ end
18
+
19
+ context "parameter validation" do
20
+ it "throws an error when instantiated without a name" do
21
+ expect {
22
+ Puppet::Parser::Resource::Param.new(:value => 'foo')
23
+ }.to raise_error(Puppet::Error, /name is a required option/)
24
+ end
25
+
26
+ it "throws an error when instantiated without a value" do
27
+ expect {
28
+ Puppet::Parser::Resource::Param.new(:name => 'myparam')
29
+ }.to raise_error(Puppet::Error, /value is a required option/)
30
+ end
31
+
32
+ it "throws an error when instantiated with a nil value" do
33
+ expect {
34
+ Puppet::Parser::Resource::Param.new(:name => 'myparam', :value => nil)
35
+ }.to raise_error(Puppet::Error, /value is a required option/)
36
+ end
37
+
38
+ it "includes file/line context in errors" do
39
+ expect {
40
+ Puppet::Parser::Resource::Param.new(:name => 'myparam', :value => nil, :file => 'foo.pp', :line => 42)
41
+ }.to raise_error(Puppet::Error, /foo.pp:42/)
42
+ end
43
+ end
44
+ end
@@ -90,7 +90,7 @@ describe Puppet::Parser::Resource do
90
90
  it "should use a Puppet::Resource for converting to a ral resource" do
91
91
  trans = mock 'resource', :to_ral => "yay"
92
92
  @resource = mkresource
93
- @resource.expects(:to_resource).returns trans
93
+ @resource.expects(:copy_as_resource).returns trans
94
94
  @resource.to_ral.should == "yay"
95
95
  end
96
96
 
@@ -124,7 +124,8 @@ describe Puppet::Parser::Resource do
124
124
  tags = [ "tag1", "tag2" ]
125
125
  @arguments[:parameters] = [ param(:tag, tags , :source) ]
126
126
  res = Puppet::Parser::Resource.new("resource", "testing", @arguments)
127
- (res.tags & tags).should == tags
127
+ res.should be_tagged("tag1")
128
+ res.should be_tagged("tag2")
128
129
  end
129
130
  end
130
131
 
@@ -445,7 +446,7 @@ describe Puppet::Parser::Resource do
445
446
  it "should be able to be converted to a normal resource" do
446
447
  @source = stub 'scope', :name => "myscope"
447
448
  @resource = mkresource :source => @source
448
- @resource.should respond_to(:to_resource)
449
+ @resource.should respond_to(:copy_as_resource)
449
450
  end
450
451
 
451
452
  describe "when being converted to a resource" do
@@ -454,19 +455,19 @@ describe Puppet::Parser::Resource do
454
455
  end
455
456
 
456
457
  it "should create an instance of Puppet::Resource" do
457
- @parser_resource.to_resource.should be_instance_of(Puppet::Resource)
458
+ @parser_resource.copy_as_resource.should be_instance_of(Puppet::Resource)
458
459
  end
459
460
 
460
461
  it "should set the type correctly on the Puppet::Resource" do
461
- @parser_resource.to_resource.type.should == @parser_resource.type
462
+ @parser_resource.copy_as_resource.type.should == @parser_resource.type
462
463
  end
463
464
 
464
465
  it "should set the title correctly on the Puppet::Resource" do
465
- @parser_resource.to_resource.title.should == @parser_resource.title
466
+ @parser_resource.copy_as_resource.title.should == @parser_resource.title
466
467
  end
467
468
 
468
469
  it "should copy over all of the parameters" do
469
- result = @parser_resource.to_resource.to_hash
470
+ result = @parser_resource.copy_as_resource.to_hash
470
471
 
471
472
  # The name will be in here, also.
472
473
  result[:foo].should == "bar"
@@ -477,40 +478,40 @@ describe Puppet::Parser::Resource do
477
478
  @parser_resource.tag "foo"
478
479
  @parser_resource.tag "bar"
479
480
 
480
- @parser_resource.to_resource.tags.should == @parser_resource.tags
481
+ @parser_resource.copy_as_resource.tags.should == @parser_resource.tags
481
482
  end
482
483
 
483
484
  it "should copy over the line" do
484
485
  @parser_resource.line = 40
485
- @parser_resource.to_resource.line.should == 40
486
+ @parser_resource.copy_as_resource.line.should == 40
486
487
  end
487
488
 
488
489
  it "should copy over the file" do
489
490
  @parser_resource.file = "/my/file"
490
- @parser_resource.to_resource.file.should == "/my/file"
491
+ @parser_resource.copy_as_resource.file.should == "/my/file"
491
492
  end
492
493
 
493
494
  it "should copy over the 'exported' value" do
494
495
  @parser_resource.exported = true
495
- @parser_resource.to_resource.exported.should be_true
496
+ @parser_resource.copy_as_resource.exported.should be_true
496
497
  end
497
498
 
498
499
  it "should copy over the 'virtual' value" do
499
500
  @parser_resource.virtual = true
500
- @parser_resource.to_resource.virtual.should be_true
501
+ @parser_resource.copy_as_resource.virtual.should be_true
501
502
  end
502
503
 
503
504
  it "should convert any parser resource references to Puppet::Resource instances" do
504
505
  ref = Puppet::Resource.new("file", "/my/file")
505
506
  @parser_resource = mkresource :source => @source, :parameters => {:foo => "bar", :fee => ref}
506
- result = @parser_resource.to_resource
507
+ result = @parser_resource.copy_as_resource
507
508
  result[:fee].should == Puppet::Resource.new(:file, "/my/file")
508
509
  end
509
510
 
510
511
  it "should convert any parser resource references to Puppet::Resource instances even if they are in an array" do
511
512
  ref = Puppet::Resource.new("file", "/my/file")
512
513
  @parser_resource = mkresource :source => @source, :parameters => {:foo => "bar", :fee => ["a", ref]}
513
- result = @parser_resource.to_resource
514
+ result = @parser_resource.copy_as_resource
514
515
  result[:fee].should == ["a", Puppet::Resource.new(:file, "/my/file")]
515
516
  end
516
517
 
@@ -518,7 +519,7 @@ describe Puppet::Parser::Resource do
518
519
  ref1 = Puppet::Resource.new("file", "/my/file1")
519
520
  ref2 = Puppet::Resource.new("file", "/my/file2")
520
521
  @parser_resource = mkresource :source => @source, :parameters => {:foo => "bar", :fee => ["a", [ref1,ref2]]}
521
- result = @parser_resource.to_resource
522
+ result = @parser_resource.copy_as_resource
522
523
  result[:fee].should == ["a", Puppet::Resource.new(:file, "/my/file1"), Puppet::Resource.new(:file, "/my/file2")]
523
524
  end
524
525
 
@@ -13,28 +13,42 @@ describe Puppet::Pops::Model::AstTransformer do
13
13
  it "converts a decimal number to a string Name" do
14
14
  ast = transform(QNAME_OR_NUMBER("10"))
15
15
 
16
- ast.should be_kind_of Puppet::Parser::AST::Name
16
+ ast.should be_kind_of(Puppet::Parser::AST::Name)
17
17
  ast.value.should == "10"
18
18
  end
19
19
 
20
+ it "converts a 0 to a decimal 0" do
21
+ ast = transform(QNAME_OR_NUMBER("0"))
22
+
23
+ ast.should be_kind_of(Puppet::Parser::AST::Name)
24
+ ast.value.should == "0"
25
+ end
26
+
27
+ it "converts a 00 to an octal 00" do
28
+ ast = transform(QNAME_OR_NUMBER("0"))
29
+
30
+ ast.should be_kind_of(Puppet::Parser::AST::Name)
31
+ ast.value.should == "0"
32
+ end
33
+
20
34
  it "converts an octal number to a string Name" do
21
35
  ast = transform(QNAME_OR_NUMBER("020"))
22
36
 
23
- ast.should be_kind_of Puppet::Parser::AST::Name
37
+ ast.should be_kind_of(Puppet::Parser::AST::Name)
24
38
  ast.value.should == "020"
25
39
  end
26
40
 
27
41
  it "converts a hex number to a string Name" do
28
42
  ast = transform(QNAME_OR_NUMBER("0x20"))
29
43
 
30
- ast.should be_kind_of Puppet::Parser::AST::Name
44
+ ast.should be_kind_of(Puppet::Parser::AST::Name)
31
45
  ast.value.should == "0x20"
32
46
  end
33
47
 
34
48
  it "converts an unknown radix to an error string" do
35
49
  ast = transform(Puppet::Pops::Model::Factory.new(Puppet::Pops::Model::LiteralNumber, 3, 2))
36
50
 
37
- ast.should be_kind_of Puppet::Parser::AST::Name
51
+ ast.should be_kind_of(Puppet::Parser::AST::Name)
38
52
  ast.value.should == "bad radix:3"
39
53
  end
40
54
  end
@@ -154,7 +154,7 @@ describe Puppet::Pops::Parser::Lexer::TOKENS do
154
154
  :LBRACK => '[',
155
155
  :RBRACK => ']',
156
156
  # :LBRACE => '{',
157
- :RBRACE => '}',
157
+ # :RBRACE => '}',
158
158
  :LPAREN => '(',
159
159
  :RPAREN => ')',
160
160
  :EQUALS => '=',
@@ -232,7 +232,7 @@ describe Puppet::Pops::Parser::Lexer::TOKENS do
232
232
 
233
233
  # These tokens' strings don't matter, just that the tokens exist.
234
234
  [:STRING, :DQPRE, :DQMID, :DQPOST, :BOOLEAN, :NAME, :NUMBER, :COMMENT, :MLCOMMENT,
235
- :LBRACE, :LAMBDA,
235
+ :LBRACE, :RBRACE,
236
236
  :RETURN, :SQUOTE, :DQUOTE, :VARIABLE].each do |name|
237
237
  it "should have a token named #{name.to_s}" do
238
238
  Puppet::Pops::Parser::Lexer::TOKENS[name].should_not be_nil
@@ -583,7 +583,24 @@ describe Puppet::Pops::Parser::Lexer,"when lexing strings" do
583
583
  %q[""] => [[:STRING,""]],
584
584
  %q["123 456 789 0"] => [[:STRING,"123 456 789 0"]],
585
585
  %q["${123} 456 $0"] => [[:DQPRE,""],[:VARIABLE,"123"],[:DQMID," 456 "],[:VARIABLE,"0"],[:DQPOST,""]],
586
- %q["$foo::::bar"] => [[:DQPRE,""],[:VARIABLE,"foo"],[:DQPOST,"::::bar"]]
586
+ %q["$foo::::bar"] => [[:DQPRE,""],[:VARIABLE,"foo"],[:DQPOST,"::::bar"]],
587
+ # Keyword variables
588
+ %q["$true"] => [[:DQPRE,""],[:VARIABLE, "true"],[:DQPOST,""]],
589
+ %q["$false"] => [[:DQPRE,""],[:VARIABLE, "false"],[:DQPOST,""]],
590
+ %q["$if"] => [[:DQPRE,""],[:VARIABLE, "if"],[:DQPOST,""]],
591
+ %q["$case"] => [[:DQPRE,""],[:VARIABLE, "case"],[:DQPOST,""]],
592
+ %q["$unless"] => [[:DQPRE,""],[:VARIABLE, "unless"],[:DQPOST,""]],
593
+ %q["$undef"] => [[:DQPRE,""],[:VARIABLE, "undef"],[:DQPOST,""]],
594
+ # Expressions
595
+ %q["${true}"] => [[:DQPRE,""],[:BOOLEAN, true],[:DQPOST,""]],
596
+ %q["${false}"] => [[:DQPRE,""],[:BOOLEAN, false],[:DQPOST,""]],
597
+ %q["${undef}"] => [[:DQPRE,""],:UNDEF,[:DQPOST,""]],
598
+ %q["${if true {false}}"] => [[:DQPRE,""],:IF,[:BOOLEAN, true], :LBRACE, [:BOOLEAN, false], :RBRACE, [:DQPOST,""]],
599
+ %q["${unless true {false}}"] => [[:DQPRE,""],:UNLESS,[:BOOLEAN, true], :LBRACE, [:BOOLEAN, false], :RBRACE, [:DQPOST,""]],
600
+ %q["${case true {true:{false}}}"] => [
601
+ [:DQPRE,""],:CASE,[:BOOLEAN, true], :LBRACE, [:BOOLEAN, true], :COLON, :LBRACE, [:BOOLEAN, false],
602
+ :RBRACE, :RBRACE, [:DQPOST,""]],
603
+ %q[{ "${a}" => 1 }] => [ :LBRACE, [:DQPRE,""], [:VARIABLE,"a"], [:DQPOST,""], :FARROW, [:NAME,"1"], :RBRACE ],
587
604
  }.each { |src,expected_result|
588
605
  it "should handle #{src} correctly" do
589
606
  EgrammarLexerSpec.tokens_scanned_from(src).should be_like(*expected_result)
@@ -742,7 +759,7 @@ describe "Puppet::Pops::Parser::Lexer in the old tests" do
742
759
 
743
760
  it "should end variables at `-`" do
744
761
  EgrammarLexerSpec.tokens_scanned_from('$hyphenated-variable').
745
- should be_like [:VARIABLE, "hyphenated"], [:MINUS, '-'], [:NAME, 'variable']
762
+ should be_like([:VARIABLE, "hyphenated"], [:MINUS, '-'], [:NAME, 'variable'])
746
763
  end
747
764
 
748
765
  it "should not include whitespace in a variable" do
@@ -769,7 +786,7 @@ describe "when trying to lex a non-existent file" do
769
786
  it "should return an empty list of tokens" do
770
787
  lexer = Puppet::Pops::Parser::Lexer.new
771
788
  lexer.file = nofile = tmpfile('lexer')
772
- File.exists?(nofile).should == false
789
+ Puppet::FileSystem::File.exist?(nofile).should == false
773
790
 
774
791
  lexer.fullscan.should == [[false,false]]
775
792
  end
@@ -81,16 +81,16 @@ describe "egrammar parsing function calls" do
81
81
  dump(parse("$a.foo")).should == "(call-method (. $a foo))"
82
82
  end
83
83
 
84
- it "$a.foo {|| }" do
84
+ it "$a.foo || { }" do
85
85
  dump(parse("$a.foo || { }")).should == "(call-method (. $a foo) (lambda ()))"
86
86
  end
87
87
 
88
- it "$a.foo {|$x| }" do
89
- dump(parse("$a.foo {|$x| }")).should == "(call-method (. $a foo) (lambda (parameters x) ()))"
88
+ it "$a.foo |$x| { }" do
89
+ dump(parse("$a.foo |$x|{ }")).should == "(call-method (. $a foo) (lambda (parameters x) ()))"
90
90
  end
91
91
 
92
- it "$a.foo {|$x| }" do
93
- dump(parse("$a.foo {|$x| $b = $x}")).should ==
92
+ it "$a.foo |$x|{ }" do
93
+ dump(parse("$a.foo |$x|{ $b = $x}")).should ==
94
94
  "(call-method (. $a foo) (lambda (parameters x) (block (= $b $x))))"
95
95
  end
96
96
  end