puppet 5.4.0-x86-mingw32 → 5.5.0-x86-mingw32

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 (441) hide show
  1. data/Gemfile +3 -3
  2. data/MAINTAINERS +0 -19
  3. data/README.md +5 -5
  4. data/Rakefile +26 -0
  5. data/conf/auth.conf +5 -0
  6. data/ext/project_data.yaml +1 -0
  7. data/ext/regexp_nodes/regexp_nodes.rb +3 -4
  8. data/lib/puppet/application/apply.rb +1 -1
  9. data/lib/puppet/application/cert.rb +3 -1
  10. data/lib/puppet/application/device.rb +100 -13
  11. data/lib/puppet/application/facts.rb +5 -0
  12. data/lib/puppet/application/lookup.rb +12 -2
  13. data/lib/puppet/configurer.rb +37 -17
  14. data/lib/puppet/confine.rb +4 -1
  15. data/lib/puppet/datatypes.rb +1 -1
  16. data/lib/puppet/environments.rb +1 -1
  17. data/lib/puppet/error.rb +6 -3
  18. data/lib/puppet/external/dot.rb +0 -7
  19. data/lib/puppet/external/nagios/parser.rb +1 -1
  20. data/lib/puppet/face/config.rb +92 -10
  21. data/lib/puppet/face/epp.rb +31 -6
  22. data/lib/puppet/face/facts.rb +49 -0
  23. data/lib/puppet/face/help.rb +33 -35
  24. data/lib/puppet/face/help/action.erb +1 -1
  25. data/lib/puppet/face/help/face.erb +1 -1
  26. data/lib/puppet/face/man.rb +55 -12
  27. data/lib/puppet/face/parser.rb +30 -3
  28. data/lib/puppet/file_bucket/file.rb +0 -2
  29. data/lib/puppet/file_serving/base.rb +10 -10
  30. data/lib/puppet/forge.rb +3 -3
  31. data/lib/puppet/forge/errors.rb +3 -3
  32. data/lib/puppet/functions.rb +1 -3
  33. data/lib/puppet/functions/alert.rb +1 -1
  34. data/lib/puppet/functions/all.rb +6 -6
  35. data/lib/puppet/functions/annotate.rb +10 -10
  36. data/lib/puppet/functions/any.rb +6 -6
  37. data/lib/puppet/functions/assert_type.rb +4 -4
  38. data/lib/puppet/functions/binary_file.rb +14 -2
  39. data/lib/puppet/functions/break.rb +31 -2
  40. data/lib/puppet/functions/call.rb +4 -4
  41. data/lib/puppet/functions/contain.rb +19 -3
  42. data/lib/puppet/functions/convert_to.rb +6 -5
  43. data/lib/puppet/functions/crit.rb +1 -1
  44. data/lib/puppet/functions/debug.rb +1 -1
  45. data/lib/puppet/functions/defined.rb +11 -9
  46. data/lib/puppet/functions/dig.rb +26 -2
  47. data/lib/puppet/functions/each.rb +8 -8
  48. data/lib/puppet/functions/emerg.rb +1 -1
  49. data/lib/puppet/functions/empty.rb +79 -0
  50. data/lib/puppet/functions/err.rb +1 -1
  51. data/lib/puppet/functions/eyaml_lookup_key.rb +3 -1
  52. data/lib/puppet/functions/filter.rb +7 -7
  53. data/lib/puppet/functions/find_file.rb +15 -1
  54. data/lib/puppet/functions/flatten.rb +64 -0
  55. data/lib/puppet/functions/hiera.rb +6 -6
  56. data/lib/puppet/functions/hiera_array.rb +6 -6
  57. data/lib/puppet/functions/hiera_hash.rb +6 -6
  58. data/lib/puppet/functions/hiera_include.rb +8 -8
  59. data/lib/puppet/functions/include.rb +28 -2
  60. data/lib/puppet/functions/info.rb +1 -1
  61. data/lib/puppet/functions/inline_epp.rb +2 -2
  62. data/lib/puppet/functions/join.rb +56 -0
  63. data/lib/puppet/functions/json_data.rb +2 -2
  64. data/lib/puppet/functions/keys.rb +25 -0
  65. data/lib/puppet/functions/length.rb +44 -0
  66. data/lib/puppet/functions/lest.rb +39 -1
  67. data/lib/puppet/functions/lookup.rb +2 -1
  68. data/lib/puppet/functions/map.rb +10 -9
  69. data/lib/puppet/functions/match.rb +6 -6
  70. data/lib/puppet/functions/new.rb +995 -2
  71. data/lib/puppet/functions/next.rb +1 -1
  72. data/lib/puppet/functions/notice.rb +1 -1
  73. data/lib/puppet/functions/reduce.rb +6 -6
  74. data/lib/puppet/functions/regsubst.rb +9 -3
  75. data/lib/puppet/functions/require.rb +36 -2
  76. data/lib/puppet/functions/return.rb +1 -1
  77. data/lib/puppet/functions/reverse_each.rb +71 -2
  78. data/lib/puppet/functions/slice.rb +23 -9
  79. data/lib/puppet/functions/split.rb +12 -10
  80. data/lib/puppet/functions/step.rb +73 -1
  81. data/lib/puppet/functions/strftime.rb +176 -2
  82. data/lib/puppet/functions/then.rb +65 -2
  83. data/lib/puppet/functions/tree_each.rb +19 -19
  84. data/lib/puppet/functions/type.rb +42 -1
  85. data/lib/puppet/functions/unique.rb +13 -13
  86. data/lib/puppet/functions/unwrap.rb +8 -4
  87. data/lib/puppet/functions/values.rb +25 -0
  88. data/lib/puppet/functions/versioncmp.rb +1 -1
  89. data/lib/puppet/functions/warning.rb +1 -1
  90. data/lib/puppet/functions/with.rb +6 -4
  91. data/lib/puppet/functions/yaml_data.rb +3 -1
  92. data/lib/puppet/indirector/certificate_status/file.rb +1 -1
  93. data/lib/puppet/indirector/facts/facter.rb +1 -3
  94. data/lib/puppet/indirector/facts/rest.rb +21 -0
  95. data/lib/puppet/indirector/facts/yaml.rb +0 -4
  96. data/lib/puppet/indirector/rest.rb +2 -2
  97. data/lib/puppet/module.rb +3 -3
  98. data/lib/puppet/module/task.rb +2 -3
  99. data/lib/puppet/module_tool/applications/application.rb +4 -4
  100. data/lib/puppet/module_tool/applications/builder.rb +2 -2
  101. data/lib/puppet/module_tool/applications/checksummer.rb +3 -3
  102. data/lib/puppet/module_tool/applications/unpacker.rb +2 -2
  103. data/lib/puppet/module_tool/metadata.rb +3 -3
  104. data/lib/puppet/network/authconfig.rb +1 -1
  105. data/lib/puppet/network/format_support.rb +1 -1
  106. data/lib/puppet/network/formats.rb +5 -7
  107. data/lib/puppet/network/http/api/indirected_routes.rb +1 -0
  108. data/lib/puppet/network/http/api/master/v3/environment.rb +2 -2
  109. data/lib/puppet/network/http/api/master/v3/environments.rb +2 -2
  110. data/lib/puppet/network/http/error.rb +3 -3
  111. data/lib/puppet/network/resolver.rb +1 -2
  112. data/lib/puppet/parser/compiler.rb +12 -5
  113. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +1 -1
  114. data/lib/puppet/parser/functions/fqdn_rand.rb +15 -4
  115. data/lib/puppet/parser/functions/new.rb +31 -46
  116. data/lib/puppet/parser/parser_factory.rb +1 -1
  117. data/lib/puppet/parser/resource.rb +1 -1
  118. data/lib/puppet/parser/type_loader.rb +11 -11
  119. data/lib/puppet/pops/evaluator/closure.rb +1 -1
  120. data/lib/puppet/pops/evaluator/collector_transformer.rb +1 -1
  121. data/lib/puppet/pops/evaluator/epp_evaluator.rb +2 -2
  122. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +2 -2
  123. data/lib/puppet/pops/evaluator/runtime3_support.rb +5 -2
  124. data/lib/puppet/pops/functions/dispatch.rb +1 -1
  125. data/lib/puppet/pops/issue_reporter.rb +18 -1
  126. data/lib/puppet/pops/issues.rb +6 -3
  127. data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +1 -2
  128. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -2
  129. data/lib/puppet/pops/loader/task_instantiator.rb +5 -5
  130. data/lib/puppet/pops/loader/type_definition_instantiator.rb +4 -1
  131. data/lib/puppet/pops/loaders.rb +18 -7
  132. data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
  133. data/lib/puppet/pops/lookup/lookup_adapter.rb +55 -6
  134. data/lib/puppet/pops/model/factory.rb +6 -3
  135. data/lib/puppet/pops/model/model_tree_dumper.rb +4 -0
  136. data/lib/puppet/pops/model/pn_transformer.rb +400 -0
  137. data/lib/puppet/pops/parser/egrammar.ra +1 -1
  138. data/lib/puppet/pops/parser/eparser.rb +1 -1
  139. data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
  140. data/lib/puppet/pops/parser/lexer_support.rb +3 -2
  141. data/lib/puppet/pops/parser/locator.rb +0 -2
  142. data/lib/puppet/pops/parser/pn_parser.rb +316 -0
  143. data/lib/puppet/pops/pcore.rb +17 -17
  144. data/lib/puppet/pops/pn.rb +236 -0
  145. data/lib/puppet/pops/serialization/json.rb +7 -7
  146. data/lib/puppet/pops/types/class_loader.rb +6 -3
  147. data/lib/puppet/pops/types/implementation_registry.rb +28 -35
  148. data/lib/puppet/pops/types/p_object_type.rb +3 -3
  149. data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
  150. data/lib/puppet/pops/types/p_type_set_type.rb +24 -1
  151. data/lib/puppet/pops/types/ruby_generator.rb +3 -4
  152. data/lib/puppet/pops/types/type_calculator.rb +1 -1
  153. data/lib/puppet/pops/types/type_factory.rb +0 -4
  154. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  155. data/lib/puppet/pops/types/type_parser.rb +14 -7
  156. data/lib/puppet/pops/types/types.rb +1 -1
  157. data/lib/puppet/pops/utils.rb +2 -2
  158. data/lib/puppet/pops/validation/checker4_0.rb +6 -2
  159. data/lib/puppet/provider/group/groupadd.rb +3 -1
  160. data/lib/puppet/provider/group/windows_adsi.rb +4 -7
  161. data/lib/puppet/provider/nameservice.rb +3 -3
  162. data/lib/puppet/provider/package/pacman.rb +4 -4
  163. data/lib/puppet/provider/package/pip.rb +3 -3
  164. data/lib/puppet/provider/package/pkgdmg.rb +3 -3
  165. data/lib/puppet/provider/package/pkgutil.rb +2 -2
  166. data/lib/puppet/provider/package/portage.rb +9 -9
  167. data/lib/puppet/provider/package/zypper.rb +2 -2
  168. data/lib/puppet/provider/service/base.rb +1 -1
  169. data/lib/puppet/provider/service/smf.rb +3 -2
  170. data/lib/puppet/provider/service/systemd.rb +1 -1
  171. data/lib/puppet/provider/user/useradd.rb +6 -2
  172. data/lib/puppet/provider/user/windows_adsi.rb +1 -1
  173. data/lib/puppet/provider/yumrepo/inifile.rb +20 -9
  174. data/lib/puppet/provider/zfs/zfs.rb +1 -1
  175. data/lib/puppet/reference/configuration.rb +2 -0
  176. data/lib/puppet/reference/type.rb +11 -11
  177. data/lib/puppet/resource.rb +1 -1
  178. data/lib/puppet/resource/capability_finder.rb +5 -5
  179. data/lib/puppet/resource/catalog.rb +6 -3
  180. data/lib/puppet/resource/status.rb +9 -2
  181. data/lib/puppet/resource/type.rb +1 -1
  182. data/lib/puppet/settings.rb +31 -19
  183. data/lib/puppet/settings/base_setting.rb +5 -0
  184. data/lib/puppet/settings/config_file.rb +1 -1
  185. data/lib/puppet/settings/ttl_setting.rb +5 -0
  186. data/lib/puppet/ssl/certificate_factory.rb +2 -2
  187. data/lib/puppet/ssl/certificate_request.rb +0 -2
  188. data/lib/puppet/syntax_checkers/json.rb +1 -1
  189. data/lib/puppet/transaction/additional_resource_generator.rb +2 -2
  190. data/lib/puppet/transaction/event.rb +1 -1
  191. data/lib/puppet/transaction/report.rb +18 -12
  192. data/lib/puppet/type.rb +9 -13
  193. data/lib/puppet/type/augeas.rb +2 -2
  194. data/lib/puppet/type/cron.rb +11 -6
  195. data/lib/puppet/type/exec.rb +1 -1
  196. data/lib/puppet/type/file.rb +4 -5
  197. data/lib/puppet/type/host.rb +1 -1
  198. data/lib/puppet/type/k5login.rb +30 -54
  199. data/lib/puppet/type/package.rb +3 -3
  200. data/lib/puppet/type/schedule.rb +12 -12
  201. data/lib/puppet/type/scheduled_task.rb +2 -2
  202. data/lib/puppet/type/ssh_authorized_key.rb +5 -5
  203. data/lib/puppet/type/sshkey.rb +2 -2
  204. data/lib/puppet/type/tidy.rb +1 -1
  205. data/lib/puppet/type/user.rb +1 -1
  206. data/lib/puppet/type/yumrepo.rb +26 -5
  207. data/lib/puppet/util.rb +0 -4
  208. data/lib/puppet/util/backups.rb +1 -1
  209. data/lib/puppet/util/inifile.rb +3 -4
  210. data/lib/puppet/util/json.rb +68 -0
  211. data/lib/puppet/util/json_lockfile.rb +3 -3
  212. data/lib/puppet/util/log.rb +2 -5
  213. data/lib/puppet/util/log/destinations.rb +2 -2
  214. data/lib/puppet/util/network_device/cisco/facts.rb +1 -1
  215. data/lib/puppet/util/plist.rb +1 -1
  216. data/lib/puppet/util/reference.rb +1 -8
  217. data/lib/puppet/util/tagging.rb +1 -1
  218. data/lib/puppet/util/warnings.rb +0 -2
  219. data/lib/puppet/util/windows/adsi.rb +15 -18
  220. data/lib/puppet/util/windows/com.rb +2 -1
  221. data/lib/puppet/util/windows/file.rb +2 -2
  222. data/lib/puppet/util/windows/principal.rb +7 -6
  223. data/lib/puppet/util/windows/sid.rb +60 -7
  224. data/lib/puppet/util/windows/taskscheduler.rb +0 -9
  225. data/lib/puppet/version.rb +1 -1
  226. data/lib/puppet_pal.rb +53 -48
  227. data/locales/ja/puppet.po +1357 -912
  228. data/locales/puppet.pot +549 -466
  229. data/man/man5/puppet.conf.5 +103 -20
  230. data/man/man8/puppet-agent.8 +6 -2
  231. data/man/man8/puppet-apply.8 +2 -2
  232. data/man/man8/puppet-ca.8 +1 -1
  233. data/man/man8/puppet-catalog.8 +1 -1
  234. data/man/man8/puppet-cert.8 +1 -1
  235. data/man/man8/puppet-certificate.8 +1 -1
  236. data/man/man8/puppet-certificate_request.8 +1 -1
  237. data/man/man8/puppet-certificate_revocation_list.8 +1 -1
  238. data/man/man8/puppet-config.8 +35 -1
  239. data/man/man8/puppet-describe.8 +1 -1
  240. data/man/man8/puppet-device.8 +33 -11
  241. data/man/man8/puppet-doc.8 +1 -1
  242. data/man/man8/puppet-epp.8 +34 -12
  243. data/man/man8/puppet-facts.8 +50 -1
  244. data/man/man8/puppet-filebucket.8 +38 -11
  245. data/man/man8/puppet-generate.8 +1 -1
  246. data/man/man8/puppet-help.8 +1 -1
  247. data/man/man8/puppet-key.8 +1 -1
  248. data/man/man8/puppet-lookup.8 +1 -1
  249. data/man/man8/puppet-man.8 +10 -4
  250. data/man/man8/puppet-master.8 +1 -1
  251. data/man/man8/puppet-module.8 +15 -6
  252. data/man/man8/puppet-node.8 +1 -1
  253. data/man/man8/puppet-parser.8 +31 -8
  254. data/man/man8/puppet-plugin.8 +1 -1
  255. data/man/man8/puppet-report.8 +1 -1
  256. data/man/man8/puppet-resource.8 +1 -1
  257. data/man/man8/puppet-script.8 +67 -0
  258. data/man/man8/puppet-status.8 +1 -1
  259. data/man/man8/puppet.8 +3 -3
  260. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +1 -1
  261. data/spec/integration/application/apply_spec.rb +15 -15
  262. data/spec/integration/application/lookup_spec.rb +21 -0
  263. data/spec/integration/faces/config_spec.rb +16 -4
  264. data/spec/integration/network/http/api/indirected_routes_spec.rb +5 -5
  265. data/spec/integration/parser/catalog_spec.rb +1 -1
  266. data/spec/integration/parser/collection_spec.rb +2 -2
  267. data/spec/integration/parser/compiler_spec.rb +17 -18
  268. data/spec/integration/parser/pcore_resource_spec.rb +2 -2
  269. data/spec/integration/parser/scope_spec.rb +2 -2
  270. data/spec/integration/ssl/certificate_authority_spec.rb +7 -7
  271. data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
  272. data/spec/integration/ssl/key_spec.rb +1 -1
  273. data/spec/integration/transaction/report_spec.rb +3 -3
  274. data/spec/integration/transaction_spec.rb +0 -1
  275. data/spec/integration/type/file_spec.rb +10 -11
  276. data/spec/integration/type_spec.rb +1 -2
  277. data/spec/integration/util/windows/adsi_spec.rb +86 -1
  278. data/spec/integration/util/windows/principal_spec.rb +11 -2
  279. data/spec/integration/util/windows/security_spec.rb +2 -2
  280. data/spec/lib/matchers/json.rb +4 -4
  281. data/spec/lib/puppet_spec/language.rb +34 -35
  282. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
  283. data/spec/shared_behaviours/file_server_terminus.rb +0 -2
  284. data/spec/shared_behaviours/things_that_declare_options.rb +2 -2
  285. data/spec/spec_helper.rb +1 -1
  286. data/spec/unit/application/cert_spec.rb +21 -9
  287. data/spec/unit/application/device_spec.rb +96 -2
  288. data/spec/unit/application/face_base_spec.rb +2 -2
  289. data/spec/unit/application/lookup_spec.rb +0 -1
  290. data/spec/unit/configurer_spec.rb +14 -0
  291. data/spec/unit/confine_spec.rb +16 -0
  292. data/spec/unit/data_providers/hiera_data_provider_spec.rb +4 -4
  293. data/spec/unit/datatypes_spec.rb +49 -0
  294. data/spec/unit/environments_spec.rb +7 -0
  295. data/spec/unit/face/config_spec.rb +116 -12
  296. data/spec/unit/face/epp_face_spec.rb +53 -2
  297. data/spec/unit/face/facts_spec.rb +53 -0
  298. data/spec/unit/face/help_spec.rb +62 -69
  299. data/spec/unit/face/man_spec.rb +26 -0
  300. data/spec/unit/face/module/list_spec.rb +0 -1
  301. data/spec/unit/face/parser_spec.rb +78 -0
  302. data/spec/unit/file_bucket/dipper_spec.rb +0 -4
  303. data/spec/unit/file_serving/content_spec.rb +0 -1
  304. data/spec/unit/file_serving/fileset_spec.rb +0 -1
  305. data/spec/unit/file_serving/metadata_spec.rb +0 -1
  306. data/spec/unit/file_serving/terminus_selector_spec.rb +0 -2
  307. data/spec/unit/forge_spec.rb +1 -2
  308. data/spec/unit/functions/assert_type_spec.rb +1 -1
  309. data/spec/unit/functions/empty_spec.rb +77 -0
  310. data/spec/unit/functions/epp_spec.rb +1 -1
  311. data/spec/unit/functions/flatten_spec.rb +31 -0
  312. data/spec/unit/functions/include_spec.rb +2 -2
  313. data/spec/unit/functions/inline_epp_spec.rb +1 -1
  314. data/spec/unit/functions/join_spec.rb +33 -0
  315. data/spec/unit/functions/keys_spec.rb +31 -0
  316. data/spec/unit/functions/length_spec.rb +50 -0
  317. data/spec/unit/functions/lookup_fixture_spec.rb +1 -1
  318. data/spec/unit/functions/lookup_spec.rb +52 -0
  319. data/spec/unit/functions/shared.rb +1 -1
  320. data/spec/unit/functions/values_spec.rb +30 -0
  321. data/spec/unit/functions/versioncmp_spec.rb +1 -1
  322. data/spec/unit/functions4_spec.rb +30 -32
  323. data/spec/unit/graph/title_hash_prioritizer_spec.rb +2 -1
  324. data/spec/unit/indirector/catalog/compiler_spec.rb +0 -15
  325. data/spec/unit/indirector/facts/rest_spec.rb +45 -0
  326. data/spec/unit/indirector/facts/yaml_spec.rb +6 -0
  327. data/spec/unit/indirector/file_bucket_file/file_spec.rb +2 -2
  328. data/spec/unit/indirector/indirection_spec.rb +1 -1
  329. data/spec/unit/indirector/node/ldap_spec.rb +2 -2
  330. data/spec/unit/indirector/request_spec.rb +0 -2
  331. data/spec/unit/indirector/rest_spec.rb +2 -2
  332. data/spec/unit/indirector_spec.rb +0 -1
  333. data/spec/unit/info_service_spec.rb +1 -1
  334. data/spec/unit/interface/action_manager_spec.rb +1 -1
  335. data/spec/unit/interface/action_spec.rb +1 -1
  336. data/spec/unit/module_spec.rb +0 -5
  337. data/spec/unit/module_tool/applications/builder_spec.rb +1 -1
  338. data/spec/unit/module_tool/applications/unpacker_spec.rb +4 -4
  339. data/spec/unit/network/formats_spec.rb +5 -13
  340. data/spec/unit/network/http/api/indirected_routes_spec.rb +6 -2
  341. data/spec/unit/network/http/connection_spec.rb +1 -1
  342. data/spec/unit/network/http/handler_spec.rb +3 -2
  343. data/spec/unit/node/environment_spec.rb +1 -1
  344. data/spec/unit/node_spec.rb +3 -3
  345. data/spec/unit/parser/compiler_spec.rb +9 -2
  346. data/spec/unit/parser/environment_compiler_spec.rb +8 -8
  347. data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
  348. data/spec/unit/parser/functions/fail_spec.rb +1 -1
  349. data/spec/unit/parser/functions/fqdn_rand_spec.rb +24 -0
  350. data/spec/unit/parser/functions/realize_spec.rb +1 -1
  351. data/spec/unit/parser/resource_spec.rb +0 -1
  352. data/spec/unit/parser/scope_spec.rb +3 -3
  353. data/spec/unit/parser/type_loader_spec.rb +1 -1
  354. data/spec/unit/pops/adaptable_spec.rb +0 -1
  355. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +0 -3
  356. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +0 -4
  357. data/spec/unit/pops/factory_rspec_helper.rb +1 -1
  358. data/spec/unit/pops/factory_spec.rb +5 -5
  359. data/spec/unit/pops/issues_spec.rb +23 -8
  360. data/spec/unit/pops/loaders/loaders_spec.rb +24 -2
  361. data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
  362. data/spec/unit/pops/lookup/interpolation_spec.rb +5 -0
  363. data/spec/unit/pops/lookup/lookup_spec.rb +56 -0
  364. data/spec/unit/pops/model/pn_transformer_spec.rb +53 -0
  365. data/spec/unit/pops/parser/lexer2_spec.rb +14 -5
  366. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +9 -9
  367. data/spec/unit/pops/parser/parse_calls_spec.rb +1 -1
  368. data/spec/unit/pops/parser/parse_functions_spec.rb +1 -1
  369. data/spec/unit/pops/parser/parse_heredoc_spec.rb +3 -3
  370. data/spec/unit/pops/parser/parse_lambda_spec.rb +1 -1
  371. data/spec/unit/pops/parser/parse_resource_spec.rb +35 -35
  372. data/spec/unit/pops/parser/pn_parser_spec.rb +101 -0
  373. data/spec/unit/pops/pn_spec.rb +148 -0
  374. data/spec/unit/pops/types/iterable_spec.rb +1 -1
  375. data/spec/unit/pops/types/p_object_type_spec.rb +5 -5
  376. data/spec/unit/pops/types/p_timespan_type_spec.rb +11 -4
  377. data/spec/unit/pops/types/p_timestamp_type_spec.rb +9 -2
  378. data/spec/unit/pops/types/p_type_set_type_spec.rb +106 -2
  379. data/spec/unit/pops/types/ruby_generator_spec.rb +3 -8
  380. data/spec/unit/pops/types/string_converter_spec.rb +3 -3
  381. data/spec/unit/pops/types/type_calculator_spec.rb +1 -1
  382. data/spec/unit/pops/validator/validator_spec.rb +3 -1
  383. data/spec/unit/property_spec.rb +2 -2
  384. data/spec/unit/provider/aixobject_spec.rb +1 -1
  385. data/spec/unit/provider/cron/crontab_spec.rb +3 -3
  386. data/spec/unit/provider/exec/posix_spec.rb +6 -6
  387. data/spec/unit/provider/group/groupadd_spec.rb +4 -4
  388. data/spec/unit/provider/group/windows_adsi_spec.rb +79 -22
  389. data/spec/unit/provider/ldap_spec.rb +0 -1
  390. data/spec/unit/provider/nameservice_spec.rb +5 -5
  391. data/spec/unit/provider/package/rpm_spec.rb +3 -4
  392. data/spec/unit/provider/package/yum_spec.rb +6 -2
  393. data/spec/unit/provider/parsedfile_spec.rb +1 -1
  394. data/spec/unit/provider/service/base_spec.rb +2 -4
  395. data/spec/unit/provider/service/init_spec.rb +2 -2
  396. data/spec/unit/provider/service/openrc_spec.rb +2 -2
  397. data/spec/unit/provider/service/redhat_spec.rb +2 -2
  398. data/spec/unit/provider/service/smf_spec.rb +2 -0
  399. data/spec/unit/provider/service/systemd_spec.rb +3 -3
  400. data/spec/unit/provider/service/upstart_spec.rb +7 -7
  401. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -4
  402. data/spec/unit/provider/sshkey/parsed_spec.rb +0 -2
  403. data/spec/unit/provider/user/useradd_spec.rb +15 -9
  404. data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
  405. data/spec/unit/provider/yumrepo/inifile_spec.rb +76 -0
  406. data/spec/unit/puppet_pal_2pec.rb +4 -5
  407. data/spec/unit/resource/catalog_spec.rb +8 -3
  408. data/spec/unit/resource/status_spec.rb +15 -4
  409. data/spec/unit/resource/type_spec.rb +2 -3
  410. data/spec/unit/settings_spec.rb +9 -4
  411. data/spec/unit/ssl/certificate_authority_spec.rb +1 -9
  412. data/spec/unit/ssl/certificate_request_spec.rb +1 -2
  413. data/spec/unit/transaction/report_spec.rb +41 -0
  414. data/spec/unit/transaction_spec.rb +1 -1
  415. data/spec/unit/type/exec_spec.rb +7 -9
  416. data/spec/unit/type/file/selinux_spec.rb +0 -1
  417. data/spec/unit/type/file_spec.rb +4 -3
  418. data/spec/unit/type/k5login_spec.rb +79 -10
  419. data/spec/unit/type/mount_spec.rb +1 -1
  420. data/spec/unit/type/nagios_spec.rb +6 -6
  421. data/spec/unit/type/user_spec.rb +1 -1
  422. data/spec/unit/type/yumrepo_spec.rb +18 -0
  423. data/spec/unit/type/zfs_spec.rb +1 -1
  424. data/spec/unit/type_spec.rb +14 -15
  425. data/spec/unit/util/docs_spec.rb +1 -1
  426. data/spec/unit/util/execution_spec.rb +0 -1
  427. data/spec/unit/util/inifile_spec.rb +35 -4
  428. data/spec/unit/util/log/destinations_spec.rb +2 -2
  429. data/spec/unit/util/log_spec.rb +6 -5
  430. data/spec/unit/util/network_device/cisco/device_spec.rb +2 -2
  431. data/spec/unit/util/plist_spec.rb +3 -3
  432. data/spec/unit/util/selinux_spec.rb +2 -2
  433. data/spec/unit/util/tagging_spec.rb +1 -7
  434. data/spec/unit/util/windows/adsi_spec.rb +31 -27
  435. data/spec/unit/util/windows/sid_spec.rb +86 -15
  436. data/spec/unit/util_spec.rb +2 -2
  437. data/spec/watchr.rb +0 -1
  438. data/tasks/benchmark.rake +37 -0
  439. data/tasks/manpages.rake +1 -1
  440. metadata +83 -11
  441. checksums.yaml +0 -7
