puppet 3.2.4 → 3.3.0.rc2

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 (562) hide show
  1. data/COMMITTERS.md +101 -42
  2. data/Gemfile +15 -4
  3. data/README.md +5 -1
  4. data/README_DEVELOPER.md +117 -54
  5. data/Rakefile +4 -0
  6. data/ext/build_defaults.yaml +3 -2
  7. data/ext/debian/puppet-common.manpages +33 -1
  8. data/ext/gentoo/init.d/puppet +1 -1
  9. data/ext/gentoo/init.d/puppetmaster +1 -1
  10. data/ext/redhat/puppet.spec.erb +0 -1
  11. data/install.rb +2 -1
  12. data/lib/hiera/backend/puppet_backend.rb +1 -1
  13. data/lib/puppet/application.rb +10 -9
  14. data/lib/puppet/application/agent.rb +87 -93
  15. data/lib/puppet/application/apply.rb +0 -2
  16. data/lib/puppet/application/device.rb +3 -3
  17. data/lib/puppet/application/kick.rb +2 -2
  18. data/lib/puppet/application/master.rb +41 -19
  19. data/lib/puppet/application/queue.rb +5 -3
  20. data/lib/puppet/bindings.rb +147 -0
  21. data/lib/puppet/configurer.rb +25 -15
  22. data/lib/puppet/configurer/fact_handler.rb +2 -9
  23. data/lib/puppet/daemon.rb +44 -33
  24. data/lib/puppet/defaults.rb +57 -26
  25. data/lib/puppet/error.rb +1 -1
  26. data/lib/puppet/external/dot.rb +2 -2
  27. data/lib/puppet/external/nagios/base.rb +1 -6
  28. data/lib/puppet/external/pson/common.rb +2 -2
  29. data/lib/puppet/external/pson/pure/generator.rb +2 -2
  30. data/lib/puppet/external/pson/pure/parser.rb +1 -1
  31. data/lib/puppet/face/ca.rb +1 -1
  32. data/lib/puppet/face/config.rb +1 -1
  33. data/lib/puppet/face/help.rb +2 -2
  34. data/lib/puppet/face/module/list.rb +2 -2
  35. data/lib/puppet/feature/rails.rb +1 -1
  36. data/lib/puppet/file_bucket/dipper.rb +0 -1
  37. data/lib/puppet/file_serving/base.rb +1 -1
  38. data/lib/puppet/file_serving/configuration/parser.rb +20 -14
  39. data/lib/puppet/forge.rb +0 -32
  40. data/lib/puppet/forge/cache.rb +1 -1
  41. data/lib/puppet/forge/errors.rb +3 -3
  42. data/lib/puppet/forge/repository.rb +7 -42
  43. data/lib/puppet/graph.rb +11 -0
  44. data/lib/puppet/graph/key.rb +26 -0
  45. data/lib/puppet/graph/prioritizer.rb +29 -0
  46. data/lib/puppet/graph/random_prioritizer.rb +16 -0
  47. data/lib/puppet/{rb_tree_map.rb → graph/rb_tree_map.rb} +3 -3
  48. data/lib/puppet/graph/relationship_graph.rb +246 -0
  49. data/lib/puppet/graph/sequential_prioritizer.rb +31 -0
  50. data/lib/puppet/{simple_graph.rb → graph/simple_graph.rb} +22 -3
  51. data/lib/puppet/graph/title_hash_prioritizer.rb +16 -0
  52. data/lib/puppet/indirector.rb +2 -2
  53. data/lib/puppet/indirector/catalog/compiler.rb +10 -7
  54. data/lib/puppet/indirector/catalog/static_compiler.rb +50 -0
  55. data/lib/puppet/indirector/certificate/rest.rb +1 -1
  56. data/lib/puppet/indirector/exec.rb +1 -1
  57. data/lib/puppet/indirector/facts/facter.rb +2 -2
  58. data/lib/puppet/indirector/facts/inventory_active_record.rb +0 -1
  59. data/lib/puppet/indirector/facts/network_device.rb +1 -1
  60. data/lib/puppet/indirector/file_bucket_file/file.rb +0 -1
  61. data/lib/puppet/indirector/indirection.rb +2 -2
  62. data/lib/puppet/indirector/memory.rb +9 -0
  63. data/lib/puppet/indirector/node/ldap.rb +2 -4
  64. data/lib/puppet/indirector/report/processor.rb +1 -2
  65. data/lib/puppet/indirector/report/rest.rb +1 -1
  66. data/lib/puppet/indirector/request.rb +32 -10
  67. data/lib/puppet/indirector/resource/rest.rb +1 -1
  68. data/lib/puppet/indirector/resource_type/parser.rb +31 -12
  69. data/lib/puppet/interface.rb +1 -1
  70. data/lib/puppet/interface/documentation.rb +7 -11
  71. data/lib/puppet/interface/option.rb +1 -1
  72. data/lib/puppet/interface/option_builder.rb +1 -1
  73. data/lib/puppet/metatype/manager.rb +2 -2
  74. data/lib/puppet/module.rb +7 -1
  75. data/lib/puppet/module_tool.rb +1 -1
  76. data/lib/puppet/module_tool/applications/application.rb +10 -0
  77. data/lib/puppet/module_tool/applications/installer.rb +6 -3
  78. data/lib/puppet/module_tool/dependency.rb +2 -0
  79. data/lib/puppet/module_tool/errors/upgrader.rb +1 -1
  80. data/lib/puppet/module_tool/metadata.rb +25 -13
  81. data/lib/puppet/module_tool/modulefile.rb +7 -7
  82. data/lib/puppet/module_tool/shared_behaviors.rb +4 -2
  83. data/lib/puppet/module_tool/skeleton.rb +1 -1
  84. data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +5 -5
  85. data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +5 -4
  86. data/lib/puppet/network/auth_config_parser.rb +3 -0
  87. data/lib/puppet/network/authconfig.rb +0 -1
  88. data/lib/puppet/network/authorization.rb +1 -1
  89. data/lib/puppet/network/authstore.rb +2 -2
  90. data/lib/puppet/network/format_handler.rb +25 -114
  91. data/lib/puppet/network/format_support.rb +106 -0
  92. data/lib/puppet/network/formats.rb +10 -4
  93. data/lib/puppet/network/http/compression.rb +1 -1
  94. data/lib/puppet/network/http/connection.rb +76 -32
  95. data/lib/puppet/network/http/handler.rb +122 -61
  96. data/lib/puppet/network/http/rack/rest.rb +1 -1
  97. data/lib/puppet/network/http/webrick/rest.rb +9 -3
  98. data/lib/puppet/network/http_pool.rb +2 -2
  99. data/lib/puppet/network/resolver.rb +1 -0
  100. data/lib/puppet/network/server.rb +5 -81
  101. data/lib/puppet/node/environment.rb +256 -13
  102. data/lib/puppet/node/facts.rb +28 -2
  103. data/lib/puppet/parameter.rb +27 -18
  104. data/lib/puppet/parameter/boolean.rb +20 -0
  105. data/lib/puppet/parameter/path.rb +1 -1
  106. data/lib/puppet/parameter/value.rb +1 -1
  107. data/lib/puppet/parameter/value_collection.rb +1 -1
  108. data/lib/puppet/parser/ast/arithmetic_operator.rb +8 -0
  109. data/lib/puppet/parser/ast/casestatement.rb +0 -3
  110. data/lib/puppet/parser/ast/lambda.rb +25 -6
  111. data/lib/puppet/parser/ast/leaf.rb +10 -3
  112. data/lib/puppet/parser/ast/nop.rb +1 -1
  113. data/lib/puppet/parser/ast/resource_override.rb +0 -2
  114. data/lib/puppet/parser/compiler.rb +92 -34
  115. data/lib/puppet/parser/files.rb +0 -5
  116. data/lib/puppet/parser/functions/create_resources.rb +23 -46
  117. data/lib/puppet/parser/functions/each.rb +0 -2
  118. data/lib/puppet/parser/functions/extlookup.rb +2 -2
  119. data/lib/puppet/parser/functions/foreach.rb +0 -2
  120. data/lib/puppet/parser/functions/hiera_include.rb +1 -1
  121. data/lib/puppet/parser/functions/lookup.rb +44 -0
  122. data/lib/puppet/parser/functions/slice.rb +1 -1
  123. data/lib/puppet/parser/grammar.ra +0 -1
  124. data/lib/puppet/parser/lexer.rb +0 -1
  125. data/lib/puppet/parser/parser.rb +0 -1
  126. data/lib/puppet/parser/parser_factory.rb +3 -2
  127. data/lib/puppet/parser/parser_support.rb +1 -1
  128. data/lib/puppet/parser/relationship.rb +1 -1
  129. data/lib/puppet/parser/scope.rb +49 -24
  130. data/lib/puppet/parser/type_loader.rb +13 -18
  131. data/lib/puppet/pops.rb +45 -0
  132. data/lib/puppet/pops/adaptable.rb +2 -2
  133. data/lib/puppet/pops/adapters.rb +4 -0
  134. data/lib/puppet/pops/binder/binder.rb +421 -0
  135. data/lib/puppet/pops/binder/binder_issues.rb +142 -0
  136. data/lib/puppet/pops/binder/bindings_checker.rb +217 -0
  137. data/lib/puppet/pops/binder/bindings_composer.rb +241 -0
  138. data/lib/puppet/pops/binder/bindings_factory.rb +847 -0
  139. data/lib/puppet/pops/binder/bindings_label_provider.rb +46 -0
  140. data/lib/puppet/pops/binder/bindings_loader.rb +79 -0
  141. data/lib/puppet/pops/binder/bindings_model.rb +215 -0
  142. data/lib/puppet/pops/binder/bindings_model_dumper.rb +205 -0
  143. data/lib/puppet/pops/binder/bindings_validator_factory.rb +28 -0
  144. data/lib/puppet/pops/binder/config/binder_config.rb +139 -0
  145. data/lib/puppet/pops/binder/config/binder_config_checker.rb +183 -0
  146. data/lib/puppet/pops/binder/config/diagnostic_producer.rb +32 -0
  147. data/lib/puppet/pops/binder/config/issues.rb +106 -0
  148. data/lib/puppet/pops/binder/hiera2.rb +10 -0
  149. data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +148 -0
  150. data/lib/puppet/pops/binder/hiera2/config.rb +69 -0
  151. data/lib/puppet/pops/binder/hiera2/config_checker.rb +68 -0
  152. data/lib/puppet/pops/binder/hiera2/diagnostic_producer.rb +36 -0
  153. data/lib/puppet/pops/binder/hiera2/issues.rb +67 -0
  154. data/lib/puppet/pops/binder/hiera2/json_backend.rb +18 -0
  155. data/lib/puppet/pops/binder/hiera2/yaml_backend.rb +21 -0
  156. data/lib/puppet/pops/binder/injector.rb +688 -0
  157. data/lib/puppet/pops/binder/injector_entry.rb +53 -0
  158. data/lib/puppet/pops/binder/key_factory.rb +61 -0
  159. data/lib/puppet/pops/binder/producers.rb +829 -0
  160. data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +67 -0
  161. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +34 -0
  162. data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +92 -0
  163. data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +84 -0
  164. data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +54 -0
  165. data/lib/puppet/pops/binder/system_bindings.rb +72 -0
  166. data/lib/puppet/pops/issue_reporter.rb +75 -0
  167. data/lib/puppet/pops/issues.rb +9 -5
  168. data/lib/puppet/pops/model/ast_transformer.rb +4 -4
  169. data/lib/puppet/pops/model/ast_tree_dumper.rb +1 -1
  170. data/lib/puppet/pops/model/factory.rb +25 -13
  171. data/lib/puppet/pops/model/model.rb +1 -1
  172. data/lib/puppet/pops/model/tree_dumper.rb +2 -2
  173. data/lib/puppet/pops/parser/egrammar.ra +0 -1
  174. data/lib/puppet/pops/parser/eparser.rb +1 -2
  175. data/lib/puppet/pops/parser/evaluating_parser.rb +162 -0
  176. data/lib/puppet/pops/parser/lexer.rb +8 -6
  177. data/lib/puppet/pops/types/class_loader.rb +118 -0
  178. data/lib/puppet/pops/types/type_calculator.rb +557 -0
  179. data/lib/puppet/pops/types/type_factory.rb +147 -0
  180. data/lib/puppet/pops/types/type_parser.rb +117 -0
  181. data/lib/puppet/pops/types/types.rb +132 -0
  182. data/lib/puppet/pops/validation.rb +146 -17
  183. data/lib/puppet/pops/validation/checker3_1.rb +1 -1
  184. data/lib/puppet/pops/validation/validator_factory_3_1.rb +6 -16
  185. data/lib/puppet/property.rb +3 -3
  186. data/lib/puppet/property/keyvalue.rb +1 -1
  187. data/lib/puppet/provider.rb +2 -2
  188. data/lib/puppet/provider/aixobject.rb +19 -21
  189. data/lib/puppet/provider/augeas/augeas.rb +3 -1
  190. data/lib/puppet/provider/command.rb +2 -2
  191. data/lib/puppet/provider/group/aix.rb +1 -1
  192. data/lib/puppet/provider/group/ldap.rb +1 -1
  193. data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
  194. data/lib/puppet/provider/mailalias/aliases.rb +3 -8
  195. data/lib/puppet/provider/mcx/mcxcontent.rb +7 -1
  196. data/lib/puppet/provider/mount.rb +8 -3
  197. data/lib/puppet/provider/nameservice.rb +1 -1
  198. data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
  199. data/lib/puppet/provider/package/appdmg.rb +1 -1
  200. data/lib/puppet/provider/package/apt.rb +0 -1
  201. data/lib/puppet/provider/package/dpkg.rb +86 -32
  202. data/lib/puppet/provider/package/fink.rb +0 -2
  203. data/lib/puppet/provider/package/freebsd.rb +0 -2
  204. data/lib/puppet/provider/package/openbsd.rb +57 -10
  205. data/lib/puppet/provider/package/opkg.rb +0 -1
  206. data/lib/puppet/provider/package/pacman.rb +0 -1
  207. data/lib/puppet/provider/package/pip.rb +1 -1
  208. data/lib/puppet/provider/package/pkgdmg.rb +17 -6
  209. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  210. data/lib/puppet/provider/package/portage.rb +9 -1
  211. data/lib/puppet/provider/package/ports.rb +2 -2
  212. data/lib/puppet/provider/package/rpm.rb +29 -12
  213. data/lib/puppet/provider/package/rug.rb +1 -1
  214. data/lib/puppet/provider/package/urpmi.rb +11 -15
  215. data/lib/puppet/provider/package/windows/exe_package.rb +1 -1
  216. data/lib/puppet/provider/package/windows/package.rb +1 -26
  217. data/lib/puppet/provider/package/yum.rb +1 -1
  218. data/lib/puppet/provider/package/zypper.rb +22 -3
  219. data/lib/puppet/provider/parsedfile.rb +1 -12
  220. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +1 -1
  221. data/lib/puppet/provider/service/base.rb +1 -1
  222. data/lib/puppet/provider/service/daemontools.rb +3 -3
  223. data/lib/puppet/provider/service/debian.rb +1 -1
  224. data/lib/puppet/provider/service/init.rb +14 -20
  225. data/lib/puppet/provider/service/openrc.rb +3 -1
  226. data/lib/puppet/provider/service/redhat.rb +5 -8
  227. data/lib/puppet/provider/service/runit.rb +3 -2
  228. data/lib/puppet/provider/service/systemd.rb +1 -1
  229. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
  230. data/lib/puppet/provider/sshkey/parsed.rb +0 -2
  231. data/lib/puppet/provider/user/aix.rb +25 -12
  232. data/lib/puppet/provider/user/directoryservice.rb +4 -7
  233. data/lib/puppet/provider/user/ldap.rb +0 -1
  234. data/lib/puppet/provider/user/user_role_add.rb +2 -0
  235. data/lib/puppet/provider/user/useradd.rb +1 -1
  236. data/lib/puppet/provider/zone/solaris.rb +1 -2
  237. data/lib/puppet/reference/metaparameter.rb +1 -1
  238. data/lib/puppet/reference/type.rb +1 -1
  239. data/lib/puppet/reports/rrdgraph.rb +1 -1
  240. data/lib/puppet/reports/tagmail.rb +1 -1
  241. data/lib/puppet/resource.rb +16 -4
  242. data/lib/puppet/resource/catalog.rb +111 -173
  243. data/lib/puppet/resource/status.rb +42 -3
  244. data/lib/puppet/resource/type.rb +33 -46
  245. data/lib/puppet/resource/type_collection.rb +19 -15
  246. data/lib/puppet/run.rb +5 -1
  247. data/lib/puppet/scheduler/scheduler.rb +14 -15
  248. data/lib/puppet/settings.rb +78 -41
  249. data/lib/puppet/settings/boolean_setting.rb +0 -2
  250. data/lib/puppet/settings/config_file.rb +0 -2
  251. data/lib/puppet/settings/directory_setting.rb +0 -2
  252. data/lib/puppet/settings/duration_setting.rb +0 -2
  253. data/lib/puppet/settings/enum_setting.rb +16 -0
  254. data/lib/puppet/settings/file_setting.rb +0 -2
  255. data/lib/puppet/settings/path_setting.rb +0 -2
  256. data/lib/puppet/settings/string_setting.rb +0 -3
  257. data/lib/puppet/settings/terminus_setting.rb +0 -2
  258. data/lib/puppet/ssl/certificate_authority.rb +102 -9
  259. data/lib/puppet/test/test_helper.rb +1 -0
  260. data/lib/puppet/transaction.rb +130 -292
  261. data/lib/puppet/transaction/additional_resource_generator.rb +126 -0
  262. data/lib/puppet/transaction/event.rb +16 -1
  263. data/lib/puppet/transaction/report.rb +34 -14
  264. data/lib/puppet/transaction/resource_harness.rb +16 -19
  265. data/lib/puppet/type.rb +59 -53
  266. data/lib/puppet/type/component.rb +0 -2
  267. data/lib/puppet/type/cron.rb +13 -2
  268. data/lib/puppet/type/exec.rb +5 -7
  269. data/lib/puppet/type/file.rb +9 -32
  270. data/lib/puppet/type/file/content.rb +4 -1
  271. data/lib/puppet/type/file/ctime.rb +3 -1
  272. data/lib/puppet/type/file/ensure.rb +1 -1
  273. data/lib/puppet/type/file/mode.rb +0 -1
  274. data/lib/puppet/type/file/mtime.rb +2 -1
  275. data/lib/puppet/type/group.rb +7 -9
  276. data/lib/puppet/type/host.rb +1 -2
  277. data/lib/puppet/type/mcx.rb +0 -1
  278. data/lib/puppet/type/mount.rb +38 -6
  279. data/lib/puppet/type/package.rb +2 -2
  280. data/lib/puppet/type/resources.rb +5 -4
  281. data/lib/puppet/type/schedule.rb +1 -4
  282. data/lib/puppet/type/selmodule.rb +1 -1
  283. data/lib/puppet/type/service.rb +1 -3
  284. data/lib/puppet/type/tidy.rb +3 -3
  285. data/lib/puppet/type/user.rb +9 -13
  286. data/lib/puppet/type/yumrepo.rb +11 -7
  287. data/lib/puppet/util.rb +14 -7
  288. data/lib/puppet/util/autoload.rb +0 -1
  289. data/lib/puppet/util/backups.rb +1 -3
  290. data/lib/puppet/util/classgen.rb +1 -1
  291. data/lib/puppet/util/command_line/puppet_option_parser.rb +1 -3
  292. data/lib/puppet/util/command_line/trollop.rb +1 -1
  293. data/lib/puppet/util/constant_inflector.rb +1 -2
  294. data/lib/puppet/util/errors.rb +1 -0
  295. data/lib/puppet/util/file_watcher.rb +28 -0
  296. data/lib/puppet/util/fileparsing.rb +1 -3
  297. data/lib/puppet/util/filetype.rb +0 -1
  298. data/lib/puppet/util/http_proxy.rb +38 -0
  299. data/lib/puppet/util/ldap/manager.rb +1 -2
  300. data/lib/puppet/util/log.rb +31 -10
  301. data/lib/puppet/util/log/destinations.rb +0 -50
  302. data/lib/puppet/util/metric.rb +8 -1
  303. data/lib/puppet/util/monkey_patches.rb +14 -148
  304. data/lib/puppet/util/network_device/cisco/facts.rb +1 -1
  305. data/lib/puppet/util/network_device/config.rb +6 -9
  306. data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
  307. data/lib/puppet/util/pidlock.rb +3 -0
  308. data/lib/puppet/util/posix.rb +1 -1
  309. data/lib/puppet/util/profiler.rb +1 -1
  310. data/lib/puppet/util/rdoc.rb +1 -1
  311. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +0 -1
  312. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +50 -42
  313. data/lib/puppet/util/retryaction.rb +0 -1
  314. data/lib/puppet/util/symbolic_file_mode.rb +5 -1
  315. data/lib/puppet/util/tagging.rb +0 -2
  316. data/lib/puppet/util/warnings.rb +3 -0
  317. data/lib/puppet/util/watched_file.rb +37 -0
  318. data/lib/puppet/util/watcher.rb +17 -0
  319. data/lib/puppet/util/watcher/change_watcher.rb +33 -0
  320. data/lib/puppet/util/watcher/periodic_watcher.rb +37 -0
  321. data/lib/puppet/util/watcher/timer.rb +19 -0
  322. data/lib/puppet/util/windows/user.rb +1 -1
  323. data/lib/puppet/version.rb +1 -1
  324. data/lib/puppetx.rb +109 -0
  325. data/lib/puppetx/puppet/bindings_scheme_handler.rb +130 -0
  326. data/lib/puppetx/puppet/hiera2_backend.rb +31 -0
  327. data/lib/puppetx/puppet/syntax_checker.rb +91 -0
  328. data/lib/puppetx/puppetlabs/syntax_checkers/json.rb +39 -0
  329. data/lib/semver.rb +1 -1
  330. data/man/man8/puppet-kick.8 +1 -1
  331. data/spec/fixtures/integration/provider/cron/crontab/unspecialized +15 -0
  332. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/binder_config.yaml +18 -0
  333. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/hiera.yaml +8 -0
  334. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/common.yaml +1 -0
  335. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/hiera.yaml +10 -0
  336. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +19 -0
  337. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/common.yaml +1 -0
  338. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/hiera.yaml +11 -0
  339. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/localhost.yaml +1 -0
  340. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/common.yaml +3 -0
  341. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/hiera.yaml +13 -0
  342. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppet/bindings/awesome/default.rb +4 -0
  343. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_backend.rb +11 -0
  344. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_scheme_handler.rb +18 -0
  345. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/localhost.yaml +1 -0
  346. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/common.yaml +3 -0
  347. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/hiera_config.yaml +9 -0
  348. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/common.yaml +2 -0
  349. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/hiera.yaml +11 -0
  350. data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +9 -0
  351. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/hiera.yaml +9 -0
  352. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.json +9 -0
  353. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.yaml +5 -0
  354. data/spec/fixtures/unit/pops/binder/hiera2/config/bad_syntax/hiera.yaml +10 -0
  355. data/spec/fixtures/unit/pops/binder/hiera2/config/malformed_hierarchy/hiera.yaml +8 -0
  356. data/spec/fixtures/unit/pops/binder/hiera2/config/missing/foo.txt +1 -0
  357. data/spec/fixtures/unit/pops/binder/hiera2/config/no_backends/hiera.yaml +7 -0
  358. data/spec/fixtures/unit/pops/binder/hiera2/config/no_hierarchy/hiera.yaml +4 -0
  359. data/spec/fixtures/unit/pops/binder/hiera2/config/not_a_hash/hiera.yaml +2 -0
  360. data/spec/fixtures/unit/pops/binder/hiera2/config/ok/hiera.yaml +8 -0
  361. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/empty/common.yaml +0 -0
  362. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/invalid/common.yaml +1 -0
  363. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/ok/common.yaml +2 -0
  364. data/spec/fixtures/unit/provider/package/openbsd/pkginfo_flavors.list +2 -0
  365. data/spec/integration/agent/logging_spec.rb +178 -0
  366. data/spec/integration/configurer_spec.rb +1 -1
  367. data/spec/integration/defaults_spec.rb +0 -6
  368. data/spec/integration/network/authconfig_spec.rb +19 -0
  369. data/spec/integration/network/server/webrick_spec.rb +10 -11
  370. data/spec/integration/parser/catalog_spec.rb +85 -0
  371. data/spec/integration/provider/cron/crontab_spec.rb +11 -0
  372. data/spec/integration/provider/mount_spec.rb +1 -0
  373. data/spec/integration/transaction_spec.rb +8 -8
  374. data/spec/integration/type/file_spec.rb +1 -1
  375. data/spec/integration/util/settings_spec.rb +58 -11
  376. data/spec/lib/matchers/include_in_order.rb +21 -0
  377. data/spec/lib/matchers/include_in_order_spec.rb +30 -0
  378. data/spec/lib/matchers/relationship_graph_matchers.rb +48 -0
  379. data/spec/lib/puppet_spec/compiler.rb +24 -0
  380. data/spec/lib/puppet_spec/pops.rb +16 -0
  381. data/spec/spec_helper.rb +0 -1
  382. data/spec/unit/application/agent_spec.rb +145 -145
  383. data/spec/unit/application/apply_spec.rb +1 -1
  384. data/spec/unit/application/doc_spec.rb +1 -1
  385. data/spec/unit/application/face_base_spec.rb +3 -3
  386. data/spec/unit/application/facts_spec.rb +1 -0
  387. data/spec/unit/application/master_spec.rb +0 -15
  388. data/spec/unit/application/queue_spec.rb +6 -12
  389. data/spec/unit/application/resource_spec.rb +1 -1
  390. data/spec/unit/configurer/fact_handler_spec.rb +19 -50
  391. data/spec/unit/configurer_spec.rb +23 -7
  392. data/spec/unit/daemon_spec.rb +97 -121
  393. data/spec/unit/defaults_spec.rb +44 -0
  394. data/spec/unit/face/node_spec.rb +2 -2
  395. data/spec/unit/file_serving/configuration/parser_spec.rb +23 -33
  396. data/spec/unit/file_serving/configuration_spec.rb +2 -2
  397. data/spec/unit/file_serving/mount/file_spec.rb +4 -4
  398. data/spec/unit/forge/repository_spec.rb +9 -29
  399. data/spec/unit/graph/key_spec.rb +41 -0
  400. data/spec/unit/{rb_tree_map_spec.rb → graph/rb_tree_map_spec.rb} +7 -7
  401. data/spec/unit/graph/relationship_graph_spec.rb +393 -0
  402. data/spec/unit/graph/sequential_prioritizer_spec.rb +32 -0
  403. data/spec/unit/{simple_graph_spec.rb → graph/simple_graph.rb} +42 -254
  404. data/spec/unit/graph/title_hash_prioritizer_spec.rb +49 -0
  405. data/spec/unit/hiera_puppet_spec.rb +1 -1
  406. data/spec/unit/indirector/catalog/active_record_spec.rb +4 -2
  407. data/spec/unit/indirector/catalog/compiler_spec.rb +20 -26
  408. data/spec/unit/indirector/face_spec.rb +1 -1
  409. data/spec/unit/indirector/facts/facter_spec.rb +11 -1
  410. data/spec/unit/indirector/facts/network_device_spec.rb +11 -1
  411. data/spec/unit/indirector/hiera_spec.rb +1 -1
  412. data/spec/unit/indirector/instrumentation_data/local_spec.rb +1 -1
  413. data/spec/unit/indirector/instrumentation_listener/local_spec.rb +1 -1
  414. data/spec/unit/indirector/request_spec.rb +92 -39
  415. data/spec/unit/indirector/rest_spec.rb +1 -0
  416. data/spec/unit/indirector_spec.rb +2 -2
  417. data/spec/unit/interface/option_builder_spec.rb +1 -0
  418. data/spec/unit/interface/option_spec.rb +1 -0
  419. data/spec/unit/interface_spec.rb +2 -2
  420. data/spec/unit/module_tool/applications/installer_spec.rb +49 -2
  421. data/spec/unit/module_tool/metadata_spec.rb +13 -0
  422. data/spec/unit/network/authstore_spec.rb +1 -1
  423. data/spec/unit/network/format_handler_spec.rb +33 -282
  424. data/spec/unit/network/format_support_spec.rb +199 -0
  425. data/spec/unit/network/formats_spec.rb +2 -2
  426. data/spec/unit/network/http/connection_spec.rb +88 -7
  427. data/spec/unit/network/http/handler_spec.rb +271 -249
  428. data/spec/unit/network/http/rack/rest_spec.rb +1 -1
  429. data/spec/unit/network/http/webrick/rest_spec.rb +73 -22
  430. data/spec/unit/network/http_pool_spec.rb +40 -0
  431. data/spec/unit/network/server_spec.rb +18 -207
  432. data/spec/unit/node/facts_spec.rb +68 -17
  433. data/spec/unit/other/selinux_spec.rb +24 -20
  434. data/spec/unit/parameter/boolean_spec.rb +25 -0
  435. data/spec/unit/parameter/value_collection_spec.rb +7 -7
  436. data/spec/unit/parameter_spec.rb +10 -13
  437. data/spec/unit/parser/ast/function_spec.rb +4 -4
  438. data/spec/unit/parser/ast/leaf_spec.rb +45 -6
  439. data/spec/unit/parser/collector_spec.rb +3 -3
  440. data/spec/unit/parser/compiler_spec.rb +4 -3
  441. data/spec/unit/parser/functions/create_resources_spec.rb +9 -25
  442. data/spec/unit/parser/functions/extlookup_spec.rb +2 -2
  443. data/spec/unit/parser/functions/hiera_include_spec.rb +12 -0
  444. data/spec/unit/parser/functions/lookup_spec.rb +96 -0
  445. data/spec/unit/parser/functions/regsubst_spec.rb +2 -2
  446. data/spec/unit/parser/functions/split_spec.rb +2 -2
  447. data/spec/unit/parser/functions/sprintf_spec.rb +1 -1
  448. data/spec/unit/parser/functions/versioncmp_spec.rb +2 -2
  449. data/spec/unit/parser/functions_spec.rb +7 -7
  450. data/spec/unit/parser/lexer_spec.rb +1 -1
  451. data/spec/unit/parser/methods/collect_spec.rb +43 -0
  452. data/spec/unit/parser/resource_spec.rb +9 -9
  453. data/spec/unit/parser/scope_spec.rb +45 -2
  454. data/spec/unit/parser/type_loader_spec.rb +159 -175
  455. data/spec/unit/pops/binder/binder_spec.rb +62 -0
  456. data/spec/unit/pops/binder/bindings_checker_spec.rb +196 -0
  457. data/spec/unit/pops/binder/bindings_composer_spec.rb +89 -0
  458. data/spec/unit/pops/binder/bindings_validator_factory_spec.rb +18 -0
  459. data/spec/unit/pops/binder/config/binder_config_spec.rb +48 -0
  460. data/spec/unit/pops/binder/hiera2/bindings_provider_spec.rb +74 -0
  461. data/spec/unit/pops/binder/hiera2/config_spec.rb +61 -0
  462. data/spec/unit/pops/binder/hiera2/yaml_backend_spec.rb +33 -0
  463. data/spec/unit/pops/binder/injector_spec.rb +789 -0
  464. data/spec/unit/pops/containment_spec.rb +1 -0
  465. data/spec/unit/pops/issues_spec.rb +1 -1
  466. data/spec/unit/pops/parser/evaluating_parser_spec.rb +88 -0
  467. data/spec/unit/pops/parser/lexer_spec.rb +1 -1
  468. data/spec/unit/pops/parser/parse_calls_spec.rb +4 -0
  469. data/spec/unit/pops/parser/parser_spec.rb +1 -1
  470. data/spec/unit/pops/types/type_calculator_spec.rb +484 -0
  471. data/spec/unit/pops/types/type_factory_spec.rb +65 -0
  472. data/spec/unit/pops/types/type_parser_spec.rb +93 -0
  473. data/spec/unit/property/list_spec.rb +1 -1
  474. data/spec/unit/property/ordered_list_spec.rb +1 -1
  475. data/spec/unit/provider/aixobject_spec.rb +101 -0
  476. data/spec/unit/provider/augeas/augeas_spec.rb +14 -3
  477. data/spec/unit/provider/mcx/mcxcontent_spec.rb +52 -16
  478. data/spec/unit/provider/mount/parsed_spec.rb +44 -56
  479. data/spec/unit/provider/mount_spec.rb +11 -2
  480. data/spec/unit/provider/naginator_spec.rb +8 -0
  481. data/spec/unit/provider/package/apt_spec.rb +5 -1
  482. data/spec/unit/provider/package/aptitude_spec.rb +9 -5
  483. data/spec/unit/provider/package/aptrpm_spec.rb +2 -2
  484. data/spec/unit/provider/package/dpkg_spec.rb +274 -99
  485. data/spec/unit/provider/package/openbsd_spec.rb +84 -1
  486. data/spec/unit/provider/package/opkg_spec.rb +3 -3
  487. data/spec/unit/provider/package/pip_spec.rb +16 -0
  488. data/spec/unit/provider/package/pkgdmg_spec.rb +62 -7
  489. data/spec/unit/provider/package/rpm_spec.rb +112 -21
  490. data/spec/unit/provider/package/urpmi.rb +80 -0
  491. data/spec/unit/provider/package/windows/exe_package_spec.rb +1 -1
  492. data/spec/unit/provider/package/yum_spec.rb +85 -0
  493. data/spec/unit/provider/package/zypper_spec.rb +25 -6
  494. data/spec/unit/provider/parsedfile_spec.rb +3 -2
  495. data/spec/unit/provider/service/init_spec.rb +10 -10
  496. data/spec/unit/provider/service/openrc_spec.rb +16 -0
  497. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  498. data/spec/unit/provider/service/redhat_spec.rb +7 -0
  499. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +2 -2
  500. data/spec/unit/provider/user/aix_spec.rb +89 -0
  501. data/spec/unit/provider/user/directoryservice_spec.rb +11 -4
  502. data/spec/unit/provider/user/user_role_add_spec.rb +18 -0
  503. data/spec/unit/provider_spec.rb +2 -13
  504. data/spec/unit/reports/http_spec.rb +1 -1
  505. data/spec/unit/resource/catalog_spec.rb +23 -97
  506. data/spec/unit/resource/resource_type.json +34 -0
  507. data/spec/unit/resource/status_spec.rb +56 -0
  508. data/spec/unit/resource/type_collection_spec.rb +6 -6
  509. data/spec/unit/resource/type_spec.rb +25 -5
  510. data/spec/unit/resource_spec.rb +68 -24
  511. data/spec/unit/run_spec.rb +16 -0
  512. data/spec/unit/scheduler/scheduler_spec.rb +14 -27
  513. data/spec/unit/semver_spec.rb +5 -0
  514. data/spec/unit/settings/enum_setting_spec.rb +27 -0
  515. data/spec/unit/settings_spec.rb +53 -44
  516. data/spec/unit/ssl/certificate_authority_spec.rb +155 -19
  517. data/spec/unit/transaction/additional_resource_generator_spec.rb +419 -0
  518. data/spec/unit/transaction/event_manager_spec.rb +2 -2
  519. data/spec/unit/transaction/event_spec.rb +57 -0
  520. data/spec/unit/transaction/report_spec.rb +66 -0
  521. data/spec/unit/transaction/resource_harness_spec.rb +27 -20
  522. data/spec/unit/transaction_spec.rb +182 -390
  523. data/spec/unit/type/augeas_spec.rb +3 -3
  524. data/spec/unit/type/component_spec.rb +0 -9
  525. data/spec/unit/type/computer_spec.rb +1 -1
  526. data/spec/unit/type/cron_spec.rb +2 -2
  527. data/spec/unit/type/exec_spec.rb +4 -2
  528. data/spec/unit/type/file/content_spec.rb +11 -0
  529. data/spec/unit/type/file/group_spec.rb +1 -1
  530. data/spec/unit/type/file_spec.rb +16 -8
  531. data/spec/unit/type/mount_spec.rb +445 -259
  532. data/spec/unit/type/package_spec.rb +4 -4
  533. data/spec/unit/type/resources_spec.rb +30 -1
  534. data/spec/unit/type/user_spec.rb +26 -3
  535. data/spec/unit/type/yumrepo_spec.rb +7 -27
  536. data/spec/unit/type/zone_spec.rb +4 -1
  537. data/spec/unit/type_spec.rb +66 -33
  538. data/spec/unit/util/backups_spec.rb +3 -3
  539. data/spec/unit/util/http_proxy_spec.rb +83 -0
  540. data/spec/unit/util/log_spec.rb +79 -8
  541. data/spec/unit/util/metric_spec.rb +12 -0
  542. data/spec/unit/util/monkey_patches_spec.rb +6 -0
  543. data/spec/unit/util/network_device/config_spec.rb +26 -64
  544. data/spec/unit/util/pidlock_spec.rb +4 -1
  545. data/spec/unit/util/tagging_spec.rb +5 -9
  546. data/spec/unit/util/warnings_spec.rb +1 -1
  547. data/spec/unit/util/watched_file_spec.rb +52 -0
  548. data/spec/unit/util/watcher/periodic_watcher_spec.rb +52 -0
  549. data/spec/unit/util/watcher_spec.rb +56 -0
  550. data/spec/unit/util_spec.rb +16 -0
  551. metadata +2767 -2576
  552. data/ext/debian/puppet.manpages +0 -32
  553. data/ext/osx/PackageInfo.plist +0 -36
  554. data/ext/osx/createpackage.sh +0 -187
  555. data/ext/redhat/rundir-perms.patch +0 -28
  556. data/lib/puppet/external/base64.rb +0 -19
  557. data/lib/puppet/util/graph.rb +0 -27
  558. data/lib/puppet/util/loadedfile.rb +0 -61
  559. data/lib/puppet/util/log_paths.rb +0 -22
  560. data/lib/puppet/util/subclass_loader.rb +0 -78
  561. data/spec/monkey_patches/publicize_methods.rb +0 -11
  562. data/spec/unit/util/loadedfile_spec.rb +0 -71
