puppet 5.4.0 → 5.5.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (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 +71 -11
  441. checksums.yaml +0 -7
@@ -31,22 +31,18 @@ describe 'when converting to 3.x' do
31
31
  end
32
32
 
33
33
  it 'converts the symbol :undef to the undef value' do
34
- v = SemanticPuppet::Version.parse('1.0.0')
35
34
  expect(converter.convert(:undef, {}, 'undef value')).to eql('undef value')
36
35
  end
37
36
 
38
37
  it 'converts the nil to the undef value' do
39
- v = SemanticPuppet::Version.parse('1.0.0')
40
38
  expect(converter.convert(nil, {}, 'undef value')).to eql('undef value')
41
39
  end
42
40
 
43
41
  it 'does not convert a symbol nested in an array' do
44
- v = SemanticPuppet::Version.parse('1.0.0')
45
42
  expect(converter.convert({'foo' => :undef}, {}, 'undef value')).to eql({'foo' => :undef})
46
43
  end
47
44
 
48
45
  it 'converts nil to :undef when nested in an array' do
49
- v = SemanticPuppet::Version.parse('1.0.0')
50
46
  expect(converter.convert({'foo' => nil}, {}, 'undef value')).to eql({'foo' => :undef})
51
47
  end
52
48
 
@@ -59,7 +59,7 @@ module FactoryRspecHelper
59
59
  end
60
60
 
61
61
  def unindent x
62
- (x.gsub /^#{x[/\A\s*/]}/, '').chomp
62
+ x.gsub(/^#{x[/\A\s*/]}/, '').chomp
63
63
  end
64
64
  factory ||= Puppet::Pops::Model::Factory
65
65
  end
@@ -191,7 +191,7 @@ describe Puppet::Pops::Model::Factory do
191
191
  it "should handle 'just a string'" do
192
192
  model = string('blah blah').model
193
193
  expect(model.class).to eq(Puppet::Pops::Model::ConcatenatedString)
194
- model.segments.size == 1
194
+ expect(model.segments.size).to eq(1)
195
195
  expect(model.segments[0].class).to eq(Puppet::Pops::Model::LiteralString)
196
196
  expect(model.segments[0].value).to eq("blah blah")
197
197
  end
@@ -199,7 +199,7 @@ describe Puppet::Pops::Model::Factory do
199
199
  it "should handle one expression in the middle" do
200
200
  model = string('blah blah', TEXT(literal(1)+literal(2)), 'blah blah').model
201
201
  expect(model.class).to eq(Puppet::Pops::Model::ConcatenatedString)
202
- model.segments.size == 3
202
+ expect(model.segments.size).to eq(3)
203
203
  expect(model.segments[0].class).to eq(Puppet::Pops::Model::LiteralString)
204
204
  expect(model.segments[0].value).to eq("blah blah")
205
205
  expect(model.segments[1].class).to eq(Puppet::Pops::Model::TextExpression)
@@ -211,7 +211,7 @@ describe Puppet::Pops::Model::Factory do
211
211
  it "should handle one expression at the end" do
212
212
  model = string('blah blah', TEXT(literal(1)+literal(2))).model
213
213
  expect(model.class).to eq(Puppet::Pops::Model::ConcatenatedString)
214
- model.segments.size == 2
214
+ expect(model.segments.size).to eq(2)
215
215
  expect(model.segments[0].class).to eq(Puppet::Pops::Model::LiteralString)
216
216
  expect(model.segments[0].value).to eq("blah blah")
217
217
  expect(model.segments[1].class).to eq(Puppet::Pops::Model::TextExpression)
@@ -221,7 +221,7 @@ describe Puppet::Pops::Model::Factory do
221
221
  it "should handle only one expression" do
222
222
  model = string(TEXT(literal(1)+literal(2))).model
223
223
  expect(model.class).to eq(Puppet::Pops::Model::ConcatenatedString)
224
- model.segments.size == 1
224
+ expect(model.segments.size).to eq(1)
225
225
  expect(model.segments[0].class).to eq(Puppet::Pops::Model::TextExpression)
226
226
  expect(model.segments[0].expr.class).to eq(Puppet::Pops::Model::ArithmeticExpression)
227
227
  end
@@ -229,7 +229,7 @@ describe Puppet::Pops::Model::Factory do
229
229
  it "should handle several expressions" do
230
230
  model = string(TEXT(literal(1)+literal(2)), TEXT(literal(1)+literal(2))).model
231
231
  expect(model.class).to eq(Puppet::Pops::Model::ConcatenatedString)
232
- model.segments.size == 2
232
+ expect(model.segments.size).to eq(2)
233
233
  expect(model.segments[0].class).to eq(Puppet::Pops::Model::TextExpression)
234
234
  expect(model.segments[0].expr.class).to eq(Puppet::Pops::Model::ArithmeticExpression)
235
235
  expect(model.segments[1].class).to eq(Puppet::Pops::Model::TextExpression)
@@ -34,24 +34,25 @@ describe "Puppet::Pops::IssueReporter" do
34
34
  stub("positioned_#{number}", :line => number, :pos => number)
35
35
  end
36
36
 
37
- def diagnostic(severity, number)
37
+ def diagnostic(severity, number, args)
38
38
  Puppet::Pops::Validation::Diagnostic.new(
39
39
  severity,
40
40
  Puppet::Pops::Issues::Issue.new(number) { "#{severity}#{number}" },
41
41
  "#{severity}file",
42
- fake_positioned(number))
42
+ fake_positioned(number),
43
+ args)
43
44
  end
44
45
 
45
- def warning(number)
46
- diagnostic(:warning, number)
46
+ def warning(number, args = {})
47
+ diagnostic(:warning, number, args)
47
48
  end
48
49
 
49
- def deprecation(number)
50
- diagnostic(:deprecation, number)
50
+ def deprecation(number, args = {})
51
+ diagnostic(:deprecation, number, args)
51
52
  end
52
53
 
53
- def error(number)
54
- diagnostic(:error, number)
54
+ def error(number, args = {})
55
+ diagnostic(:error, number, args)
55
56
  end
56
57
 
57
58
  context "given warnings" do
@@ -98,6 +99,13 @@ describe "Puppet::Pops::IssueReporter" do
98
99
  Puppet::Log.expects(:create).once.with(has_entries(:level => :warning, :message => regexp_matches(/warning1/)))
99
100
  Puppet::Pops::IssueReporter.assert_and_report(acceptor, { :emit_warnings => true })
100
101
  end
102
+
103
+ it "includes diagnostic arguments in logged entry" do
104
+ acceptor.accept( warning(2, :n => 'a') )
105
+ Puppet::Log.expects(:create).twice.with(has_entries(:level => :warning, :message => regexp_matches(/warning1|deprecation1/)))
106
+ Puppet::Log.expects(:create).once.with(has_entries(:level => :warning, :message => regexp_matches(/warning2/), :arguments => {:n => 'a'}))
107
+ Puppet::Pops::IssueReporter.assert_and_report(acceptor, { :emit_warnings => true })
108
+ end
101
109
  end
102
110
 
103
111
  context "given errors" do
@@ -175,6 +183,13 @@ describe "Puppet::Pops::IssueReporter" do
175
183
  Puppet::Pops::IssueReporter.assert_and_report(acceptor, { })
176
184
  end.to raise_error(Puppet::ParseError, /Giving up/)
177
185
  end
186
+
187
+ it "includes diagnostic arguments in raised error" do
188
+ acceptor.accept( error(1, :n => 'a') )
189
+ expect do
190
+ Puppet::Pops::IssueReporter.assert_and_report(acceptor, { })
191
+ end.to raise_error(Puppet::ParseErrorWithIssue, /error1/) { |ex| expect(ex.arguments).to eq(:n => 'a')}
192
+ end
178
193
  end
179
194
 
180
195
  context "given both" do
@@ -194,7 +194,7 @@ describe 'loaders' do
194
194
 
195
195
  def compile_and_get_notifications(code)
196
196
  Puppet[:code] = code
197
- catalog = block_given? ? compiler.compile { |catalog| yield(compiler.topscope); catalog } : compiler.compile
197
+ catalog = block_given? ? compiler.compile { |c| yield(compiler.topscope); c } : compiler.compile
198
198
  catalog.resources.map(&:ref).select { |r| r.start_with?('Notify[') }.map { |r| r[7..-2] }
199
199
  end
200
200
 
@@ -271,7 +271,7 @@ describe 'loaders' do
271
271
  File.stubs(:read).with(usee_metadata_path, {:encoding => 'utf-8'}).raises Errno::ENOENT
272
272
  File.stubs(:read).with(usee2_metadata_path, {:encoding => 'utf-8'}).raises Errno::ENOENT
273
273
  Puppet[:code] = "$case_number = #{case_number}\ninclude ::user"
274
- expect { catalog = compiler.compile }.to raise_error(Puppet::Error, /Unknown function/)
274
+ expect { compiler.compile }.to raise_error(Puppet::Error, /Unknown function/)
275
275
  end
276
276
  end
277
277
  end
@@ -534,6 +534,20 @@ describe 'loaders' do
534
534
  },
535
535
  'metadata.json' => sprintf(metadata_json, 'c', '')
536
536
  },