@@ -153,9 +153,6 @@ describe Puppet::FileBucket::Dipper, :uses_checksums => true do
153
153
 
154
154
  @dipper = Puppet::FileBucket::Dipper.new(:Path => file_bucket)
155
155
 
156
- onehour=60*60
157
- twohours=onehour*2
158
-
159
156
  #First File
160
157
  file1 = make_tmp_file(plaintext)
161
158
  real_path = Pathname.new(file1).realpath
@@ -182,7 +179,6 @@ describe Puppet::FileBucket::Dipper, :uses_checksums => true do
182
179
  checksum = digest(plaintext)
183
180
  expect(digest(plaintext)).to eq(checksum)
184
181
  expect(@dipper.backup(file3)).to eq(checksum)
185
- date = Time.now
186
182
  expected_list3 = /#{checksum} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} #{real_path}\n/
187
183
 
188
184
  result = @dipper.list(nil, nil)
@@ -25,7 +25,6 @@ describe Puppet::FileServing::Content do
25
25
  it "should not retrieve and store its contents when its attributes are collected" do
26
26
  content = Puppet::FileServing::Content.new(path)
27
27
 
28
- result = "foo"
29
28
  File.expects(:read).with(path).never
30
29
  content.collect
31
30
 
@@ -277,7 +277,6 @@ describe Puppet::FileServing::Fileset do
277
277
  it "works when paths have regexp significant characters" do