@@ -14,25 +14,76 @@ describe Puppet::Node::Facts, "when indirecting" do
14
14
  @facts.values["one"].should == "1"
15
15
  end
16
16
 
17
- it "should add the node's certificate name as the 'clientcert' fact when adding local facts" do
18
- @facts.add_local_facts
19
- @facts.values["clientcert"].should == Puppet.settings[:certname]
20
- end
17
+ describe "adding local facts" do
18
+ it "should add the node's certificate name as the 'clientcert' fact" do
19
+ @facts.add_local_facts
20
+ @facts.values["clientcert"].should == Puppet.settings[:certname]
21
+ end
21
22
 
22
- it "should add the Puppet version as a 'clientversion' fact when adding local facts" do
23
- @facts.add_local_facts
24
- @facts.values["clientversion"].should == Puppet.version.to_s
25
- end
23
+ it "adds the Puppet version as a 'clientversion' fact" do
24
+ @facts.add_local_facts
25
+ @facts.values["clientversion"].should == Puppet.version.to_s
26
+ end
27
+
28
+ it "adds the agent side noop setting as 'clientnoop'" do
29
+ @facts.add_local_facts
30
+ @facts.values["clientnoop"].should == Puppet.settings[:noop]
31
+ end
26
32
 
27
- it "should not add the current environment" do
28
- @facts.add_local_facts
29
- @facts.values.should_not include("environment")
33
+ it "doesn't add the current environment" do
34
+ @facts.add_local_facts
35
+ @facts.values.should_not include("environment")
36
+ end
37
+
38
+ it "doesn't replace any existing environment fact when adding local facts" do
39
+ @facts.values["environment"] = "foo"
40
+ @facts.add_local_facts
41
+ @facts.values["environment"].should == "foo"
42
+ end
30
43
  end