537
+ 'd' => {
538
+ 'types' => {
539
+ 'init_typeset.pp' => <<-PUPPET.unindent,
540
+ type D = TypeSet[{
541
+ pcore_version => '1.0.0',
542
+ types => {
543
+ P => Object[{}],
544
+ O => Object[{ parent => P }]
545
+ }
546
+ }]
547
+ PUPPET
548
+ },
549
+ 'metadata.json' => sprintf(metadata_json, 'd', '')
550
+ }
537
551
  }
538
552
  }
539
553
  end
@@ -624,6 +638,14 @@ describe 'loaders' do
624
638
  expect(type).to be_a(Puppet::Pops::Types::PTypeAliasType)
625
639
  expect(type.resolved_type).to be_a(Puppet::Pops::Types::PFloatType)
626
640
  end
641
+
642
+ it 'loads an object type from a typeset that references another type defined in the same typeset' do
643
+ l = Puppet::Pops::Loaders.find_loader('d').private_loader
644
+ p = Puppet::Pops::Types::TypeParser.singleton
645
+ type = p.parse('D::O', l)
646
+ expect(type).to be_a(Puppet::Pops::Types::PObjectType)
647
+ expect(type.resolved_parent).to be_a(Puppet::Pops::Types::PObjectType)
648
+ end
627
649
  end