278
278
  @path = make_absolute("/my/path/rV1x2DafFr0R6tGG+1bbk++++TM")
279
279
  stat = stub('dir_stat', :directory? => true)
280
- stub_file = stub(@path, :stat => stat, :lstat => stat)
281
280
  Puppet::FileSystem.expects(:lstat).with(@path).returns stub(@path, :stat => stat, :lstat => stat)
282
281
  @fileset = Puppet::FileServing::Fileset.new(@path)
283
282
  mock_dir_structure(@path)
@@ -495,7 +495,6 @@ describe Puppet::FileServing::Metadata, " when pointing to a link", :if => Puppe
495
495
  path = "/base/path/my/file"
496
496
  @file = Puppet::FileServing::Metadata.new(path, :links => :manage)
497
497
  stat = stub("stat", :uid => 1, :gid => 2, :ftype => "link", :mode => 0755)
498
- stub_file = stub(:readlink => "/some/other/path", :lstat => stat)
499
498
  Puppet::FileSystem.expects(:lstat).with(path).at_least_once.returns stat
500
499
  Puppet::FileSystem.expects(:readlink).with(path).at_least_once.returns "/some/other/path"
501
500
  @file.stubs("#{digest_algorithm}_file".intern).returns(checksum) # Remove these when :managed links are no longer checksumed.