31
44
 
32
- it "should not replace any existing environment fact when adding local facts" do
33
- @facts.values["environment"] = "foo"
34
- @facts.add_local_facts
35
- @facts.values["environment"].should == "foo"
45
+ describe "when sanitizing facts" do
46
+ it "should convert fact values if needed" do
47
+ @facts.values["test"] = /foo/
48
+ @facts.sanitize
49
+ @facts.values["test"].should == "(?-mix:foo)"
50
+ end
51
+
52
+ it "should convert hash keys if needed" do
53
+ @facts.values["test"] = {/foo/ => "bar"}
54
+ @facts.sanitize
55
+ @facts.values["test"].should == {"(?-mix:foo)" => "bar"}
56
+ end
57
+
58
+ it "should convert hash values if needed" do
59
+ @facts.values["test"] = {"foo" => /bar/}
60
+ @facts.sanitize
61
+ @facts.values["test"].should == {"foo" => "(?-mix:bar)"}
62
+ end
63
+
64
+ it "should convert array elements if needed" do
65
+ @facts.values["test"] = [1, "foo", /bar/]
66
+ @facts.sanitize
67
+ @facts.values["test"].should == [1, "foo", "(?-mix:bar)"]
68
+ end
69
+
70
+ it "should handle nested arrays" do
71
+ @facts.values["test"] = [1, "foo", [/bar/]]
72
+ @facts.sanitize
73
+ @facts.values["test"].should == [1, "foo", ["(?-mix:bar)"]]
74
+ end
75
+
76
+ it "should handle nested hashes" do
77
+ @facts.values["test"] = {/foo/ => {"bar" => /baz/}}
78
+ @facts.sanitize
79
+ @facts.values["test"].should == {"(?-mix:foo)" => {"bar" => "(?-mix:baz)"}}
80
+ end
81
+
82
+ it "should handle nester arrays and hashes" do
83
+ @facts.values["test"] = {/foo/ => ["bar", /baz/]}
84
+ @facts.sanitize
85
+ @facts.values["test"].should == {"(?-mix:foo)" => ["bar", "(?-mix:baz)"]}
86
+ end
36
87
  end