628
650
  end
629
651
 
@@ -91,7 +91,7 @@ describe 'the static loader' do
91
91
  end
92
92
 
93
93
  context 'without init_runtime3 initialization' do
94
- let(:loader) { loader = Puppet::Pops::Loader::StaticLoader.new() }
94
+ let(:loader) { Puppet::Pops::Loader::StaticLoader.new() }
95
95
 
96
96
  it 'does not provide access to resource types built into puppet' do
97
97
  expect(loader.load(:type, 'file')).to be_nil
@@ -25,6 +25,11 @@ describe 'Puppet::Pops::Lookup::Interpolation' do
25
25
  found = sub_lookup(name, lookup_invocation, segments, found) unless segments.empty?
26
26
  @interpolator.interpolate(found, lookup_invocation, true)
27
27
  end
28
+
29
+ # ignore requests for lookup options when testing interpolation
30
+ def lookup_lookup_options(_, _)
31
+ nil
32
+ end
28
33
  end
29
34
 
30
35
  let(:interpolator) { Class.new { include Lookup::Interpolation }.new }
@@ -119,6 +119,62 @@ describe 'The lookup API' do
119
119
  end
120
120
  end
121
121
 
122
+ context 'when hiera YAML data is corrupt' do
123
+ let(:mod_content) do
124
+ {
125
+ 'hiera.yaml' => 'version: 5',
126
+ 'data' => {
127
+ 'common.yaml' => <<-YAML.unindent
128
+ ---
129
+ #mod::classes:
130
+ - cls1
131
+ - cls2
132
+
133
+ mod::somevar: 1
134
+ YAML
135
+ },
136
+ }
137
+ end
138
+ let(:msg) { /file does not contain a valid yaml hash/ }
139
+
140
+ %w(off warning).each do |strict|
141
+ it "logs a warning when --strict is '#{strict}'" do
142
+ Puppet[:strict] = strict
143
+ logs = []
144
+ Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
145
+ expect(Lookup.lookup('mod::somevar', nil, nil, true, nil, invocation)).to be_nil
146
+ end
147
+ expect(logs.map(&:message)).to contain_exactly(msg)
148
+ end
149
+ end
150
+
151
+ it 'fails when --strict is "error"' do
152
+ Puppet[:strict] = 'error'
153
+ expect { Lookup.lookup('mod::somevar', nil, nil, true, nil, invocation) }.to raise_error(msg)
154
+ end
155
+ end
156
+
157
+ context 'when hiera YAML data is empty' do
158
+ let(:mod_content) do
159
+ {
160
+ 'hiera.yaml' => 'version: 5',
161
+ 'data' => { 'common.yaml' => '' },
162
+ }
163
+ end
164
+ let(:msg) { /file does not contain a valid yaml hash/ }
165
+
166
+ %w(off warning error).each do |strict|
167
+ it "logs a warning when --strict is '#{strict}'" do
168
+ Puppet[:strict] = strict
169
+ logs = []
170
+ Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
171
+ expect(Lookup.lookup('mod::somevar', nil, nil, true, nil, invocation)).to be_nil
172
+ end
173
+ expect(logs.map(&:message)).to contain_exactly(msg)
174
+ end
175
+ end
176
+ end
177
+
122
178
  context 'when doing lookup' do