@@ -56,8 +56,6 @@ describe Puppet::FileServing::TerminusSelector do
56
56
  end
57
57
 
58
58
  it "should choose :file_server when default_file_terminus is file_server and no server is specified on the request" do
59
- modules = mock 'modules'
60
-
61
59
  @request.expects(:protocol).returns "puppet"
62
60
  @request.expects(:server).returns nil
63
61
  Puppet[:default_file_terminus] = 'file_server'
@@ -270,8 +270,7 @@ describe Puppet::Forge do
270
270
  end
271
271
 
272
272
  it "ignores modules with unparseable dependencies" do
273
- expect { result = forge.fetch('puppetlabs/bacula') }.to_not raise_error
274
- expect { result.to be_empty }
273
+ expect(forge.fetch('puppetlabs/bacula')).to be_empty
275
274
  end
276
275
  end
277
276
  end
@@ -42,7 +42,7 @@ describe 'the assert_type function' do
42
42
  end
43
43
 
44
44
  it 'can be called with a callable that receives a specific type' do
45
- expected, actual, actual2 = func.call({}, 'Optional[String]', 1) { |expected, actual| [expected, actual, actual] }
45
+ expected, actual, actual2 = func.call({}, 'Optional[String]', 1) { |expctd, actul| [expctd, actul, actul] }
46
46
  expect(expected.to_s).to eql('Optional[String]')