37
88
 
38
89
  describe "when indirecting" do
@@ -67,7 +118,7 @@ describe Puppet::Node::Facts, "when indirecting" do
67
118
  describe "when storing and retrieving" do
68
119
  it "should add metadata to the facts" do
69
120
  facts = Puppet::Node::Facts.new("me", "one" => "two", "three" => "four")
70
- facts.values[:_timestamp].should be_instance_of(Time)
121
+ facts.values['_timestamp'].should be_instance_of(Time)
71
122
  end
72
123
 
73
124
  describe "using pson" do
@@ -82,7 +133,7 @@ describe Puppet::Node::Facts, "when indirecting" do
82
133
  facts = format.intern(Puppet::Node::Facts,pson)
83
134
  facts.name.should == 'foo'
84
135
  facts.expiration.should == @expiration
85
- facts.values.should == {'a' => '1', 'b' => '2', 'c' => '3', :_timestamp => @timestamp}
136
+ facts.values.should == {'a' => '1', 'b' => '2', 'c' => '3', '_timestamp' => @timestamp}
86
137
  end
87
138
 
88
139
  it "should generate properly formatted pson" do
@@ -9,23 +9,24 @@ describe Puppet::Type.type(:file), " when manipulating file contexts" do
9
9
 
10
10
  before :each do