123
179
  it 'finds data in global layer' do
124
180
  expect(Lookup.lookup('a', nil, nil, false, nil, invocation)).to eql('a (from global)')
@@ -0,0 +1,53 @@
1
+ #! /usr/bin/env ruby
2
+ require 'spec_helper'
3
+ require 'puppet/pops'
4
+ require 'puppet/pops/pn'
5
+
6
+ module Puppet::Pops
7
+ module Model
8
+
9
+ describe 'Puppet::Pops::Model::PNTransformer' do
10
+ def call(name, *elements)
11
+ PN::Call.new(name, *elements.map { |e| lit(e) })
12
+ end
13
+
14
+ context 'transforms the expression' do
15
+ it '"\'hello\'" into the corresponding literal' do
16
+ x = Factory.literal('hello')
17
+ expect(Puppet::Pops::Model::PNTransformer.transform(x.model)).to eq(lit('hello'))
18
+ end
19
+
20
+ it '"32" into into the corresponding literal' do
21
+ x = Factory.literal(32)
22
+ expect(Puppet::Pops::Model::PNTransformer.transform(x.model)).to eq(lit(32))
23
+ end
24
+
25
+ it '"true" into into the corresponding literal' do
26
+ x = Factory.literal(true)
27
+ expect(Puppet::Pops::Model::PNTransformer.transform(x.model)).to eq(lit(true))
28
+ end
29
+
30
+ it '"10 + 20" into (+ 10 20)' do
31
+ x = Factory.literal(10) + Factory.literal(20)
32
+ expect(Puppet::Pops::Model::PNTransformer.transform(x.model)).to eq(call('+', 10, 20))
33
+ end
34
+
35
+ it '"[10, 20]" into into (array 10 20)' do
36
+ x = Factory.literal([10, 20])
37
+ expect(Puppet::Pops::Model::PNTransformer.transform(x.model)).to eq(call('array', 10, 20))
38
+ end
39
+
40
+ it '"{a => 1, b => 2}" into into (hash (=> ("a" 1)) (=> ("b" 2)))' do
41
+ x = Factory.HASH([Factory.KEY_ENTRY(Factory.literal('a'), Factory.literal(1)), Factory.KEY_ENTRY(Factory.literal('b'), Factory.literal(2))])
42
+ expect(Puppet::Pops::Model::PNTransformer.transform(x.model)).to eq(
43
+ call('hash', call('=>', 'a', 1), call('=>', 'b', 2)))
44
+ end
45
+ end
46
+
47
+ def lit(value)
48
+ value.is_a?(PN) ? value : PN::Literal.new(value)
49
+ end
50
+ end
51
+ end
52
+ end
53
+
@@ -7,13 +7,13 @@ module EgrammarLexer2Spec
7
7
  def tokens_scanned_from(s)