47
47
  expect(actual.to_s).to eql('Integer[1, 1]')
48
48
  expect(actual2.to_s).to eql('Integer[1, 1]')
@@ -0,0 +1,77 @@
1
+ require 'spec_helper'
2
+
3
+ require 'puppet_spec/compiler'
4
+ require 'matchers/resource'
5
+
6
+ describe 'the empty function' do
7
+ include PuppetSpec::Compiler
8
+ include Matchers::Resource
9
+
10
+ let(:logs) { [] }
11
+ let(:warnings) { logs.select { |log| log.level == :warning }.map { |log| log.message } }
12
+
13
+ context 'for an array it' do
14
+ it 'returns true when empty' do
15
+ expect(compile_to_catalog("notify { String(empty([])): }")).to have_resource('Notify[true]')
16
+ end
17
+
18
+ it 'returns false when not empty' do
19
+ expect(compile_to_catalog("notify { String(empty([1])): }")).to have_resource('Notify[false]')
20
+ end
21
+ end
22
+
23
+ context 'for a hash it' do
24
+ it 'returns true when empty' do
25
+ expect(compile_to_catalog("notify { String(empty({})): }")).to have_resource('Notify[true]')
26
+ end
27
+
28
+ it 'returns false when not empty' do
29
+ expect(compile_to_catalog("notify { String(empty({1=>1})): }")).to have_resource('Notify[false]')
30
+ end
31
+ end
32
+
33
+ context 'for numeric values it' do
34
+ it 'always returns false for integer values (including 0)' do
35
+ Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
36
+ expect(compile_to_catalog("notify { String(empty(0)): }")).to have_resource('Notify[false]')
37
+ end
38
+ expect(warnings).to include(/Calling function empty\(\) with Numeric value is deprecated/)
39
+ end
40
+
41
+ it 'always returns false for float values (including 0.0)' do
42
+ Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
43
+ expect(compile_to_catalog("notify { String(empty(0.0)): }")).to have_resource('Notify[false]')
44
+ end
45
+ expect(warnings).to include(/Calling function empty\(\) with Numeric value is deprecated/)
46
+ end
47
+ end
48
+
49
+ context 'for a string it' do
50
+ it 'returns true when empty' do
51
+ expect(compile_to_catalog("notify { String(empty('')): }")).to have_resource('Notify[true]')
52
+ end
53
+
54
+ it 'returns false when not empty' do
55
+ expect(compile_to_catalog("notify { String(empty(' ')): }")).to have_resource('Notify[false]')
56
+ end
57
+ end
58
+
59
+ context 'for a binary it' do
60
+ it 'returns true when empty' do
61
+ expect(compile_to_catalog("notify { String(empty(Binary(''))): }")).to have_resource('Notify[true]')
62
+ end
63
+
64
+ it 'returns false when not empty' do
65
+ expect(compile_to_catalog("notify { String(empty(Binary('b25l'))): }")).to have_resource('Notify[false]')
66
+ end
67
+ end
68
+
69
+ context 'for undef it' do
70
+ it 'returns true and issues deprecation warning' do
71
+ Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
72
+ expect(compile_to_catalog("notify { String(empty(undef)): }")).to have_resource('Notify[true]')
73
+ end
74
+ expect(warnings).to include(/Calling function empty\(\) with Undef value is deprecated/)
75
+ end
76
+ end
77
+ end
@@ -164,6 +164,6 @@ describe "the epp function" do
164
164
  end
