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
@@ -1,8 +1,17 @@
1
1
  #! /usr/bin/env ruby
2
2
  require 'spec_helper'
3
- require 'matchers/json'
4
3
  require 'puppet/node/facts'
5
4
 
5
+ # the json-schema gem doesn't support windows
6
+ if not Puppet.features.microsoft_windows?
7
+ describe "catalog facts schema" do
8
+ it "should validate against the json meta-schema" do
9
+ JSON::Validator.validate!(JSON_META_SCHEMA, FACTS_SCHEMA)
10
+ end
11
+ end
12
+
13
+ end
14
+
6
15
  describe Puppet::Node::Facts, "when indirecting" do
7
16
  before do
8
17
  @facts = Puppet::Node::Facts.new("me")
@@ -143,8 +152,16 @@ describe Puppet::Node::Facts, "when indirecting" do
143
152
  result = PSON.parse(facts.to_pson)
144
153
  result['name'].should == facts.name
145
154
  result['values'].should == facts.values.reject { |key, value| key.to_s =~ /_/ }
146
- result['timestamp'].should == facts.timestamp.to_s
147
- result['expiration'].should == facts.expiration.to_s
155
+ result['timestamp'].should == facts.timestamp.iso8601(9)
156
+ result['expiration'].should == facts.expiration.iso8601(9)
157
+ end
158
+
159
+ it "should generate valid facts data against the facts schema", :unless => Puppet.features.microsoft_windows? do
160
+ Time.stubs(:now).returns(@timestamp)
161
+ facts = Puppet::Node::Facts.new("foo", {'a' => 1, 'b' => 2, 'c' => 3})
162
+ facts.expiration = @expiration
163
+
164
+ JSON::Validator.validate!(FACTS_SCHEMA, facts.to_pson)
148
165
  end
149
166
 
150
167
  it "should not include nil values" do
@@ -2,6 +2,17 @@
2
2
  require 'spec_helper'
3
3
  require 'matchers/json'
4
4
 
5
+ # the json-schema gem doesn't support windows
6
+ if not Puppet.features.microsoft_windows?
7
+ NODE_SCHEMA = JSON.parse(File.read(File.join(File.dirname(__FILE__), '../../api/schemas/node.json')))
8
+
9
+ describe "node schema" do
10
+ it "should validate against the json meta-schema" do
11
+ JSON::Validator.validate!(JSON_META_SCHEMA, NODE_SCHEMA)
12
+ end
13
+ end
14
+ end
15
+
5
16
  describe Puppet::Node do
6
17
  it "should register its document type as Node" do
7
18
  PSON.registered_document_types["Node"].should equal(Puppet::Node)
@@ -55,6 +66,38 @@ describe Puppet::Node do
55
66
  new_node.name.should == node.name
56
67
  end
57
68
 
69
+ it "can round-trip through pson" do
70
+ facts = Puppet::Node::Facts.new("hello", "one" => "c", "two" => "b")
71
+ node = Puppet::Node.new("hello",
72
+ :environment => 'kjhgrg',
73
+ :classes => ['erth', 'aiu'],
74
+ :parameters => {"hostname"=>"food"}
75
+ )
76
+ new_node = Puppet::Node.convert_from('pson', node.render('pson'))
77
+ new_node.environment.should == node.environment
78
+ new_node.parameters.should == node.parameters
79
+ new_node.classes.should == node.classes
80
+ new_node.name.should == node.name
81
+ end
82
+
83
+ it "validates against the node json schema", :unless => Puppet.features.microsoft_windows? do
84
+ facts = Puppet::Node::Facts.new("hello", "one" => "c", "two" => "b")
85
+ node = Puppet::Node.new("hello",
86
+ :environment => 'kjhgrg',
87
+ :classes => ['erth', 'aiu'],
88
+ :parameters => {"hostname"=>"food"}
89
+ )
90
+ JSON::Validator.validate!(NODE_SCHEMA, node.to_pson)
91
+ end
92
+
93
+ it "when missing optional parameters validates against the node json schema", :unless => Puppet.features.microsoft_windows? do
94
+ facts = Puppet::Node::Facts.new("hello", "one" => "c", "two" => "b")
95
+ node = Puppet::Node.new("hello",
96
+ :environment => 'kjhgrg'
97
+ )
98
+ JSON::Validator.validate!(NODE_SCHEMA, node.to_pson)
99
+ end
100
+
58
101
  describe "when converting to json" do