8
8
  lexer = Puppet::Pops::Parser::Lexer2.new
9
9
  lexer.string = s
10
- tokens = lexer.fullscan[0..-2]
10
+ lexer.fullscan[0..-2]
11
11
  end
12
12
 
13
13
  def epp_tokens_scanned_from(s)
14
14
  lexer = Puppet::Pops::Parser::Lexer2.new
15
15
  lexer.string = s
16
- tokens = lexer.fullscan_epp[0..-2]
16
+ lexer.fullscan_epp[0..-2]
17
17
  end
18
18
  end
19
19
 
@@ -540,6 +540,15 @@ describe 'Lexer2' do
540
540
  expect_issue(code, Puppet::Pops::Issues::HEREDOC_WITHOUT_TEXT)
541
541
  end
542
542
 
543
+ it 'detects and reports HEREDOC_EMPTY_ENDTAG' do
544
+ code = <<-CODE
545
+ @("")
546
+ Text
547
+ |-END
548
+ CODE
549
+ expect_issue(code, Puppet::Pops::Issues::HEREDOC_EMPTY_ENDTAG)
550
+ end
551
+
543
552
  it 'detects and reports HEREDOC_MULTIPLE_AT_ESCAPES' do
544
553
  code = <<-CODE
545
554
  @(END:syntax/tst)
@@ -867,8 +876,8 @@ describe Puppet::Pops::Parser::Lexer2 do
867
876
  # Section 3.2.1.3 of Ruby spec guarantees that \u strings are encoded as UTF-8
868
877
  # Runes (may show up as garbage if font is not available): ᚠᛇᚻ᛫ᛒᛦᚦ᛫ᚠᚱᚩᚠᚢᚱ᛫ᚠᛁᚱᚪ᛫ᚷᛖᚻᚹᛦᛚᚳᚢᛗ
869
878
  let (:rune_utf8) {
870
- "\u16A0\u16C7\u16BB\u16EB\u16D2\u16E6\u16A6\u16EB\u16A0\u16B1\u16A9\u16A0\u16A2"
871
- "\u16B1\u16EB\u16A0\u16C1\u16B1\u16AA\u16EB\u16B7\u16D6\u16BB\u16B9\u16E6\u16DA"
879
+ "\u16A0\u16C7\u16BB\u16EB\u16D2\u16E6\u16A6\u16EB\u16A0\u16B1\u16A9\u16A0\u16A2" +
880
+ "\u16B1\u16EB\u16A0\u16C1\u16B1\u16AA\u16EB\u16B7\u16D6\u16BB\u16B9\u16E6\u16DA" +
872
881
  "\u16B3\u16A2\u16D7"
873
882
  }
874
883
 
@@ -893,7 +902,7 @@ describe Puppet::Pops::Parser::Lexer2 do
893
902
  manifest = file_containing('manifest.pp', manifest_code)
894
903
 
895
904
  expect {
896
- lexed_file = described_class.new.lex_file(manifest)
905
+ described_class.new.lex_file(manifest)
897
906
  }.to raise_error(Puppet::ParseErrorWithIssue,
898
907
  'Illegal UTF-8 Byte Order mark at beginning of input: [EF BB BF] - remove these from the puppet source')
899
908
  end
@@ -234,7 +234,7 @@ describe "egrammar parsing basic expressions" do
234
234
 
235
235
  context 'When parsing type aliases' do
236
236
  it 'type A = B' do
237
- expect(dump(parse('type A = B'))).to eq('(type-alias A b)')
237
+ expect(dump(parse('type A = B'))).to eq('(type-alias A B)')
238
238
  end
239
239
 