165
165
 
166
166
  def epp_function()
167
- epp_func = scope.compiler.loaders.public_environment_loader.load(:function, 'epp')
167
+ scope.compiler.loaders.public_environment_loader.load(:function, 'epp')
168
168
  end
169
169
  end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ require 'puppet_spec/compiler'
4
+ require 'matchers/resource'
5
+
6
+ describe 'the flatten function' do
7
+ include PuppetSpec::Compiler
8
+ include Matchers::Resource
9
+
10
+ let(:array_fmt) { { 'format' => "%(a", 'separator'=>""} }
11
+
12
+ it 'returns flattened array of all its given arguments' do
13
+ expect(compile_to_catalog("notify { String([1,[2,[3]]].flatten, Array => #{array_fmt}): }")).to have_resource('Notify[(123)]')
14
+ end
15
+
16
+ it 'accepts a single non array value which results in it being wrapped in an array' do
17
+ expect(compile_to_catalog("notify { String(flatten(1), Array => #{array_fmt}): }")).to have_resource('Notify[(1)]')
18
+ end
19
+
20
+ it 'accepts a single array value - (which is a noop)' do
21
+ expect(compile_to_catalog("notify { String(flatten([1]), Array => #{array_fmt}): }")).to have_resource('Notify[(1)]')
22
+ end
23
+
24
+ it 'it does not flatten a hash - it is a value that gets wrapped' do
25
+ expect(compile_to_catalog("notify { String(flatten({a=>1}), Array => #{array_fmt}): }")).to have_resource("Notify[({'a' => 1})]")
26
+ end
27
+
28
+ it 'accepts mix of array and non array arguments and concatenates and flattens them' do
29
+ expect(compile_to_catalog("notify { String(flatten([1],2,[[3,4]]), Array => #{array_fmt}): }")).to have_resource('Notify[(1234)]')
30
+ end
31
+ end
@@ -92,7 +92,7 @@ describe 'The "include" function' do
92
92
 