59
102
  before do
60
103
  @node = Puppet::Node.new("mynode")
@@ -5,21 +5,31 @@ require 'puppet/parameter/boolean'
5
5
 
6
6
  describe Puppet::Parameter::Boolean do
7
7
  let (:resource) { mock('resource') }
8
- subject { described_class.new(:resource => resource) }
9
-
10
- [ true, :true, 'true', :yes, 'yes', 'TrUe', 'yEs' ].each do |arg|
11
- it "should munge #{arg.inspect} as true" do
12
- subject.munge(arg).should == true
8
+ describe "after initvars" do
9
+ before { described_class.initvars }
10
+ it "should have the correct value_collection" do
11
+ described_class.value_collection.values.sort.should ==
12
+ [:true, :false, :yes, :no].sort
13
13
  end
14
14
  end
15
- [ false, :false, 'false', :no, 'no', 'FaLSE', 'nO' ].each do |arg|
16
- it "should munge #{arg.inspect} as false" do
17
- subject.munge(arg).should == false
15
+
16
+ describe "instances" do
17
+ subject { described_class.new(:resource => resource) }
18
+
19
+ [ true, :true, 'true', :yes, 'yes', 'TrUe', 'yEs' ].each do |arg|
20
+ it "should munge #{arg.inspect} as true" do
21
+ subject.munge(arg).should == true
22
+ end
18
23
  end
19
- end
20
- [ nil, :undef, 'undef', '0', 0, '1', 1, 9284 ].each do |arg|
21
- it "should fail to munge #{arg.inspect}" do
22
- expect { subject.munge(arg) }.to raise_error Puppet::Error
24
+ [ false, :false, 'false', :no, 'no', 'FaLSE', 'nO' ].each do |arg|
25
+ it "should munge #{arg.inspect} as false" do
26
+ subject.munge(arg).should == false
27
+ end
28
+ end
29
+ [ nil, :undef, 'undef', '0', 0, '1', 1, 9284 ].each do |arg|
30
+ it "should fail to munge #{arg.inspect}" do
31
+ expect { subject.munge(arg) }.to raise_error Puppet::Error
32
+ end
23
33
  end
24
34
  end
25
35
  end
@@ -0,0 +1,51 @@
1
+ #! /usr/bin/env ruby
2
+ require 'spec_helper'
3
+
4
+ describe Puppet::Parser::AST::ResourceParam do
5
+
6
+ ast = Puppet::Parser::AST
7
+
8
+ before :each do
9
+ @compiler = Puppet::Parser::Compiler.new(Puppet::Node.new("mynode"))
10
+ @scope = Puppet::Parser::Scope.new(@compiler)
11
+ @params = ast::ASTArray.new({})
12
+ @compiler.stubs(:add_override)
13
+ end
14
+
15
+ it "should evaluate the parameter value" do
16
+ object = mock 'object'
17
+ object.expects(:safeevaluate).with(@scope).returns('value')
18
+ ast::ResourceParam.new(:param => 'myparam', :value => object).evaluate(@scope)
19
+ end
20
+
21
+ it "should return a Puppet::Parser::Resource::Param on evaluation" do
22
+ object = mock 'object'
23
+ object.expects(:safeevaluate).with(@scope).returns('value')
24
+ evaled = ast::ResourceParam.new(:param => 'myparam', :value => object).evaluate(@scope)
25
+ evaled.should be_a(Puppet::Parser::Resource::Param)
26
+ evaled.name.to_s.should == 'myparam'
27
+ evaled.value.to_s.should == 'value'
28
+ end
29
+
30
+ it "should copy line numbers to Puppet::Parser::Resource::Param" do
31
+ object = mock 'object'
32
+ object.expects(:safeevaluate).with(@scope).returns('value')
33
+ evaled = ast::ResourceParam.new(:param => 'myparam', :value => object, :line => 42).evaluate(@scope)
34
+ evaled.line.should == 42
35
+ end
36
+
37
+ it "should copy source file to Puppet::Parser::Resource::Param" do
38
+ object = mock 'object'
39
+ object.expects(:safeevaluate).with(@scope).returns('value')
40
+ evaled = ast::ResourceParam.new(:param => 'myparam', :value => object, :file => 'foo.pp').evaluate(@scope)
41
+ evaled.file.should == 'foo.pp'
42
+ end
43
+
44
+ it "should change nil parameter values to undef" do
45
+ object = mock 'object'
46
+ object.expects(:safeevaluate).with(@scope).returns(nil)
47
+ evaled = ast::ResourceParam.new(:param => 'myparam', :value => object).evaluate(@scope)
48
+ evaled.should be_a(Puppet::Parser::Resource::Param)
49
+ evaled.value.should == :undef
50
+ end
51
+ end
@@ -1,5 +1,6 @@
1
1
  #! /usr/bin/env ruby