240
240
  it 'type A = B[]' do
@@ -246,19 +246,19 @@ describe "egrammar parsing basic expressions" do
246
246
  end
247
247
 
248
248
  it 'type A = B[C]' do
249
- expect(dump(parse('type A = B[C]'))).to eq('(type-alias A (slice b c))')
249
+ expect(dump(parse('type A = B[C]'))).to eq('(type-alias A (slice B C))')
250
250
  end
251
251
 
252
252
  it 'type A = B[C,]' do
253
- expect(dump(parse('type A = B[C,]'))).to eq('(type-alias A (slice b c))')
253
+ expect(dump(parse('type A = B[C,]'))).to eq('(type-alias A (slice B C))')
254
254
  end
255
255
 
256
256
  it 'type A = B[C,D]' do
257
- expect(dump(parse('type A = B[C,D]'))).to eq('(type-alias A (slice b (c d)))')
257
+ expect(dump(parse('type A = B[C,D]'))).to eq('(type-alias A (slice B (C D)))')
258
258
  end
259
259
 
260
260
  it 'type A = B[C,D,]' do
261
- expect(dump(parse('type A = B[C,D,]'))).to eq('(type-alias A (slice b (c d)))')
261
+ expect(dump(parse('type A = B[C,D,]'))).to eq('(type-alias A (slice B (C D)))')
262
262
  end
263
263
  end
264
264
 
@@ -339,11 +339,11 @@ describe "egrammar parsing basic expressions" do
339
339
 
340
340
  context "When parsing string interpolation" do
341
341
  it "should interpolate a bare word as a variable name, \"${var}\"" do
342
- expect(dump(parse("$a = \"$var\""))).to eq("(= $a (cat '' (str $var) ''))")
342
+ expect(dump(parse("$a = \"$var\""))).to eq("(= $a (cat (str $var)))")
343
343
  end
344
344
 
345
345
  it "should interpolate a variable in a text expression, \"${$var}\"" do
346
- expect(dump(parse("$a = \"${$var}\""))).to eq("(= $a (cat '' (str $var) ''))")
346
+ expect(dump(parse("$a = \"${$var}\""))).to eq("(= $a (cat (str $var)))")
347
347
  end
348
348
 
349
349
  it "should interpolate a variable, \"yo${var}yo\"" do
@@ -372,11 +372,11 @@ describe "egrammar parsing basic expressions" do
372
372
  end
373
373
 
374
374
  it "should interpolate interpolated expressions with a variable, \"yo${\"$var\"}yo\"" do
375
- expect(dump(parse("$a = \"yo${\"$var\"}yo\""))).to eq("(= $a (cat 'yo' (str (cat '' (str $var) '')) 'yo'))")
375
+ expect(dump(parse("$a = \"yo${\"$var\"}yo\""))).to eq("(= $a (cat 'yo' (str (cat (str $var))) 'yo'))")
376
376
  end
377
377
 
378
378
  it "should interpolate interpolated expressions with an expression, \"yo${\"${$var+2}\"}yo\"" do
379
- expect(dump(parse("$a = \"yo${\"${$var+2}\"}yo\""))).to eq("(= $a (cat 'yo' (str (cat '' (str (+ $var 2)) '')) 'yo'))")
379
+ expect(dump(parse("$a = \"yo${\"${$var+2}\"}yo\""))).to eq("(= $a (cat 'yo' (str (cat (str (+ $var 2)))) 'yo'))")
380
380
  end
381
381
  end
382
382
  end
@@ -138,7 +138,7 @@ describe "egrammar parsing function calls" do
138
138
  end
139
139
 
140
140
  it 'notice Hash.assert_type(a => 42)' do
141
- expect(dump(parse('notice Hash.assert_type(a => 42)'))).to eq('(invoke notice (call-method (. hash assert_type) ({} (a 42))))')
141
+ expect(dump(parse('notice Hash.assert_type(a => 42)'))).to eq('(invoke notice (call-method (. Hash assert_type) ({} (a 42))))')
142
142
  end
143
143
 
144
144
  it "notice 42.type(detailed)" do