93
93
  it "raises an error if class does not exist" do
94
94
  expect {
95
- catalog = compile_to_catalog(<<-MANIFEST)
95
+ compile_to_catalog(<<-MANIFEST)
96
96
  include the_god_in_your_religion
97
97
  MANIFEST
98
98
  }.to raise_error(Puppet::Error)
@@ -105,7 +105,7 @@ describe 'The "include" function' do
105
105
  }.each_pair do |value, name_kind|
106
106
  it "raises an error if class is #{name_kind}" do
107
107
  expect {
108
- catalog = compile_to_catalog(<<-MANIFEST)
108
+ compile_to_catalog(<<-MANIFEST)
109
109
  include #{value}
110
110
  MANIFEST
111
111
  }.to raise_error(/Cannot use #{name_kind}/)
@@ -83,7 +83,7 @@ describe "the inline_epp function" do
83
83
  end
84
84
 
85
85
  def epp_function()
86
- epp_func = scope.compiler.loaders.public_environment_loader.load(:function, 'inline_epp')
86
+ scope.compiler.loaders.public_environment_loader.load(:function, 'inline_epp')
87
87
  end
88
88
 
89
89
  end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ require 'puppet_spec/compiler'
4
+ require 'matchers/resource'
5
+
6
+ describe 'the join function' do
7
+ include PuppetSpec::Compiler
8
+ include Matchers::Resource
9
+
10
+ it 'joins an array with empty string delimiter if delimiter is not given' do
11
+ expect(compile_to_catalog("notify { join([1,2,3]): }")).to have_resource('Notify[123]')
12
+ end
13
+
14
+ it 'joins an array with given string delimiter' do
15
+ expect(compile_to_catalog("notify { join([1,2,3],'x'): }")).to have_resource('Notify[1x2x3]')
16
+ end
17
+
18
+ it 'results in empty string if array is empty' do
19
+ expect(compile_to_catalog('notify { "x${join([])}y": }')).to have_resource('Notify[xy]')
20
+ end
21
+
22
+ it 'flattens nested arrays' do
23
+ expect(compile_to_catalog("notify { join([1,2,[3,4]]): }")).to have_resource('Notify[1234]')
24
+ end
25
+
26
+ it 'does not flatten arrays nested in hashes' do
27
+ expect(compile_to_catalog("notify { join([1,2,{a => [3,4]}]): }")).to have_resource('Notify[12{"a"=>[3, 4]}]')
28
+ end
29
+
30
+ it 'formats nil/undef as empty string' do
31
+ expect(compile_to_catalog('notify { join([undef, undef], "x"): }')).to have_resource('Notify[x]')
32
+ end
33
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ require 'puppet_spec/compiler'
4
+ require 'matchers/resource'
5
+
6
+ describe 'the keys function' do
7
+ include PuppetSpec::Compiler
8
+ include Matchers::Resource
9
+
10
+ it 'returns the keys in the hash in the order they appear in a hash iteration' do
11
+ expect(compile_to_catalog(<<-'SRC'.unindent)).to have_resource('Notify[apples & oranges]')
12
+ $k = {'apples' => 1, 'oranges' => 2}.keys
13
+ notify { "${k[0]} & ${k[1]}": }
14
+ SRC
15
+ end
16
+
17
+ it 'returns an empty array for an empty hash' do
18
+ expect(compile_to_catalog(<<-'SRC'.unindent)).to have_resource('Notify[0]')
19
+ $v = {}.keys.reduce(0) |$m, $v| { $m+1 }
20
+ notify { "${v}": }
21
+ SRC
22
+ end
23
+
24
+ it 'includes an undef key if one is present in the hash' do
25
+ expect(compile_to_catalog(<<-'SRC'.unindent)).to have_resource('Notify[Undef]')
26
+ $types = {undef => 1}.keys.map |$v| { $v.type }
27
+ notify { "${types[0]}": }
28
+ SRC
29
+ end
30
+
31
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ require 'puppet_spec/compiler'
4
+ require 'matchers/resource'
5
+
6
+ describe 'the length function' do
7
+ include PuppetSpec::Compiler
8
+ include Matchers::Resource
9
+
10
+ context 'for an array it' do
11
+ it 'returns 0 when empty' do
12
+ expect(compile_to_catalog("notify { String(length([])): }")).to have_resource('Notify[0]')
13
+ end
14
+
15
+ it 'returns number of elements when not empty' do
16
+ expect(compile_to_catalog("notify { String(length([1, 2, 3])): }")).to have_resource('Notify[3]')
17
+ end
18
+ end
19
+
20
+ context 'for a hash it' do
21
+ it 'returns 0 empty' do
22
+ expect(compile_to_catalog("notify { String(length({})): }")).to have_resource('Notify[0]')
23
+ end
24
+
25
+ it 'returns number of elements when not empty' do
26
+ expect(compile_to_catalog("notify { String(length({1=>1,2=>2})): }")).to have_resource('Notify[2]')
27
+ end
28
+ end
29
+
30
+ context 'for a string it' do
31
+ it 'returns 0 when empty' do
32
+ expect(compile_to_catalog("notify { String(length('')): }")).to have_resource('Notify[0]')
33
+ end
34
+
35
+ it 'returns number of characters when not empty' do
36
+ # note the multibyte characters - åäö each taking two bytes in UTF-8
37
+ expect(compile_to_catalog('notify { String(length("\u00e5\u00e4\u00f6")): }')).to have_resource('Notify[3]')
38
+ end
39
+ end
40
+
41
+ context 'for a binary it' do
42
+ it 'returns 0 when empty' do
43
+ expect(compile_to_catalog("notify { String(length(Binary(''))): }")).to have_resource('Notify[0]')
44
+ end
45
+
46
+ it 'returns number of bytes when not empty' do
47
+ expect(compile_to_catalog("notify { String(length(Binary('b25l'))): }")).to have_resource('Notify[3]')
48
+ end
49
+ end
50
+ end
@@ -47,7 +47,7 @@ describe 'The lookup function' do
47
47
  def compile_and_get_notifications(code)
48
48
  Puppet[:code] = code
49
49
  node.environment.check_for_reparse
50
- catalog = block_given? ? compiler.compile { |catalog| yield(compiler.topscope); catalog } : compiler.compile
50
+ catalog = block_given? ? compiler.compile { |cat| yield(compiler.topscope); cat } : compiler.compile
51
51
  catalog.resources.map(&:ref).select { |r| r.start_with?('Notify[') }.map { |r| r[7..-2] }
52
52
  end
53
53
 
@@ -2806,9 +2806,29 @@ describe "The lookup function" do
2806
2806
  mod_a::f:
2807
2807
  a:
2808
2808
  a: value mod_a::f.a.a (from module)
2809
+ mod_a::to_array1: 'hello'
2810
+ mod_a::to_array2: 'hello'
2811
+ mod_a::to_int: 'bananas'
2812
+ mod_a::to_bad_type: 'pyjamas'
2813
+ mod_a::undef_value: null
2809
2814
  lookup_options:
2810
2815
  mod_a::e:
2811
2816
  merge: deep
2817
+ mod_a::to_array1:
2818
+ merge: deep
2819
+ convert_to: "Array"
2820
+ mod_a::to_array2:
2821
+ convert_to:
2822
+ - "Array"
2823
+ - true
2824
+ mod_a::to_int:
2825
+ convert_to: "Integer"
2826
+ mod_a::to_bad_type:
2827
+ convert_to: "ComicSans"
2828
+ mod_a::undef_value:
2829
+ convert_to:
2830
+ - "Array"
2831
+ - true
2812
2832
  YAML
2813
2833
 
2814
2834
 
@@ -2896,6 +2916,38 @@ describe "The lookup function" do
2896
2916
  expect(lookup('mod_a::d')).to eql('a' => 'value mod_a::d.a (from module)')
2897
2917
  end
2898
2918
 
2919
+ context "and conversion via convert_to" do
2920
+ it 'converts with a single data type value' do
2921
+ expect(lookup('mod_a::to_array1')).to eql(['h', 'e', 'l', 'l', 'o'])
2922
+ end
2923
+
2924
+ it 'converts with an array of arguments to the convert_to call' do
2925
+ expect(lookup('mod_a::to_array2')).to eql(['hello'])
2926
+ end
2927
+
2928
+ it 'converts an undef/nil value that has convert_to option' do
2929
+ expect(lookup('mod_a::undef_value')).to eql([nil])
2930
+ end
2931
+
2932
+ it 'errors if a convert_to lookup_option cannot be performed because value does not match type' do
2933
+ expect{lookup('mod_a::to_int')}.to raise_error(/The convert_to lookup_option for key 'mod_a::to_int' raised error.*The string 'bananas' cannot be converted to Integer/)
2934
+ end
2935
+
2936
+ it 'errors if a convert_to lookup_option cannot be performed because type does not exist' do
2937
+ expect{lookup('mod_a::to_bad_type')}.to raise_error(/The convert_to lookup_option for key 'mod_a::to_bad_type' raised error.*Creation of new instance of type 'TypeReference\['ComicSans'\]' is not supported/)
2938
+ end
2939
+
2940
+ it 'adds explanation that conversion took place with a type' do
2941
+ explanation = explain('mod_a::to_array1')
2942
+ expect(explanation).to include('Applying convert_to lookup_option with arguments [Array]')
2943
+ end
2944
+
2945
+ it 'adds explanation that conversion took place with a type and arguments' do
2946
+ explanation = explain('mod_a::to_array2')
2947
+ expect(explanation).to include('Applying convert_to lookup_option with arguments [Array, true]')
2948
+ end
2949
+ end
2950
+
2899
2951
  it 'the default hierarchy lookup is included in the explain output' do
2900
2952
  explanation = explain('mod_a::c')
2901
2953
  expect(explanation).to match(/Searching default_hierarchy of module "mod_a".+Original path: "defaults.yaml"/m)
@@ -88,7 +88,7 @@ shared_examples_for 'an inclusion function, when --tasks is on,' do |function|
88
88
  it "is not available when --tasks is on" do
89
89
  Puppet[:tasks] = true
90
90
  expect do
91
- catalog = compile_to_catalog(<<-MANIFEST)
91
+ compile_to_catalog(<<-MANIFEST)
92
92
  #{function}(bar)
93
93
  MANIFEST
94
94
  end.to raise_error(Puppet::ParseError, /is only available when compiling a catalog/)
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ require 'puppet_spec/compiler'
4
+ require 'matchers/resource'
5
+
6
+ describe 'the values function' do
7
+ include PuppetSpec::Compiler
8
+ include Matchers::Resource
9
+
10
+ it 'returns the values in the hash in the order they appear in a hash iteration' do
11
+ expect(compile_to_catalog(<<-'SRC'.unindent)).to have_resource('Notify[1 & 2]')
12
+ $k = {'apples' => 1, 'oranges' => 2}.values
13
+ notify { "${k[0]} & ${k[1]}": }
14
+ SRC
15
+ end
16
+
17
+ it 'returns an empty array for an empty hash' do
18
+ expect(compile_to_catalog(<<-'SRC'.unindent)).to have_resource('Notify[0]')
19
+ $v = {}.values.reduce(0) |$m, $v| { $m+1 }
20
+ notify { "${v}": }
21
+ SRC
22
+ end
23
+
24
+ it 'includes an undef value if one is present in the hash' do
25
+ expect(compile_to_catalog(<<-'SRC'.unindent)).to have_resource('Notify[Undef]')
26
+ $types = {a => undef}.values.map |$v| { $v.type }
27
+ notify { "${types[0]}": }
28
+ SRC
29
+ end
30
+ end