2
2
  require 'spec_helper'
3
+ require 'puppet_spec/compiler'
3
4
 
4
5
  class CompilerTestResource
5
6
  attr_accessor :builtin, :virtual, :evaluated, :type, :title
@@ -106,22 +107,20 @@ describe Puppet::Parser::Compiler do
106
107
  @compiler.classlist.sort.should == %w{one two}.sort
107
108
  end
108
109
 
109
- it "should clear the thread local caches before compile" do
110
+ it "should clear the global caches before compile" do
110
111
  compiler = stub 'compiler'
111
112
  Puppet::Parser::Compiler.expects(:new).with(@node).returns compiler
112
113
  catalog = stub 'catalog'
113
114
  compiler.expects(:compile).returns catalog
114
115
  catalog.expects(:to_resource)
115
116
 
116
- [:known_resource_types, :env_module_directories].each do |var|
117
- Thread.current[var] = "rspec"
118
- end
117
+ $known_resource_types = "rspec"
118
+ $env_module_directories = "rspec"
119
119
 
120
120
  Puppet::Parser::Compiler.compile(@node)
121
121
 
122
- [:known_resource_types, :env_module_directories].each do |var|
123
- Thread.current[var].should == nil
124
- end
122
+ $known_resource_types = nil
123
+ $env_module_directories = nil
125
124
  end
126
125
 
127
126
  describe "when initializing" do
@@ -218,27 +217,6 @@ describe Puppet::Parser::Compiler do
218
217
  @compiler.catalog.server_version.should == "3"
219
218
  end
220
219
 
221
- it "should evaluate any existing classes named in the node" do
222
- classes = %w{one two three four}
223
- main = stub 'main'
224
- one = stub 'one', :name => "one"
225
- three = stub 'three', :name => "three"
226
- @node.stubs(:name).returns("whatever")
227
- @node.stubs(:classes).returns(classes)
228
- compile_stub(:evaluate_node_classes)
229
-
230
- @compiler.expects(:evaluate_classes).with(classes, @compiler.topscope)
231
- @compiler.compile
232
- end
233
-
234
- it "should evaluate any parameterized classes named in the node" do
235
- classes = {'foo'=>{'p1'=>'one'}, 'bar'=>{'p2'=>'two'}}
236
- @node.stubs(:classes).returns(classes)
237
- @compiler.expects(:evaluate_classes).with(classes, @compiler.topscope)
238
- @compiler.compile
239
- end
240
-
241
-
242
220
  it "should evaluate the main class if it exists" do
243
221
  compile_stub(:evaluate_main)
244
222
  main_class = @known_resource_types.add Puppet::Resource::Type.new(:hostclass, "")
@@ -262,12 +240,6 @@ describe Puppet::Parser::Compiler do
262
240
  @compiler.catalog.edge?(stage, klass).should be_true
263
241
  end
264
242
 
265
- it "should evaluate any node classes" do
266
- @node.stubs(:classes).returns(%w{one two three four})
267
- @compiler.expects(:evaluate_classes).with(%w{one two three four}, @compiler.topscope)
268
- @compiler.send(:evaluate_node_classes)
269
- end
270
-
271
243
  it "should evaluate all added collections" do
272
244
  colls = []
273
245
  # And when the collections fail to evaluate.
@@ -655,7 +627,7 @@ describe Puppet::Parser::Compiler do
655
627
  catalog = @compiler.compile
656
628
 
657
629
  r2 = catalog.resources.detect {|r| r.title == 'Bar::Foo' }