11
11
 
12
- @file = Puppet::Type::File.new(
13
-
12
+ @file = Puppet::Type::File.new(
14
13
  :name => make_absolute("/tmp/foo"),
15
14
  :ensure => "file",
16
15
  :seluser => "user_u",
17
16
  :selrole => "role_r",
18
-
19
- :seltype => "type_t" )
17
+ :seltype => "type_t")
20
18
  end
19
+
21
20
  it "should use :seluser to get/set an SELinux user file context attribute" do
22
- @file.property(:seluser).should == "user_u"
21
+ expect(@file[:seluser]).to eq("user_u")
23
22
  end
23
+
24
24
  it "should use :selrole to get/set an SELinux role file context attribute" do
25
- @file.property(:selrole).should == "role_r"
25
+ expect(@file[:selrole]).to eq("role_r")
26
26
  end
27
+
27
28
  it "should use :seltype to get/set an SELinux user file context attribute" do
28
- @file.property(:seltype).should == "type_t"
29
+ expect(@file[:seltype]).to eq("type_t")
29
30
  end
30
31
  end
31
32
 
@@ -34,27 +35,29 @@ describe Puppet::Type.type(:selboolean), " when manipulating booleans" do
34
35
  provider_class = Puppet::Type::Selboolean.provider(Puppet::Type::Selboolean.providers[0])