658
- r2.tags.should =~ ['bar::foo', 'class', 'bar', 'foo']
630
+ r2.tags.should == Puppet::Util::TagSet.new(['bar::foo', 'class', 'bar', 'foo'])
659
631
  end
660
632
  end
661
633
 
@@ -791,6 +763,102 @@ describe Puppet::Parser::Compiler do
791
763
  end
792
764
  end
793
765
 
766
+ describe "when evaluating node classes" do
767
+ include PuppetSpec::Compiler
768
+
769
+ describe "when provided classes in array format" do
770
+ let(:node) { Puppet::Node.new('someone', :classes => ['something']) }
771
+
772
+ describe "when the class exists" do
773
+ it "should succeed if the class is already included" do
774
+ manifest = <<-MANIFEST
775
+ class something {}
776
+ include something
777
+ MANIFEST
778
+
779
+ catalog = compile_to_catalog(manifest, node)
780
+
781
+ catalog.resource('Class', 'Something').should_not be_nil
782
+ end
783
+
784
+ it "should evaluate the class without parameters if it's not already included" do
785
+ manifest = "class something {}"
786
+
787
+ catalog = compile_to_catalog(manifest, node)
788
+
789
+ catalog.resource('Class', 'Something').should_not be_nil
790
+ end
791
+ end
792
+
793
+ it "should fail if the class doesn't exist" do
794
+ expect { compile_to_catalog('', node) }.to raise_error(Puppet::Error, /Could not find class something/)
795
+ end
796
+ end
797
+
798
+ describe "when provided classes in hash format" do
799
+ describe "for classes without parameters" do
800
+ let(:node) { Puppet::Node.new('someone', :classes => {'something' => {}}) }
801
+
802
+ describe "when the class exists" do
803
+ it "should succeed if the class is already included" do
804
+ manifest = <<-MANIFEST
805
+ class something {}
806
+ include something
807
+ MANIFEST
808
+
809
+ catalog = compile_to_catalog(manifest, node)
810
+
811
+ catalog.resource('Class', 'Something').should_not be_nil
812
+ end
813
+
814
+ it "should evaluate the class if it's not already included" do
815
+ manifest = <<-MANIFEST
816
+ class something {}
817
+ MANIFEST
818
+
819
+ catalog = compile_to_catalog(manifest, node)
820
+
821
+ catalog.resource('Class', 'Something').should_not be_nil
822
+ end
823
+ end
824
+
825
+ it "should fail if the class doesn't exist" do
826
+ expect { compile_to_catalog('', node) }.to raise_error(Puppet::Error, /Could not find class something/)
827
+ end
828
+ end
829
+
830
+ describe "for classes with parameters" do
831
+ let(:node) { Puppet::Node.new('someone', :classes => {'something' => {'configuron' => 'defrabulated'}}) }
832
+
833
+ describe "when the class exists" do
834
+ it "should fail if the class is already included" do
835
+ manifest = <<-MANIFEST
836
+ class something($configuron=frabulated) {}
837
+ include something
838
+ MANIFEST
839
+
840
+ expect { compile_to_catalog(manifest, node) }.to raise_error(Puppet::Error, /Class\[Something\] is already declared/)
841
+ end
842
+
843
+ it "should evaluate the class if it's not already included" do
844
+ manifest = <<-MANIFEST
845
+ class something($configuron=frabulated) {}
846
+ MANIFEST
847
+
848
+ catalog = compile_to_catalog(manifest, node)
849
+
850
+ resource = catalog.resource('Class', 'Something')
851
+ resource['configuron'].should == 'defrabulated'
852
+ end
853
+ end
854
+
855
+ it "should fail if the class doesn't exist" do
856
+ expect { compile_to_catalog('', node) }.to raise_error(Puppet::Error, /Could not find class something/)
857
+ end
858
+ end
859
+ end
860
+ end
861
+
794
862
  describe "when managing resource overrides" do
795
863
 
796
864
  before do
@@ -365,42 +365,42 @@ describe Puppet::Parser do
365
365
  end
366
366
  context "when parsing method calls" do
367
367
  it "should parse method call with one param lambda" do