35
36
  Puppet::Type::Selboolean.stubs(:defaultprovider).returns provider_class
36
37
 
37
-
38
- @bool = Puppet::Type::Selboolean.new(
39
-
38
+ @bool = Puppet::Type::Selboolean.new(
40
39
  :name => "foo",
41
40
  :value => "on",
42
-
43
41
  :persistent => true )
44
42
  end
43
+
45
44
  it "should be able to access :name" do
46
45
  @bool[:name].should == "foo"
47
46
  end
47
+
48
48
  it "should be able to access :value" do
49
- @bool.property(:value).should == :on
49
+ expect(@bool.property(:value).should).to eq(:on)
50
50
  end
51
+
51
52
  it "should set :value to off" do
52
53
  @bool[:value] = :off
53
- @bool.property(:value).should == :off
54
+ expect(@bool.property(:value).should).to eq(:off)
54
55
  end
56
+
55
57
  it "should be able to access :persistent" do
56
58
  @bool[:persistent].should == :true
57
59
  end
60
+
58
61
  it "should set :persistent to false" do
59
62
  @bool[:persistent] = false
60
63
  @bool[:persistent].should == :false
@@ -66,30 +69,31 @@ describe Puppet::Type.type(:selmodule), " when checking policy modules" do
66
69
  provider_class = Puppet::Type::Selmodule.provider(Puppet::Type::Selmodule.providers[0])
67
70
  Puppet::Type::Selmodule.stubs(:defaultprovider).returns provider_class
68
71
 
69
-
70
- @module = Puppet::Type::Selmodule.new(
71
-
72
+ @module = Puppet::Type::Selmodule.new(
72
73
  :name => "foo",
73
74
  :selmoduledir => "/some/path",
74
75
  :selmodulepath => "/some/path/foo.pp",
75
-
76
76
  :syncversion => true)
77
77
  end
78
+
78
79
  it "should be able to access :name" do
79
80
  @module[:name].should == "foo"
80
81
  end
82
+
81
83
  it "should be able to access :selmoduledir" do
82
84
  @module[:selmoduledir].should == "/some/path"
83
85
  end
86
+
84
87
  it "should be able to access :selmodulepath" do
85
88
  @module[:selmodulepath].should == "/some/path/foo.pp"
86
89
  end
90
+
87
91
  it "should be able to access :syncversion" do
88
- @module.property(:syncversion).should == :true
92
+ expect(@module[:syncversion]).to eq(:true)
89
93
  end
94
+
90
95
  it "should set the syncversion value to false" do
91
96
  @module[:syncversion] = :false
92
- @module.property(:syncversion).should == :false
97
+ expect(@module[:syncversion]).to eq(:false)
93
98
  end
94
99
  end
95
-
@@ -0,0 +1,25 @@
1
+ #! /usr/bin/env ruby
2
+ require 'spec_helper'
3
+ require 'puppet'
4
+ require 'puppet/parameter/boolean'
5
+
6
+ describe Puppet::Parameter::Boolean do
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
13
+ end
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
18
+ 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
23
+ end
24
+ end
25
+ end
@@ -27,7 +27,7 @@ describe Puppet::Parameter::ValueCollection do
27
27
  end
28
28
 
29
29
  it "should be able to add values that are empty strings" do
30
- lambda { @collection.newvalue('') }.should_not raise_error
30
+ expect { @collection.newvalue('') }.to_not raise_error
31
31
  end
32
32
 
33
33
  it "should be able to add values that are empty strings" do
@@ -107,33 +107,33 @@ describe Puppet::Parameter::ValueCollection do
107
107
 
108
108
  it "should fail if the value is not a defined value or alias and does not match a regex" do
109
109
  @collection.newvalues :foo
110
- lambda { @collection.validate("bar") }.should raise_error(ArgumentError)
110
+ expect { @collection.validate("bar") }.to raise_error(ArgumentError)
111
111
  end
112
112
 
113
113
  it "should succeed if the value is one of the defined values" do
114
114
  @collection.newvalues :foo
115
- lambda { @collection.validate(:foo) }.should_not raise_error(ArgumentError)
115
+ expect { @collection.validate(:foo) }.to_not raise_error
116
116
  end
117
117
 
118
118
  it "should succeed if the value is one of the defined values even if the definition uses a symbol and the validation uses a string" do
119
119
  @collection.newvalues :foo
120
- lambda { @collection.validate("foo") }.should_not raise_error(ArgumentError)
120
+ expect { @collection.validate("foo") }.to_not raise_error
121
121
  end
122
122
 
123
123
  it "should succeed if the value is one of the defined values even if the definition uses a string and the validation uses a symbol" do
124
124
  @collection.newvalues "foo"
125
- lambda { @collection.validate(:foo) }.should_not raise_error(ArgumentError)
125
+ expect { @collection.validate(:foo) }.to_not raise_error
126
126
  end
127
127
 
128
128
  it "should succeed if the value is one of the defined aliases" do
129
129
  @collection.newvalues :foo
130
130
  @collection.aliasvalue :bar, :foo
131
- lambda { @collection.validate("bar") }.should_not raise_error(ArgumentError)
131
+ expect { @collection.validate("bar") }.to_not raise_error
132
132
  end
133
133
 
134
134
  it "should succeed if the value matches one of the regexes" do
135
135
  @collection.newvalues %r{\d}
136
- lambda { @collection.validate("10") }.should_not raise_error(ArgumentError)
136
+ expect { @collection.validate("10") }.to_not raise_error
137
137
  end
138
138
  end
139
139
 
@@ -37,11 +37,8 @@ describe Puppet::Parameter do
37
37
  @parameter.tags.should == %w{one two foo}
38
38
  end
39
39
 
40
- it "should provide source_descriptors" do
41
- @resource.expects(:line).returns 10
42
- @resource.expects(:file).returns "file"
43
- @resource.expects(:tags).returns %w{one two}
44
- @parameter.source_descriptors.should == {:tags=>["one", "two", "foo"], :path=>"//foo", :file => "file", :line => 10}
40
+ it "should have a path" do
41
+ @parameter.path.should == "//foo"
45
42
  end
46
43
 
47
44
  describe "when returning the value" do
@@ -83,38 +80,38 @@ describe Puppet::Parameter do
83
80
 
84
81
  it "should catch abnormal failures thrown during validation" do
85
82
  @class.validate { |v| raise "This is broken" }
86
- lambda { @parameter.validate("eh") }.should raise_error(Puppet::DevError)
83
+ expect { @parameter.validate("eh") }.to raise_error(Puppet::DevError)
87
84
  end
88
85
 
89
86
  it "should fail if the value is not a defined value or alias and does not match a regex" do
90
87
  @class.newvalues :foo
91
- lambda { @parameter.validate("bar") }.should raise_error(Puppet::Error)
88
+ expect { @parameter.validate("bar") }.to raise_error(Puppet::Error)
92
89
  end
93
90
 
94
91
  it "should succeed if the value is one of the defined values" do
95
92
  @class.newvalues :foo
96
- lambda { @parameter.validate(:foo) }.should_not raise_error(ArgumentError)
93
+ expect { @parameter.validate(:foo) }.to_not raise_error
97
94
  end
98
95
 
99
96
  it "should succeed if the value is one of the defined values even if the definition uses a symbol and the validation uses a string" do
100
97
  @class.newvalues :foo
101
- lambda { @parameter.validate("foo") }.should_not raise_error(ArgumentError)
98
+ expect { @parameter.validate("foo") }.to_not raise_error
102
99
  end
103
100
 
104
101
  it "should succeed if the value is one of the defined values even if the definition uses a string and the validation uses a symbol" do
105
102
  @class.newvalues "foo"
106
- lambda { @parameter.validate(:foo) }.should_not raise_error(ArgumentError)
103
+ expect { @parameter.validate(:foo) }.to_not raise_error
107
104
  end
108
105
 
109
106
  it "should succeed if the value is one of the defined aliases" do
110
107
  @class.newvalues :foo
111
108
  @class.aliasvalue :bar, :foo
112
- lambda { @parameter.validate("bar") }.should_not raise_error(ArgumentError)
109
+ expect { @parameter.validate("bar") }.to_not raise_error
113
110
  end
114
111
 
115
112
  it "should succeed if the value matches one of the regexes" do
116
113
  @class.newvalues %r{\d}
117
- lambda { @parameter.validate("10") }.should_not raise_error(ArgumentError)
114
+ expect { @parameter.validate("10") }.to_not raise_error
118
115
  end
119
116
  end
120
117
 
@@ -125,7 +122,7 @@ describe Puppet::Parameter do
125
122
 
126
123
  it "should catch abnormal failures thrown during munging" do
127
124
  @class.munge { |v| raise "This is broken" }
128
- lambda { @parameter.munge("eh") }.should raise_error(Puppet::DevError)
125
+ expect { @parameter.munge("eh") }.to raise_error(Puppet::DevError)
129
126
  end
130
127
 
131
128
  it "should return return any matching defined values" do
@@ -10,7 +10,7 @@ describe Puppet::Parser::AST::Function do
10
10
  it "should not fail if the function doesn't exist" do
11
11
  Puppet::Parser::Functions.stubs(:function).returns(false)
12
12
 
13
- lambda{ Puppet::Parser::AST::Function.new :name => "dontexist" }.should_not raise_error(Puppet::ParseError)
13
+ expect{ Puppet::Parser::AST::Function.new :name => "dontexist" }.to_not raise_error
14
14
 
15
15
  end
16
16
  end
@@ -27,7 +27,7 @@ describe Puppet::Parser::AST::Function do
27
27
  Puppet::Parser::Functions.stubs(:function).returns(false)
28
28
  func = Puppet::Parser::AST::Function.new :name => "dontexist"
29
29
 
30
- lambda{ func.evaluate(@scope) }.should raise_error(Puppet::ParseError)
30
+ expect{ func.evaluate(@scope) }.to raise_error(Puppet::ParseError)
31
31
  end
32
32
 
33
33
  it "should fail if the function is a statement used as rvalue" do
@@ -36,7 +36,7 @@ describe Puppet::Parser::AST::Function do
36
36
 
37
37
  func = Puppet::Parser::AST::Function.new :name => "exist", :ftype => :rvalue
38
38
 
39
- lambda{ func.evaluate(@scope) }.should raise_error(Puppet::ParseError, "Function 'exist' does not return a value")
39
+ expect{ func.evaluate(@scope) }.to raise_error(Puppet::ParseError, "Function 'exist' does not return a value")
40
40
  end
41
41
 
42
42
  it "should fail if the function is an rvalue used as statement" do
@@ -45,7 +45,7 @@ describe Puppet::Parser::AST::Function do
45
45
 
46
46
  func = Puppet::Parser::AST::Function.new :name => "exist", :ftype => :statement
47
47
 
48
- lambda{ func.evaluate(@scope) }.should raise_error(Puppet::ParseError,"Function 'exist' must be the value of a statement")
48
+ expect{ func.evaluate(@scope) }.to raise_error(Puppet::ParseError,"Function 'exist' must be the value of a statement")
49
49
  end
50
50
 
51
51
  it "should evaluate its arguments" do
@@ -10,7 +10,7 @@ describe Puppet::Parser::AST::Leaf do
10
10
  @leaf = Puppet::Parser::AST::Leaf.new(:value => @value)
11
11
  end
12
12
 
13
- it "should have a evaluate_match method" do
13
+ it "should have an evaluate_match method" do
14
14
  Puppet::Parser::AST::Leaf.new(:value => "value").should respond_to(:evaluate_match)
15
15
  end
16
16
 
@@ -177,7 +177,7 @@ describe Puppet::Parser::AST::HashOrArrayAccess do
177
177
  access.evaluate(@scope).should == :undef
178
178
  end
179
179
 
180
- it "should be able to return an hash value" do
180
+ it "should be able to return a hash value" do
181
181
  @scope["a"] = { "key1" => "val1", "key2" => "val2", "key3" => "val3" }
182
182
 
183
183
  access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key2" )
@@ -193,7 +193,7 @@ describe Puppet::Parser::AST::HashOrArrayAccess do
193
193
  access.evaluate(@scope).should == :undef
194
194
  end
195
195
 
196
- it "should be able to return an hash value with a numerical key" do
196
+ it "should be able to return a hash value with a numerical key" do
197
197
  @scope["a"] = { "key1" => "val1", "key2" => "val2", "45" => "45", "key3" => "val3" }
198
198
 
199
199
  access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "45" )
@@ -201,7 +201,7 @@ describe Puppet::Parser::AST::HashOrArrayAccess do
201
201
  access.evaluate(@scope).should == "45"
202
202
  end
203
203
 
204
- it "should raise an error if the variable lookup didn't return an hash or an array" do
204
+ it "should raise an error if the variable lookup didn't return a hash or an array" do
205
205
  @scope["a"] = "I'm a string"
206
206
 
207
207
  access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key2" )
@@ -237,6 +237,45 @@ describe Puppet::Parser::AST::HashOrArrayAccess do
237
237
 
238
238
  access2.evaluate(@scope).should == 'b'
239
239
  end
240
+
241
+ it "should raise a useful error for hash access on undef" do
242
+ @scope["a"] = :undef
243
+
244
+ access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key")
245
+
246
+ expect {
247
+ access.evaluate(@scope)
248
+ }.to raise_error(Puppet::ParseError, /not a hash or array/)
249
+ end
250
+
251
+ it "should raise a useful error for hash access on TrueClass" do
252
+ @scope["a"] = true
253
+
254
+ access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key")
255
+
256
+ expect {
257
+ access.evaluate(@scope)
258
+ }.to raise_error(Puppet::ParseError, /not a hash or array/)
259
+ end
260
+
261
+ it "should raise a useful error for recursive undef hash access" do
262
+ @scope["a"] = { "key" => "val" }
263
+
264
+ access1 = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "nonexistent")
265
+ access2 = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => access1, :key => "subkey")
266
+
267
+ expect {
268
+ access2.evaluate(@scope)
269
+ }.to raise_error(Puppet::ParseError, /not a hash or array/)
270
+ end
271
+
272
+ it "should produce boolean values when value is a boolean" do
273
+ @scope["a"] = [true, false]
274
+ access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => 0 )
275
+ expect(access.evaluate(@scope)).to be == true
276
+ access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => 1 )
277
+ expect(access.evaluate(@scope)).to be == false
278
+ end
240
279
  end
241
280
 
242
281
  describe "when assigning" do
@@ -274,7 +313,7 @@ describe Puppet::Parser::AST::HashOrArrayAccess do
274
313
  scope['a'].should == ["val2"]
275
314
  end
276
315
 
277
- it "should raise an error when trying to overwrite an hash value" do
316
+ it "should raise an error when trying to overwrite a hash value" do
278
317
  @scope['a'] = { "key" => [ "a" , "b" ]}
279
318
  access = Puppet::Parser::AST::HashOrArrayAccess.new(:variable => "a", :key => "key")
280
319
 
@@ -425,7 +464,7 @@ describe Puppet::Parser::AST::HostName do
425
464
  end
426
465
 
427
466
  it "should raise an error if hostname is not valid" do
428
- lambda { Puppet::Parser::AST::HostName.new( :value => "not an hostname!" ) }.should raise_error
467
+ lambda { Puppet::Parser::AST::HostName.new( :value => "not a hostname!" ) }.should raise_error
429
468
  end
430
469
 
431
470
  it "should not raise an error if hostname is a regex" do