368
- expect { @parser.parse("$a.foreach {|$a| debug $a }") }.to_not raise_error
368
+ expect { @parser.parse("$a.each |$a|{ debug $a }") }.to_not raise_error
369
369
  end
370
370
  it "should parse method call with two param lambda" do
371
- expect { @parser.parse("$a.foreach {|$a,$b| debug $a }") }.to_not raise_error
371
+ expect { @parser.parse("$a.each |$a,$b|{ debug $a }") }.to_not raise_error
372
372
  end
373
373
  it "should parse method call with two param lambda and default value" do
374
- expect { @parser.parse("$a.foreach {|$a,$b=1| debug $a }") }.to_not raise_error
374
+ expect { @parser.parse("$a.each |$a,$b=1|{ debug $a }") }.to_not raise_error
375
375
  end
376
376
  it "should parse method call without lambda (statement)" do
377
- expect { @parser.parse("$a.foreach") }.to_not raise_error
377
+ expect { @parser.parse("$a.each") }.to_not raise_error
378
378
  end
379
379
  it "should parse method call without lambda (expression)" do
380
- expect { @parser.parse("$x = $a.foreach + 1") }.to_not raise_error
380
+ expect { @parser.parse("$x = $a.each + 1") }.to_not raise_error
381
381
  end
382
382
  context "a receiver expression of type" do
383
383
  it "variable should be allowed" do
384
- expect { @parser.parse("$a.foreach") }.to_not raise_error
384
+ expect { @parser.parse("$a.each") }.to_not raise_error
385
385
  end
386
386
  it "hasharrayaccess should be allowed" do
387
- expect { @parser.parse("$a[0][1].foreach") }.to_not raise_error
387
+ expect { @parser.parse("$a[0][1].each") }.to_not raise_error
388
388
  end
389
389
  it "quoted text should be allowed" do
390
- expect { @parser.parse("\"monkey\".foreach") }.to_not raise_error
391
- expect { @parser.parse("'monkey'.foreach") }.to_not raise_error
390
+ expect { @parser.parse("\"monkey\".each") }.to_not raise_error
391
+ expect { @parser.parse("'monkey'.each") }.to_not raise_error
392
392
  end
393
393
  it "selector text should be allowed" do
394
- expect { @parser.parse("$a ? { 'banana'=>[1,2,3]}.foreach") }.to_not raise_error
394
+ expect { @parser.parse("$a ? { 'banana'=>[1,2,3]}.each") }.to_not raise_error
395
395
  end
396
396
  it "function call should be allowed" do
397
- expect { @parser.parse("duh(1,2,3).foreach") }.to_not raise_error
397
+ expect { @parser.parse("duh(1,2,3).each") }.to_not raise_error
398
398
  end
399
399
  it "method call should be allowed" do
400
400
  expect { @parser.parse("$a.foo.bar") }.to_not raise_error
401
401
  end
402
402
  it "chained method calls with lambda should be allowed" do
403
- expect { @parser.parse("$a.foo{||}.bar{||}") }.to_not raise_error
403
+ expect { @parser.parse("$a.foo||{}.bar||{}") }.to_not raise_error
404
404
  end
405
405
  end
406
406
  end
@@ -28,7 +28,7 @@ describe Puppet::Parser::Files do
28
28
  Puppet[:templatedir] = "/my/templates"
29
29
  Puppet[:modulepath] = "/one:/two"
30
30
  File.stubs(:directory?).returns(true)
31
- FileTest.stubs(:exist?).returns(true)
31
+ Puppet::FileSystem::File.stubs(:exist?).returns(true)
32
32
  Puppet::Parser::Files.find_template("mymod/mytemplate").should == File.join(Puppet[:templatedir], "mymod/mytemplate")
33
33
  end
34
34
 
@@ -43,59 +43,59 @@ describe Puppet::Parser::Files do
43
43
  end
44
44
 
45
45
  it "should return unqualified templates if they exist in the template dir" do
46
- FileTest.stubs(:exist?).returns true
46
+ Puppet::FileSystem::File.stubs(:exist?).returns true
47
47
  Puppet::Parser::Files.stubs(:templatepath).with(nil).returns(["/my/templates"])
48
48
  Puppet::Parser::Files.find_template("mytemplate").should == "/my/templates/mytemplate"
49
49
  end
50
50
 
51
51
  it "should only return templates if they actually exist" do
52
- FileTest.expects(:exist?).with("/my/templates/mytemplate").returns true
52
+ Puppet::FileSystem::File.expects(:exist?).with("/my/templates/mytemplate").returns true
53
53
  Puppet::Parser::Files.stubs(:templatepath).with(nil).returns(["/my/templates"])
54
54
  Puppet::Parser::Files.find_template("mytemplate").should == "/my/templates/mytemplate"
55
55
  end
56
56
 
57
57
  it "should return nil when asked for a template that doesn't exist" do
58
- FileTest.expects(:exist?).with("/my/templates/mytemplate").returns false
58
+ Puppet::FileSystem::File.expects(:exist?).with("/my/templates/mytemplate").returns false
59
59
  Puppet::Parser::Files.stubs(:templatepath).with(nil).returns(["/my/templates"])
60
60
  Puppet::Parser::Files.find_template("mytemplate").should be_nil
61
61
  end
62
62
 
63
63
  it "should search in the template directories before modules" do
64
- FileTest.stubs(:exist?).returns true
64
+ Puppet::FileSystem::File.stubs(:exist?).returns true
65
65
  Puppet::Parser::Files.stubs(:templatepath).with(nil).returns(["/my/templates"])
66
66
  Puppet::Module.expects(:find).never
67
67
  Puppet::Parser::Files.find_template("mytemplate")
68
68
  end
69
69
 
70
70
  it "should accept relative templatedirs" do
71
- FileTest.stubs(:exist?).returns true
71
+ Puppet::FileSystem::File.stubs(:exist?).returns true
72
72
  Puppet[:templatedir] = "my/templates"
73
73
  File.expects(:directory?).with(File.expand_path("my/templates")).returns(true)
74
74
  Puppet::Parser::Files.find_template("mytemplate").should == File.expand_path("my/templates/mytemplate")
75
75
  end
76
76
 
77
77
  it "should use the environment templatedir if no module is found and an environment is specified" do
78
- FileTest.stubs(:exist?).returns true
78
+ Puppet::FileSystem::File.stubs(:exist?).returns true
79
79
  Puppet::Parser::Files.stubs(:templatepath).with("myenv").returns(["/myenv/templates"])
80
80
  Puppet::Parser::Files.find_template("mymod/mytemplate", "myenv").should == "/myenv/templates/mymod/mytemplate"
81
81
  end
82
82
 
83
83
  it "should use first dir from environment templatedir if no module is found and an environment is specified" do
84
- FileTest.stubs(:exist?).returns true
84
+ Puppet::FileSystem::File.stubs(:exist?).returns true
85
85
  Puppet::Parser::Files.stubs(:templatepath).with("myenv").returns(["/myenv/templates", "/two/templates"])
86
86
  Puppet::Parser::Files.find_template("mymod/mytemplate", "myenv").should == "/myenv/templates/mymod/mytemplate"
87
87
  end
88
88
 
89
89
  it "should use a valid dir when templatedir is a path for unqualified templates and the first dir contains template" do
90
90
  Puppet::Parser::Files.stubs(:templatepath).returns(["/one/templates", "/two/templates"])
91
- FileTest.expects(:exist?).with("/one/templates/mytemplate").returns(true)
91
+ Puppet::FileSystem::File.expects(:exist?).with("/one/templates/mytemplate").returns(true)
92
92
  Puppet::Parser::Files.find_template("mytemplate").should == "/one/templates/mytemplate"
93
93
  end
94
94
 
95
95
  it "should use a valid dir when templatedir is a path for unqualified templates and only second dir contains template" do
96
96
  Puppet::Parser::Files.stubs(:templatepath).returns(["/one/templates", "/two/templates"])
97
- FileTest.expects(:exist?).with("/one/templates/mytemplate").returns(false)
98
- FileTest.expects(:exist?).with("/two/templates/mytemplate").returns(true)
97
+ Puppet::FileSystem::File.expects(:exist?).with("/one/templates/mytemplate").returns(false)
98
+ Puppet::FileSystem::File.expects(:exist?).with("/two/templates/mytemplate").returns(true)
99
99
  Puppet::Parser::Files.find_template("mytemplate").should == "/two/templates/mytemplate"
100
100
  end
101
101