puppet 8.4.0-x64-mingw32 → 8.5.0-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1871) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -1
  3. data/Gemfile.lock +73 -56
  4. data/ext/project_data.yaml +4 -4
  5. data/ext/windows/service/daemon.rb +8 -8
  6. data/lib/hiera/puppet_function.rb +4 -4
  7. data/lib/hiera/scope.rb +5 -4
  8. data/lib/hiera_puppet.rb +0 -1
  9. data/lib/puppet/agent/disabler.rb +2 -2
  10. data/lib/puppet/agent.rb +3 -3
  11. data/lib/puppet/application/agent.rb +80 -78
  12. data/lib/puppet/application/apply.rb +45 -45
  13. data/lib/puppet/application/describe.rb +21 -21
  14. data/lib/puppet/application/device.rb +49 -49
  15. data/lib/puppet/application/doc.rb +27 -27
  16. data/lib/puppet/application/face_base.rb +2 -3
  17. data/lib/puppet/application/filebucket.rb +58 -58
  18. data/lib/puppet/application/generate.rb +1 -1
  19. data/lib/puppet/application/lookup.rb +44 -44
  20. data/lib/puppet/application/resource.rb +34 -34
  21. data/lib/puppet/application/script.rb +29 -29
  22. data/lib/puppet/application/ssl.rb +18 -18
  23. data/lib/puppet/application.rb +7 -7
  24. data/lib/puppet/application_support.rb +1 -1
  25. data/lib/puppet/compilable_resource_type.rb +2 -2
  26. data/lib/puppet/concurrent/lock.rb +0 -1
  27. data/lib/puppet/configurer/fact_handler.rb +3 -3
  28. data/lib/puppet/configurer.rb +8 -7
  29. data/lib/puppet/confine/any.rb +1 -1
  30. data/lib/puppet/confine/boolean.rb +1 -1
  31. data/lib/puppet/confine/exists.rb +1 -1
  32. data/lib/puppet/confine/false.rb +1 -1
  33. data/lib/puppet/confine/feature.rb +1 -2
  34. data/lib/puppet/confine/true.rb +1 -1
  35. data/lib/puppet/confine/variable.rb +1 -1
  36. data/lib/puppet/confine_collection.rb +1 -1
  37. data/lib/puppet/context/trusted_information.rb +4 -4
  38. data/lib/puppet/daemon.rb +6 -6
  39. data/lib/puppet/datatypes.rb +3 -2
  40. data/lib/puppet/defaults.rb +12 -12
  41. data/lib/puppet/environments.rb +7 -7
  42. data/lib/puppet/error.rb +7 -6
  43. data/lib/puppet/etc.rb +3 -2
  44. data/lib/puppet/external/dot.rb +25 -25
  45. data/lib/puppet/face/catalog/select.rb +1 -1
  46. data/lib/puppet/face/config.rb +1 -1
  47. data/lib/puppet/face/epp.rb +9 -9
  48. data/lib/puppet/face/facts.rb +2 -2
  49. data/lib/puppet/face/generate.rb +1 -1
  50. data/lib/puppet/face/help.rb +17 -21
  51. data/lib/puppet/face/module/install.rb +4 -3
  52. data/lib/puppet/face/module/list.rb +7 -8
  53. data/lib/puppet/face/module/upgrade.rb +4 -3
  54. data/lib/puppet/face/parser.rb +6 -6
  55. data/lib/puppet/feature/base.rb +2 -2
  56. data/lib/puppet/feature/libuser.rb +2 -2
  57. data/lib/puppet/ffi/posix/constants.rb +1 -1
  58. data/lib/puppet/ffi/windows/functions.rb +1 -1
  59. data/lib/puppet/file_bucket/dipper.rb +8 -6
  60. data/lib/puppet/file_bucket/file.rb +2 -2
  61. data/lib/puppet/file_serving/configuration.rb +1 -1
  62. data/lib/puppet/file_serving/fileset.rb +2 -2
  63. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  64. data/lib/puppet/file_serving/metadata.rb +4 -5
  65. data/lib/puppet/file_serving/terminus_selector.rb +1 -1
  66. data/lib/puppet/file_system/file_impl.rb +4 -4
  67. data/lib/puppet/file_system/uniquefile.rb +4 -4
  68. data/lib/puppet/file_system/windows.rb +7 -7
  69. data/lib/puppet/file_system.rb +1 -1
  70. data/lib/puppet/forge/cache.rb +1 -1
  71. data/lib/puppet/forge/repository.rb +1 -1
  72. data/lib/puppet/forge.rb +3 -3
  73. data/lib/puppet/functions/abs.rb +4 -3
  74. data/lib/puppet/functions/all.rb +1 -1
  75. data/lib/puppet/functions/any.rb +1 -1
  76. data/lib/puppet/functions/assert_type.rb +3 -2
  77. data/lib/puppet/functions/break.rb +1 -1
  78. data/lib/puppet/functions/camelcase.rb +2 -2
  79. data/lib/puppet/functions/capitalize.rb +2 -2
  80. data/lib/puppet/functions/chomp.rb +1 -1
  81. data/lib/puppet/functions/chop.rb +1 -1
  82. data/lib/puppet/functions/compare.rb +1 -1
  83. data/lib/puppet/functions/contain.rb +5 -4
  84. data/lib/puppet/functions/dig.rb +3 -3
  85. data/lib/puppet/functions/downcase.rb +2 -2
  86. data/lib/puppet/functions/eyaml_lookup_key.rb +1 -1
  87. data/lib/puppet/functions/filter.rb +6 -7
  88. data/lib/puppet/functions/get.rb +1 -1
  89. data/lib/puppet/functions/getvar.rb +4 -4
  90. data/lib/puppet/functions/group_by.rb +2 -2
  91. data/lib/puppet/functions/include.rb +3 -2
  92. data/lib/puppet/functions/index.rb +1 -1
  93. data/lib/puppet/functions/join.rb +1 -1
  94. data/lib/puppet/functions/lookup.rb +2 -2
  95. data/lib/puppet/functions/lstrip.rb +1 -1
  96. data/lib/puppet/functions/map.rb +2 -2
  97. data/lib/puppet/functions/match.rb +4 -4
  98. data/lib/puppet/functions/max.rb +2 -2
  99. data/lib/puppet/functions/min.rb +2 -2
  100. data/lib/puppet/functions/next.rb +1 -1
  101. data/lib/puppet/functions/require.rb +3 -2
  102. data/lib/puppet/functions/rstrip.rb +1 -1
  103. data/lib/puppet/functions/slice.rb +1 -1
  104. data/lib/puppet/functions/strftime.rb +1 -1
  105. data/lib/puppet/functions/strip.rb +1 -1
  106. data/lib/puppet/functions/tree_each.rb +2 -2
  107. data/lib/puppet/functions/unique.rb +8 -8
  108. data/lib/puppet/functions/upcase.rb +2 -2
  109. data/lib/puppet/functions.rb +18 -18
  110. data/lib/puppet/generate/models/type/property.rb +1 -1
  111. data/lib/puppet/generate/models/type/type.rb +2 -2
  112. data/lib/puppet/generate/type.rb +3 -3
  113. data/lib/puppet/graph/rb_tree_map.rb +5 -5
  114. data/lib/puppet/graph/relationship_graph.rb +17 -17
  115. data/lib/puppet/graph/simple_graph.rb +25 -25
  116. data/lib/puppet/http/client.rb +4 -4
  117. data/lib/puppet/http/dns.rb +2 -3
  118. data/lib/puppet/http/errors.rb +2 -2
  119. data/lib/puppet/http/factory.rb +1 -1
  120. data/lib/puppet/http/proxy.rb +2 -2
  121. data/lib/puppet/http/redirector.rb +1 -1
  122. data/lib/puppet/http/resolver/server_list.rb +3 -3
  123. data/lib/puppet/http/response_converter.rb +2 -3
  124. data/lib/puppet/http/service/ca.rb +3 -3
  125. data/lib/puppet/http/service/compiler.rb +2 -2
  126. data/lib/puppet/http/service/file_server.rb +1 -1
  127. data/lib/puppet/http/service/puppetserver.rb +1 -1
  128. data/lib/puppet/http/service.rb +6 -9
  129. data/lib/puppet/http/session.rb +1 -1
  130. data/lib/puppet/indirector/catalog/compiler.rb +17 -19
  131. data/lib/puppet/indirector/data_binding/hiera.rb +0 -1
  132. data/lib/puppet/indirector/exec.rb +1 -1
  133. data/lib/puppet/indirector/face.rb +3 -3
  134. data/lib/puppet/indirector/fact_search.rb +1 -1
  135. data/lib/puppet/indirector/facts/json.rb +1 -1
  136. data/lib/puppet/indirector/file_bucket_file/file.rb +5 -5
  137. data/lib/puppet/indirector/file_bucket_file/selector.rb +0 -1
  138. data/lib/puppet/indirector/file_metadata/http.rb +2 -2
  139. data/lib/puppet/indirector/hiera.rb +2 -3
  140. data/lib/puppet/indirector/indirection.rb +12 -12
  141. data/lib/puppet/indirector/json.rb +2 -2
  142. data/lib/puppet/indirector/msgpack.rb +2 -2
  143. data/lib/puppet/indirector/node/exec.rb +2 -4
  144. data/lib/puppet/indirector/none.rb +0 -1
  145. data/lib/puppet/indirector/report/json.rb +1 -1
  146. data/lib/puppet/indirector/report/msgpack.rb +1 -1
  147. data/lib/puppet/indirector/report/yaml.rb +1 -1
  148. data/lib/puppet/indirector/request.rb +3 -3
  149. data/lib/puppet/indirector/resource/ral.rb +6 -6
  150. data/lib/puppet/indirector/rest.rb +1 -1
  151. data/lib/puppet/indirector/yaml.rb +2 -2
  152. data/lib/puppet/info_service/class_information_service.rb +8 -10
  153. data/lib/puppet/info_service/plan_information_service.rb +3 -3
  154. data/lib/puppet/info_service/task_information_service.rb +3 -3
  155. data/lib/puppet/interface/action.rb +13 -13
  156. data/lib/puppet/interface/action_builder.rb +1 -1
  157. data/lib/puppet/interface/action_manager.rb +2 -2
  158. data/lib/puppet/interface/documentation.rb +15 -15
  159. data/lib/puppet/interface/face_collection.rb +5 -5
  160. data/lib/puppet/interface/option.rb +6 -6
  161. data/lib/puppet/interface/option_manager.rb +2 -2
  162. data/lib/puppet/interface.rb +1 -1
  163. data/lib/puppet/metatype/manager.rb +4 -5
  164. data/lib/puppet/module/plan.rb +3 -3
  165. data/lib/puppet/module/task.rb +16 -16
  166. data/lib/puppet/module.rb +6 -5
  167. data/lib/puppet/module_tool/applications/checksummer.rb +1 -1
  168. data/lib/puppet/module_tool/applications/installer.rb +3 -3
  169. data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
  170. data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
  171. data/lib/puppet/module_tool/applications/upgrader.rb +4 -4
  172. data/lib/puppet/module_tool/contents_description.rb +3 -3
  173. data/lib/puppet/module_tool/dependency.rb +2 -2
  174. data/lib/puppet/module_tool/errors/installer.rb +1 -1
  175. data/lib/puppet/module_tool/errors/shared.rb +3 -3
  176. data/lib/puppet/module_tool/installed_modules.rb +2 -2
  177. data/lib/puppet/module_tool/local_tarball.rb +3 -3
  178. data/lib/puppet/module_tool/metadata.rb +2 -2
  179. data/lib/puppet/module_tool/shared_behaviors.rb +11 -11
  180. data/lib/puppet/module_tool/tar/mini.rb +1 -1
  181. data/lib/puppet/module_tool/tar.rb +1 -1
  182. data/lib/puppet/module_tool.rb +4 -4
  183. data/lib/puppet/network/client_request.rb +0 -1
  184. data/lib/puppet/network/format.rb +1 -1
  185. data/lib/puppet/network/format_handler.rb +5 -5
  186. data/lib/puppet/network/format_support.rb +0 -1
  187. data/lib/puppet/network/formats.rb +15 -13
  188. data/lib/puppet/network/http/api/indirected_routes.rb +27 -15
  189. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  190. data/lib/puppet/network/http/api/master/v3.rb +0 -1
  191. data/lib/puppet/network/http/api/server/v3/environments.rb +2 -3
  192. data/lib/puppet/network/http/api/server/v3.rb +6 -6
  193. data/lib/puppet/network/http/api.rb +11 -11
  194. data/lib/puppet/network/http/connection.rb +3 -3
  195. data/lib/puppet/network/http/error.rb +2 -2
  196. data/lib/puppet/network/http/handler.rb +5 -5
  197. data/lib/puppet/network/http/request.rb +9 -5
  198. data/lib/puppet/network/http_pool.rb +1 -2
  199. data/lib/puppet/node/environment.rb +13 -13
  200. data/lib/puppet/node/facts.rb +6 -8
  201. data/lib/puppet/node.rb +4 -6
  202. data/lib/puppet/pal/compiler.rb +4 -4
  203. data/lib/puppet/pal/function_signature.rb +2 -2
  204. data/lib/puppet/pal/pal_impl.rb +39 -44
  205. data/lib/puppet/pal/plan_signature.rb +1 -1
  206. data/lib/puppet/pal/task_signature.rb +2 -2
  207. data/lib/puppet/parameter/path.rb +3 -3
  208. data/lib/puppet/parameter/value.rb +1 -1
  209. data/lib/puppet/parameter/value_collection.rb +5 -5
  210. data/lib/puppet/parameter.rb +4 -4
  211. data/lib/puppet/parser/abstract_compiler.rb +1 -1
  212. data/lib/puppet/parser/ast/hostclass.rb +1 -1
  213. data/lib/puppet/parser/ast/pops_bridge.rb +5 -5
  214. data/lib/puppet/parser/ast/resource.rb +1 -1
  215. data/lib/puppet/parser/ast/resourceparam.rb +1 -1
  216. data/lib/puppet/parser/catalog_compiler.rb +1 -1
  217. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +0 -2
  218. data/lib/puppet/parser/compiler.rb +11 -11
  219. data/lib/puppet/parser/e4_parser_adapter.rb +1 -1
  220. data/lib/puppet/parser/files.rb +2 -2
  221. data/lib/puppet/parser/functions/assert_type.rb +15 -15
  222. data/lib/puppet/parser/functions/binary_file.rb +6 -6
  223. data/lib/puppet/parser/functions/break.rb +9 -9
  224. data/lib/puppet/parser/functions/contain.rb +1 -1
  225. data/lib/puppet/parser/functions/create_resources.rb +6 -5
  226. data/lib/puppet/parser/functions/defined.rb +24 -24
  227. data/lib/puppet/parser/functions/dig.rb +10 -10
  228. data/lib/puppet/parser/functions/digest.rb +1 -1
  229. data/lib/puppet/parser/functions/each.rb +21 -21
  230. data/lib/puppet/parser/functions/epp.rb +1 -1
  231. data/lib/puppet/parser/functions/fail.rb +1 -1
  232. data/lib/puppet/parser/functions/file.rb +1 -1
  233. data/lib/puppet/parser/functions/filter.rb +20 -20
  234. data/lib/puppet/parser/functions/find_file.rb +6 -7
  235. data/lib/puppet/parser/functions/fqdn_rand.rb +4 -4
  236. data/lib/puppet/parser/functions/generate.rb +2 -2
  237. data/lib/puppet/parser/functions/hiera.rb +21 -21
  238. data/lib/puppet/parser/functions/hiera_array.rb +19 -20
  239. data/lib/puppet/parser/functions/hiera_hash.rb +21 -22
  240. data/lib/puppet/parser/functions/hiera_include.rb +21 -22
  241. data/lib/puppet/parser/functions/include.rb +2 -2
  242. data/lib/puppet/parser/functions/inline_epp.rb +1 -1
  243. data/lib/puppet/parser/functions/inline_template.rb +3 -2
  244. data/lib/puppet/parser/functions/lest.rb +11 -11
  245. data/lib/puppet/parser/functions/lookup.rb +22 -22
  246. data/lib/puppet/parser/functions/map.rb +20 -20
  247. data/lib/puppet/parser/functions/match.rb +11 -11
  248. data/lib/puppet/parser/functions/md5.rb +1 -1
  249. data/lib/puppet/parser/functions/new.rb +236 -237
  250. data/lib/puppet/parser/functions/next.rb +8 -8
  251. data/lib/puppet/parser/functions/realize.rb +4 -3
  252. data/lib/puppet/parser/functions/reduce.rb +27 -27
  253. data/lib/puppet/parser/functions/regsubst.rb +4 -3
  254. data/lib/puppet/parser/functions/require.rb +3 -2
  255. data/lib/puppet/parser/functions/return.rb +18 -18
  256. data/lib/puppet/parser/functions/reverse_each.rb +22 -22
  257. data/lib/puppet/parser/functions/scanf.rb +6 -6
  258. data/lib/puppet/parser/functions/sha1.rb +1 -1
  259. data/lib/puppet/parser/functions/sha256.rb +1 -1
  260. data/lib/puppet/parser/functions/slice.rb +10 -10
  261. data/lib/puppet/parser/functions/split.rb +2 -1
  262. data/lib/puppet/parser/functions/sprintf.rb +4 -4
  263. data/lib/puppet/parser/functions/step.rb +20 -20
  264. data/lib/puppet/parser/functions/strftime.rb +43 -43
  265. data/lib/puppet/parser/functions/tag.rb +3 -2
  266. data/lib/puppet/parser/functions/tagged.rb +3 -2
  267. data/lib/puppet/parser/functions/template.rb +3 -2
  268. data/lib/puppet/parser/functions/then.rb +17 -17
  269. data/lib/puppet/parser/functions/type.rb +15 -15
  270. data/lib/puppet/parser/functions/versioncmp.rb +1 -1
  271. data/lib/puppet/parser/functions/with.rb +4 -4
  272. data/lib/puppet/parser/functions.rb +6 -6
  273. data/lib/puppet/parser/relationship.rb +2 -2
  274. data/lib/puppet/parser/resource.rb +12 -17
  275. data/lib/puppet/parser/scope.rb +49 -48
  276. data/lib/puppet/parser/script_compiler.rb +5 -5
  277. data/lib/puppet/parser/templatewrapper.rb +1 -1
  278. data/lib/puppet/parser/type_loader.rb +3 -3
  279. data/lib/puppet/plugins.rb +1 -1
  280. data/lib/puppet/pops/adaptable.rb +0 -1
  281. data/lib/puppet/pops/evaluator/access_operator.rb +61 -63
  282. data/lib/puppet/pops/evaluator/closure.rb +9 -11
  283. data/lib/puppet/pops/evaluator/collector_transformer.rb +2 -2
  284. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
  285. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
  286. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +2 -2
  287. data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +2 -3
  288. data/lib/puppet/pops/evaluator/compare_operator.rb +12 -10
  289. data/lib/puppet/pops/evaluator/deferred_resolver.rb +17 -15
  290. data/lib/puppet/pops/evaluator/epp_evaluator.rb +6 -6
  291. data/lib/puppet/pops/evaluator/evaluator_impl.rb +80 -79
  292. data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
  293. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +2 -3
  294. data/lib/puppet/pops/evaluator/literal_evaluator.rb +14 -6
  295. data/lib/puppet/pops/evaluator/puppet_proc.rb +3 -3
  296. data/lib/puppet/pops/evaluator/relationship_operator.rb +6 -6
  297. data/lib/puppet/pops/evaluator/runtime3_converter.rb +10 -9
  298. data/lib/puppet/pops/evaluator/runtime3_support.rb +15 -14
  299. data/lib/puppet/pops/functions/dispatch.rb +5 -7
  300. data/lib/puppet/pops/functions/dispatcher.rb +4 -4
  301. data/lib/puppet/pops/functions/function.rb +2 -2
  302. data/lib/puppet/pops/issue_reporter.rb +3 -3
  303. data/lib/puppet/pops/issues.rb +5 -1
  304. data/lib/puppet/pops/label_provider.rb +2 -2
  305. data/lib/puppet/pops/loader/base_loader.rb +1 -2
  306. data/lib/puppet/pops/loader/dependency_loader.rb +2 -2
  307. data/lib/puppet/pops/loader/gem_support.rb +1 -1
  308. data/lib/puppet/pops/loader/loader_paths.rb +6 -7
  309. data/lib/puppet/pops/loader/module_loaders.rb +13 -18
  310. data/lib/puppet/pops/loader/predefined_loader.rb +1 -1
  311. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +2 -1
  312. data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +2 -1
  313. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +4 -4
  314. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +7 -6
  315. data/lib/puppet/pops/loader/runtime3_type_loader.rb +1 -1
  316. data/lib/puppet/pops/loader/simple_environment_loader.rb +1 -1
  317. data/lib/puppet/pops/loader/static_loader.rb +2 -2
  318. data/lib/puppet/pops/loader/task_instantiator.rb +2 -2
  319. data/lib/puppet/pops/loader/type_definition_instantiator.rb +2 -1
  320. data/lib/puppet/pops/loader/typed_name.rb +1 -1
  321. data/lib/puppet/pops/loader/uri_helper.rb +1 -1
  322. data/lib/puppet/pops/loaders.rb +3 -3
  323. data/lib/puppet/pops/lookup/context.rb +32 -25
  324. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +2 -2
  325. data/lib/puppet/pops/lookup/explainer.rb +9 -9
  326. data/lib/puppet/pops/lookup/global_data_provider.rb +2 -2
  327. data/lib/puppet/pops/lookup/hiera_config.rb +23 -20
  328. data/lib/puppet/pops/lookup/interpolation.rb +4 -3
  329. data/lib/puppet/pops/lookup/key_recorder.rb +1 -1
  330. data/lib/puppet/pops/lookup/lookup_adapter.rb +7 -5
  331. data/lib/puppet/pops/lookup/lookup_key.rb +1 -1
  332. data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
  333. data/lib/puppet/pops/lookup.rb +1 -2
  334. data/lib/puppet/pops/merge_strategy.rb +10 -8
  335. data/lib/puppet/pops/migration/migration_checker.rb +3 -3
  336. data/lib/puppet/pops/model/ast_transformer.rb +7 -7
  337. data/lib/puppet/pops/model/factory.rb +12 -13
  338. data/lib/puppet/pops/model/model_label_provider.rb +3 -1
  339. data/lib/puppet/pops/model/model_tree_dumper.rb +21 -21
  340. data/lib/puppet/pops/model/tree_dumper.rb +3 -3
  341. data/lib/puppet/pops/parser/code_merger.rb +2 -2
  342. data/lib/puppet/pops/parser/epp_parser.rb +2 -2
  343. data/lib/puppet/pops/parser/epp_support.rb +5 -5
  344. data/lib/puppet/pops/parser/evaluating_parser.rb +4 -4
  345. data/lib/puppet/pops/parser/heredoc_support.rb +4 -4
  346. data/lib/puppet/pops/parser/interpolation_support.rb +20 -20
  347. data/lib/puppet/pops/parser/lexer2.rb +30 -29
  348. data/lib/puppet/pops/parser/lexer_support.rb +20 -18
  349. data/lib/puppet/pops/parser/locator.rb +11 -11
  350. data/lib/puppet/pops/parser/parser_support.rb +7 -7
  351. data/lib/puppet/pops/parser/pn_parser.rb +1 -1
  352. data/lib/puppet/pops/parser/slurp_support.rb +10 -10
  353. data/lib/puppet/pops/pcore.rb +1 -1
  354. data/lib/puppet/pops/pn.rb +1 -2
  355. data/lib/puppet/pops/resource/param.rb +11 -12
  356. data/lib/puppet/pops/resource/resource_type_impl.rb +34 -34
  357. data/lib/puppet/pops/semantic_error.rb +1 -1
  358. data/lib/puppet/pops/serialization/abstract_writer.rb +2 -2
  359. data/lib/puppet/pops/serialization/from_data_converter.rb +12 -9
  360. data/lib/puppet/pops/serialization/json.rb +2 -2
  361. data/lib/puppet/pops/serialization/object.rb +1 -2
  362. data/lib/puppet/pops/serialization/serializer.rb +13 -14
  363. data/lib/puppet/pops/serialization/to_data_converter.rb +3 -3
  364. data/lib/puppet/pops/serialization/to_stringified_converter.rb +5 -5
  365. data/lib/puppet/pops/time/timespan.rb +7 -6
  366. data/lib/puppet/pops/time/timestamp.rb +4 -2
  367. data/lib/puppet/pops/types/annotation.rb +3 -3
  368. data/lib/puppet/pops/types/class_loader.rb +8 -7
  369. data/lib/puppet/pops/types/implementation_registry.rb +2 -1
  370. data/lib/puppet/pops/types/iterable.rb +9 -9
  371. data/lib/puppet/pops/types/p_binary_type.rb +2 -2
  372. data/lib/puppet/pops/types/p_init_type.rb +2 -3
  373. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  374. data/lib/puppet/pops/types/p_object_type.rb +52 -51
  375. data/lib/puppet/pops/types/p_object_type_extension.rb +1 -2
  376. data/lib/puppet/pops/types/p_runtime_type.rb +1 -2
  377. data/lib/puppet/pops/types/p_sem_ver_type.rb +4 -5
  378. data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
  379. data/lib/puppet/pops/types/p_timespan_type.rb +3 -4
  380. data/lib/puppet/pops/types/p_timestamp_type.rb +1 -2
  381. data/lib/puppet/pops/types/p_type_set_type.rb +29 -31
  382. data/lib/puppet/pops/types/p_uri_type.rb +8 -8
  383. data/lib/puppet/pops/types/ruby_generator.rb +7 -6
  384. data/lib/puppet/pops/types/ruby_method.rb +6 -7
  385. data/lib/puppet/pops/types/string_converter.rb +29 -32
  386. data/lib/puppet/pops/types/tree_iterators.rb +6 -8
  387. data/lib/puppet/pops/types/type_asserter.rb +3 -3
  388. data/lib/puppet/pops/types/type_calculator.rb +36 -36
  389. data/lib/puppet/pops/types/type_factory.rb +9 -8
  390. data/lib/puppet/pops/types/type_formatter.rb +34 -38
  391. data/lib/puppet/pops/types/type_mismatch_describer.rb +25 -22
  392. data/lib/puppet/pops/types/type_parser.rb +12 -10
  393. data/lib/puppet/pops/types/type_with_members.rb +0 -1
  394. data/lib/puppet/pops/types/types.rb +85 -97
  395. data/lib/puppet/pops/utils.rb +2 -2
  396. data/lib/puppet/pops/validation/checker4_0.rb +51 -38
  397. data/lib/puppet/pops/validation/tasks_checker.rb +3 -3
  398. data/lib/puppet/pops/validation.rb +15 -15
  399. data/lib/puppet/pops/visitor.rb +1 -1
  400. data/lib/puppet/property/ensure.rb +0 -1
  401. data/lib/puppet/property/keyvalue.rb +5 -6
  402. data/lib/puppet/property/list.rb +1 -1
  403. data/lib/puppet/property.rb +8 -10
  404. data/lib/puppet/provider/aix_object.rb +9 -9
  405. data/lib/puppet/provider/exec/posix.rb +1 -1
  406. data/lib/puppet/provider/exec.rb +3 -3
  407. data/lib/puppet/provider/file/windows.rb +3 -3
  408. data/lib/puppet/provider/group/groupadd.rb +2 -2
  409. data/lib/puppet/provider/group/pw.rb +0 -1
  410. data/lib/puppet/provider/group/windows_adsi.rb +3 -3
  411. data/lib/puppet/provider/ldap.rb +2 -3
  412. data/lib/puppet/provider/nameservice/directoryservice.rb +11 -11
  413. data/lib/puppet/provider/nameservice/pw.rb +0 -1
  414. data/lib/puppet/provider/nameservice.rb +9 -10
  415. data/lib/puppet/provider/package/aix.rb +4 -4
  416. data/lib/puppet/provider/package/appdmg.rb +3 -3
  417. data/lib/puppet/provider/package/apple.rb +1 -1
  418. data/lib/puppet/provider/package/apt.rb +7 -3
  419. data/lib/puppet/provider/package/aptrpm.rb +6 -4
  420. data/lib/puppet/provider/package/blastwave.rb +3 -3
  421. data/lib/puppet/provider/package/dnf.rb +5 -0
  422. data/lib/puppet/provider/package/dnfmodule.rb +1 -1
  423. data/lib/puppet/provider/package/dpkg.rb +8 -8
  424. data/lib/puppet/provider/package/gem.rb +6 -7
  425. data/lib/puppet/provider/package/hpux.rb +2 -2
  426. data/lib/puppet/provider/package/nim.rb +4 -4
  427. data/lib/puppet/provider/package/openbsd.rb +8 -8
  428. data/lib/puppet/provider/package/opkg.rb +6 -6
  429. data/lib/puppet/provider/package/pacman.rb +2 -2
  430. data/lib/puppet/provider/package/pip.rb +8 -8
  431. data/lib/puppet/provider/package/pkg.rb +19 -19
  432. data/lib/puppet/provider/package/pkgdmg.rb +5 -5
  433. data/lib/puppet/provider/package/pkgin.rb +6 -6
  434. data/lib/puppet/provider/package/pkgng.rb +1 -1
  435. data/lib/puppet/provider/package/pkgutil.rb +11 -11
  436. data/lib/puppet/provider/package/portage.rb +3 -3
  437. data/lib/puppet/provider/package/portupgrade.rb +5 -7
  438. data/lib/puppet/provider/package/puppet_gem.rb +2 -2
  439. data/lib/puppet/provider/package/puppetserver_gem.rb +4 -4
  440. data/lib/puppet/provider/package/rpm.rb +9 -9
  441. data/lib/puppet/provider/package/sun.rb +2 -2
  442. data/lib/puppet/provider/package/tdnf.rb +6 -1
  443. data/lib/puppet/provider/package/windows/exe_package.rb +2 -2
  444. data/lib/puppet/provider/package/windows/package.rb +3 -3
  445. data/lib/puppet/provider/package/windows.rb +1 -1
  446. data/lib/puppet/provider/package/yum.rb +25 -14
  447. data/lib/puppet/provider/package/zypper.rb +7 -7
  448. data/lib/puppet/provider/package.rb +1 -1
  449. data/lib/puppet/provider/package_targetable.rb +2 -2
  450. data/lib/puppet/provider/parsedfile.rb +5 -7
  451. data/lib/puppet/provider/service/base.rb +0 -1
  452. data/lib/puppet/provider/service/daemontools.rb +10 -10
  453. data/lib/puppet/provider/service/debian.rb +2 -2
  454. data/lib/puppet/provider/service/freebsd.rb +15 -17
  455. data/lib/puppet/provider/service/init.rb +2 -3
  456. data/lib/puppet/provider/service/launchd.rb +3 -3
  457. data/lib/puppet/provider/service/openrc.rb +1 -1
  458. data/lib/puppet/provider/service/redhat.rb +2 -1
  459. data/lib/puppet/provider/service/runit.rb +2 -3
  460. data/lib/puppet/provider/service/service.rb +0 -1
  461. data/lib/puppet/provider/service/smf.rb +4 -4
  462. data/lib/puppet/provider/service/src.rb +3 -4
  463. data/lib/puppet/provider/service/systemd.rb +3 -2
  464. data/lib/puppet/provider/service/upstart.rb +6 -8
  465. data/lib/puppet/provider/service/windows.rb +15 -15
  466. data/lib/puppet/provider/user/aix.rb +14 -14
  467. data/lib/puppet/provider/user/directoryservice.rb +8 -8
  468. data/lib/puppet/provider/user/hpux.rb +9 -9
  469. data/lib/puppet/provider/user/ldap.rb +4 -4
  470. data/lib/puppet/provider/user/openbsd.rb +1 -1
  471. data/lib/puppet/provider/user/pw.rb +1 -2
  472. data/lib/puppet/provider/user/user_role_add.rb +9 -9
  473. data/lib/puppet/provider/user/useradd.rb +4 -4
  474. data/lib/puppet/provider/user/windows_adsi.rb +6 -6
  475. data/lib/puppet/provider.rb +2 -2
  476. data/lib/puppet/reference/configuration.rb +15 -14
  477. data/lib/puppet/reference/indirection.rb +14 -14
  478. data/lib/puppet/reference/providers.rb +2 -2
  479. data/lib/puppet/reference/type.rb +1 -1
  480. data/lib/puppet/relationship.rb +2 -2
  481. data/lib/puppet/reports/log.rb +0 -1
  482. data/lib/puppet/reports/store.rb +2 -2
  483. data/lib/puppet/resource/catalog.rb +26 -30
  484. data/lib/puppet/resource/status.rb +4 -3
  485. data/lib/puppet/resource/type.rb +10 -11
  486. data/lib/puppet/resource/type_collection.rb +5 -5
  487. data/lib/puppet/resource.rb +35 -30
  488. data/lib/puppet/scheduler/scheduler.rb +1 -1
  489. data/lib/puppet/scheduler.rb +1 -1
  490. data/lib/puppet/settings/base_setting.rb +2 -2
  491. data/lib/puppet/settings/boolean_setting.rb +1 -1
  492. data/lib/puppet/settings/config_file.rb +2 -2
  493. data/lib/puppet/settings/duration_setting.rb +2 -3
  494. data/lib/puppet/settings/environment_conf.rb +6 -4
  495. data/lib/puppet/settings/errors.rb +3 -3
  496. data/lib/puppet/settings/integer_setting.rb +1 -1
  497. data/lib/puppet/settings/priority_setting.rb +3 -4
  498. data/lib/puppet/settings/server_list_setting.rb +4 -4
  499. data/lib/puppet/settings/ttl_setting.rb +3 -4
  500. data/lib/puppet/settings/value_translator.rb +1 -1
  501. data/lib/puppet/settings.rb +39 -36
  502. data/lib/puppet/ssl/base.rb +2 -2
  503. data/lib/puppet/ssl/certificate.rb +2 -2
  504. data/lib/puppet/ssl/certificate_request.rb +10 -10
  505. data/lib/puppet/ssl/certificate_request_attributes.rb +1 -1
  506. data/lib/puppet/ssl/oids.rb +4 -4
  507. data/lib/puppet/ssl/ssl_provider.rb +8 -6
  508. data/lib/puppet/ssl/state_machine.rb +11 -11
  509. data/lib/puppet/syntax_checkers/base64.rb +1 -1
  510. data/lib/puppet/syntax_checkers/epp.rb +2 -2
  511. data/lib/puppet/syntax_checkers/json.rb +2 -2
  512. data/lib/puppet/syntax_checkers/pp.rb +2 -2
  513. data/lib/puppet/syntax_checkers.rb +1 -1
  514. data/lib/puppet/test/test_helper.rb +10 -9
  515. data/lib/puppet/transaction/additional_resource_generator.rb +5 -5
  516. data/lib/puppet/transaction/event_manager.rb +2 -3
  517. data/lib/puppet/transaction/persistence.rb +1 -1
  518. data/lib/puppet/transaction/report.rb +14 -16
  519. data/lib/puppet/transaction/resource_harness.rb +2 -2
  520. data/lib/puppet/transaction.rb +11 -11
  521. data/lib/puppet/trusted_external.rb +1 -1
  522. data/lib/puppet/type/exec.rb +7 -11
  523. data/lib/puppet/type/file/checksum_value.rb +2 -2
  524. data/lib/puppet/type/file/content.rb +5 -5
  525. data/lib/puppet/type/file/ctime.rb +0 -1
  526. data/lib/puppet/type/file/data_sync.rb +2 -2
  527. data/lib/puppet/type/file/ensure.rb +6 -9
  528. data/lib/puppet/type/file/owner.rb +0 -1
  529. data/lib/puppet/type/file/selcontext.rb +0 -1
  530. data/lib/puppet/type/file/source.rb +2 -2
  531. data/lib/puppet/type/file/target.rb +2 -3
  532. data/lib/puppet/type/file/type.rb +0 -1
  533. data/lib/puppet/type/file.rb +22 -26
  534. data/lib/puppet/type/group.rb +2 -2
  535. data/lib/puppet/type/package.rb +8 -8
  536. data/lib/puppet/type/resources.rb +8 -8
  537. data/lib/puppet/type/schedule.rb +4 -4
  538. data/lib/puppet/type/service.rb +4 -4
  539. data/lib/puppet/type/tidy.rb +7 -7
  540. data/lib/puppet/type/user.rb +20 -19
  541. data/lib/puppet/type.rb +44 -49
  542. data/lib/puppet/util/at_fork/solaris.rb +4 -4
  543. data/lib/puppet/util/autoload.rb +2 -2
  544. data/lib/puppet/util/backups.rb +3 -3
  545. data/lib/puppet/util/checksums.rb +1 -1
  546. data/lib/puppet/util/classgen.rb +2 -3
  547. data/lib/puppet/util/colors.rb +33 -33
  548. data/lib/puppet/util/command_line/puppet_option_parser.rb +5 -4
  549. data/lib/puppet/util/command_line/trollop.rb +38 -34
  550. data/lib/puppet/util/command_line.rb +1 -1
  551. data/lib/puppet/util/diff.rb +4 -4
  552. data/lib/puppet/util/docs.rb +3 -3
  553. data/lib/puppet/util/errors.rb +2 -2
  554. data/lib/puppet/util/execution.rb +12 -11
  555. data/lib/puppet/util/feature.rb +6 -8
  556. data/lib/puppet/util/fileparsing.rb +9 -12
  557. data/lib/puppet/util/filetype.rb +3 -3
  558. data/lib/puppet/util/inifile.rb +1 -1
  559. data/lib/puppet/util/ldap/manager.rb +6 -7
  560. data/lib/puppet/util/libuser.rb +1 -1
  561. data/lib/puppet/util/log/destination.rb +0 -1
  562. data/lib/puppet/util/log/destinations.rb +2 -4
  563. data/lib/puppet/util/log.rb +7 -6
  564. data/lib/puppet/util/logging.rb +6 -7
  565. data/lib/puppet/util/metaid.rb +0 -1
  566. data/lib/puppet/util/metric.rb +3 -3
  567. data/lib/puppet/util/monkey_patches.rb +1 -1
  568. data/lib/puppet/util/multi_match.rb +4 -4
  569. data/lib/puppet/util/network_device/base.rb +1 -1
  570. data/lib/puppet/util/network_device/config.rb +2 -2
  571. data/lib/puppet/util/package/version/pip.rb +2 -2
  572. data/lib/puppet/util/package/version/range/lt.rb +1 -1
  573. data/lib/puppet/util/package/version/range.rb +5 -5
  574. data/lib/puppet/util/package.rb +1 -1
  575. data/lib/puppet/util/pidlock.rb +1 -1
  576. data/lib/puppet/util/plist.rb +6 -5
  577. data/lib/puppet/util/posix.rb +3 -4
  578. data/lib/puppet/util/profiler/aggregate.rb +2 -3
  579. data/lib/puppet/util/profiler/logging.rb +1 -1
  580. data/lib/puppet/util/profiler/wall_clock.rb +2 -3
  581. data/lib/puppet/util/provider_features.rb +1 -2
  582. data/lib/puppet/util/rdoc/code_objects.rb +11 -10
  583. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +37 -34
  584. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +17 -15
  585. data/lib/puppet/util/rdoc.rb +8 -8
  586. data/lib/puppet/util/reference.rb +2 -2
  587. data/lib/puppet/util/resource_template.rb +0 -1
  588. data/lib/puppet/util/retry_action.rb +2 -2
  589. data/lib/puppet/util/rpm_compare.rb +7 -7
  590. data/lib/puppet/util/rubygems.rb +0 -1
  591. data/lib/puppet/util/run_mode.rb +3 -3
  592. data/lib/puppet/util/selinux.rb +3 -3
  593. data/lib/puppet/util/storage.rb +1 -1
  594. data/lib/puppet/util/suidmanager.rb +13 -15
  595. data/lib/puppet/util/symbolic_file_mode.rb +8 -7
  596. data/lib/puppet/util/tagging.rb +2 -2
  597. data/lib/puppet/util/user_attr.rb +1 -1
  598. data/lib/puppet/util/watched_file.rb +2 -1
  599. data/lib/puppet/util/watcher/periodic_watcher.rb +0 -1
  600. data/lib/puppet/util/windows/access_control_list.rb +5 -4
  601. data/lib/puppet/util/windows/adsi.rb +14 -14
  602. data/lib/puppet/util/windows/com.rb +2 -2
  603. data/lib/puppet/util/windows/daemon.rb +8 -8
  604. data/lib/puppet/util/windows/eventlog.rb +4 -4
  605. data/lib/puppet/util/windows/file.rb +16 -12
  606. data/lib/puppet/util/windows/monkey_patches/process.rb +1 -1
  607. data/lib/puppet/util/windows/principal.rb +8 -6
  608. data/lib/puppet/util/windows/process.rb +28 -22
  609. data/lib/puppet/util/windows/registry.rb +47 -14
  610. data/lib/puppet/util/windows/root_certs.rb +1 -1
  611. data/lib/puppet/util/windows/security.rb +20 -18
  612. data/lib/puppet/util/windows/service.rb +4 -4
  613. data/lib/puppet/util/windows/sid.rb +8 -7
  614. data/lib/puppet/util/windows/user.rb +4 -2
  615. data/lib/puppet/util/windows.rb +1 -1
  616. data/lib/puppet/util.rb +14 -16
  617. data/lib/puppet/version.rb +1 -1
  618. data/lib/puppet/x509/cert_provider.rb +12 -12
  619. data/lib/puppet.rb +8 -7
  620. data/locales/puppet.pot +2008 -2004
  621. data/man/man5/puppet.conf.5 +2 -2
  622. data/man/man8/puppet-agent.8 +1 -1
  623. data/man/man8/puppet-apply.8 +1 -1
  624. data/man/man8/puppet-catalog.8 +1 -1
  625. data/man/man8/puppet-config.8 +1 -1
  626. data/man/man8/puppet-describe.8 +1 -1
  627. data/man/man8/puppet-device.8 +1 -1
  628. data/man/man8/puppet-doc.8 +1 -1
  629. data/man/man8/puppet-epp.8 +1 -1
  630. data/man/man8/puppet-facts.8 +1 -1
  631. data/man/man8/puppet-filebucket.8 +1 -1
  632. data/man/man8/puppet-generate.8 +1 -1
  633. data/man/man8/puppet-help.8 +1 -1
  634. data/man/man8/puppet-lookup.8 +1 -1
  635. data/man/man8/puppet-module.8 +1 -1
  636. data/man/man8/puppet-node.8 +1 -1
  637. data/man/man8/puppet-parser.8 +1 -1
  638. data/man/man8/puppet-plugin.8 +1 -1
  639. data/man/man8/puppet-report.8 +1 -1
  640. data/man/man8/puppet-resource.8 +1 -1
  641. data/man/man8/puppet-script.8 +1 -1
  642. data/man/man8/puppet-ssl.8 +1 -1
  643. data/man/man8/puppet.8 +2 -2
  644. data/tasks/generate_cert_fixtures.rake +1 -0
  645. metadata +3 -2455
  646. data/spec/fixtures/faulty_face/puppet/face/syntax.rb +0 -8
  647. data/spec/fixtures/hiera.yaml +0 -9
  648. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -92
  649. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +0 -3
  650. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +0 -2
  651. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +0 -25
  652. data/spec/fixtures/integration/application/module/environments/direnv/modules/nginx/README +0 -3
  653. data/spec/fixtures/integration/application/module/environments/direnv/modules/nginx/manifests/init.pp +0 -17
  654. data/spec/fixtures/integration/application/module/environments/direnv/modules/nginx/metadata.json +0 -20
  655. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +0 -4
  656. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +0 -3
  657. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +0 -8
  658. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +0 -25
  659. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +0 -19
  660. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +0 -20
  661. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +0 -8
  662. data/spec/fixtures/integration/node/environment/sitedir/00_a.pp +0 -2
  663. data/spec/fixtures/integration/node/environment/sitedir/01_b.pp +0 -6
  664. data/spec/fixtures/integration/node/environment/sitedir/03_empty.pp +0 -0
  665. data/spec/fixtures/integration/node/environment/sitedir/04_include.pp +0 -2
  666. data/spec/fixtures/integration/node/environment/sitedir2/00_a.pp +0 -2
  667. data/spec/fixtures/integration/node/environment/sitedir2/02_folder/01_b.pp +0 -6
  668. data/spec/fixtures/integration/node/environment/sitedir2/03_c.pp +0 -1
  669. data/spec/fixtures/integration/node/environment/sitedir2/04_include.pp +0 -2
  670. data/spec/fixtures/java.tgz +0 -0
  671. data/spec/fixtures/manifests/site.pp +0 -0
  672. data/spec/fixtures/module.tar.gz +0 -0
  673. data/spec/fixtures/releases/jamtur01-apache/Modulefile +0 -2
  674. data/spec/fixtures/releases/jamtur01-apache/files/httpd +0 -24
  675. data/spec/fixtures/releases/jamtur01-apache/files/test.vhost +0 -18
  676. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +0 -21
  677. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/type/a2mod.rb +0 -12
  678. data/spec/fixtures/releases/jamtur01-apache/manifests/dev.pp +0 -5
  679. data/spec/fixtures/releases/jamtur01-apache/manifests/init.pp +0 -34
  680. data/spec/fixtures/releases/jamtur01-apache/manifests/params.pp +0 -17
  681. data/spec/fixtures/releases/jamtur01-apache/manifests/php.pp +0 -5
  682. data/spec/fixtures/releases/jamtur01-apache/manifests/ssl.pp +0 -15
  683. data/spec/fixtures/releases/jamtur01-apache/manifests/vhost.pp +0 -15
  684. data/spec/fixtures/releases/jamtur01-apache/metadata.json +0 -1
  685. data/spec/fixtures/releases/jamtur01-apache/templates/vhost-default.conf.erb +0 -20
  686. data/spec/fixtures/releases/jamtur01-apache/tests/apache.pp +0 -1
  687. data/spec/fixtures/releases/jamtur01-apache/tests/dev.pp +0 -1
  688. data/spec/fixtures/releases/jamtur01-apache/tests/init.pp +0 -1
  689. data/spec/fixtures/releases/jamtur01-apache/tests/php.pp +0 -1
  690. data/spec/fixtures/releases/jamtur01-apache/tests/ssl.pp +0 -1
  691. data/spec/fixtures/releases/jamtur01-apache/tests/vhost.pp +0 -2
  692. data/spec/fixtures/ssl/127.0.0.1-key.pem +0 -117
  693. data/spec/fixtures/ssl/127.0.0.1.pem +0 -70
  694. data/spec/fixtures/ssl/bad-basic-constraints.pem +0 -81
  695. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +0 -81
  696. data/spec/fixtures/ssl/ca.pem +0 -81
  697. data/spec/fixtures/ssl/crl.pem +0 -40
  698. data/spec/fixtures/ssl/ec-key-openssl.pem +0 -8
  699. data/spec/fixtures/ssl/ec-key-pk8.pem +0 -5
  700. data/spec/fixtures/ssl/ec-key.pem +0 -18
  701. data/spec/fixtures/ssl/ec.pem +0 -50
  702. data/spec/fixtures/ssl/encrypted-ec-key.pem +0 -21
  703. data/spec/fixtures/ssl/encrypted-key.pem +0 -120
  704. data/spec/fixtures/ssl/intermediate-agent-crl.pem +0 -40
  705. data/spec/fixtures/ssl/intermediate-agent.pem +0 -81
  706. data/spec/fixtures/ssl/intermediate-crl.pem +0 -46
  707. data/spec/fixtures/ssl/intermediate.pem +0 -81
  708. data/spec/fixtures/ssl/netlock-arany-utf8.pem +0 -23
  709. data/spec/fixtures/ssl/oid-key.pem +0 -117
  710. data/spec/fixtures/ssl/oid.pem +0 -70
  711. data/spec/fixtures/ssl/pluto-key.pem +0 -117
  712. data/spec/fixtures/ssl/pluto.pem +0 -67
  713. data/spec/fixtures/ssl/renewed.pem +0 -67
  714. data/spec/fixtures/ssl/request-key.pem +0 -117
  715. data/spec/fixtures/ssl/request.pem +0 -62
  716. data/spec/fixtures/ssl/revoked-key.pem +0 -117
  717. data/spec/fixtures/ssl/revoked.pem +0 -67
  718. data/spec/fixtures/ssl/signed-key.pem +0 -117
  719. data/spec/fixtures/ssl/signed.pem +0 -67
  720. data/spec/fixtures/ssl/tampered-cert.pem +0 -67
  721. data/spec/fixtures/ssl/tampered-csr.pem +0 -62
  722. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +0 -5
  723. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +0 -117
  724. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +0 -70
  725. data/spec/fixtures/ssl/unknown-ca-key.pem +0 -117
  726. data/spec/fixtures/ssl/unknown-ca.pem +0 -81
  727. data/spec/fixtures/stdlib.tgz +0 -0
  728. data/spec/fixtures/unit/application/environments/production/data/common.yaml +0 -24
  729. data/spec/fixtures/unit/application/environments/production/environment.conf +0 -1
  730. data/spec/fixtures/unit/application/environments/production/manifests/site.pp +0 -1
  731. data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +0 -1
  732. data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/environment/data.pp +0 -10
  733. data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +0 -1
  734. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json +0 -3
  735. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/environment.conf +0 -2
  736. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml +0 -5
  737. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp +0 -5
  738. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml +0 -3
  739. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf +0 -2
  740. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml +0 -5
  741. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp +0 -5
  742. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml +0 -2
  743. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf +0 -2
  744. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp +0 -1
  745. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml +0 -2
  746. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp +0 -5
  747. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json +0 -9
  748. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json +0 -3
  749. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml +0 -2
  750. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json +0 -3
  751. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml +0 -2
  752. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/third_utf8.json +0 -3
  753. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/utf8.yaml +0 -3
  754. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml +0 -2
  755. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf +0 -2
  756. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +0 -22
  757. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +0 -5
  758. data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +0 -48
  759. data/spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf +0 -2
  760. data/spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp +0 -1
  761. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/data/common.yaml +0 -30
  762. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/manifests/init.pp +0 -13
  763. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json +0 -9
  764. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +0 -4
  765. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +0 -4
  766. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf +0 -2
  767. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +0 -7
  768. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp +0 -1
  769. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json +0 -3
  770. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml +0 -2
  771. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json +0 -3
  772. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server1.yaml +0 -1
  773. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server2.yaml +0 -1
  774. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml +0 -2
  775. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml +0 -2
  776. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/hiera.yaml +0 -20
  777. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp +0 -5
  778. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/metadata.json +0 -9
  779. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +0 -4
  780. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +0 -4
  781. data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +0 -2
  782. data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +0 -7
  783. data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +0 -1
  784. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +0 -6
  785. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +0 -5
  786. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +0 -2
  787. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +0 -9
  788. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +0 -4
  789. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +0 -5
  790. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +0 -3
  791. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +0 -9
  792. data/spec/fixtures/unit/data_providers/environments/production/environment.conf +0 -2
  793. data/spec/fixtures/unit/data_providers/environments/production/lib/puppet/functions/environment/data.rb +0 -9
  794. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -9
  795. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/manifests/init.pp +0 -10
  796. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/metadata.json +0 -9
  797. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/functions/data.pp +0 -6
  798. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/manifests/init.pp +0 -9
  799. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/metadata.json +0 -9
  800. data/spec/fixtures/unit/forge/bacula-releases.json +0 -128
  801. data/spec/fixtures/unit/forge/bacula.json +0 -76
  802. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  803. data/spec/fixtures/unit/functions/hiera/hiera/backend/hieraspec_backend.rb +0 -22
  804. data/spec/fixtures/unit/functions/lookup/data/common.yaml +0 -19
  805. data/spec/fixtures/unit/functions/lookup/hiera/backend/custom_backend.rb +0 -18
  806. data/spec/fixtures/unit/functions/lookup/hiera/backend/other_backend.rb +0 -7
  807. data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +0 -19
  808. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/environment.conf +0 -2
  809. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/lib/puppet/functions/environment/data.rb +0 -13
  810. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -9
  811. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/manifests/init.pp +0 -8
  812. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/metadata.json +0 -9
  813. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +0 -7
  814. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/manifests/init.pp +0 -2
  815. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/metadata.json +0 -9
  816. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -9
  817. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/manifests/init.pp +0 -2
  818. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/metadata.json +0 -9
  819. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/data/empty.json +0 -0
  820. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/hiera.yaml +0 -5
  821. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/manifests/init.pp +0 -2
  822. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/metadata.json +0 -9
  823. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/data/empty_key.json +0 -1
  824. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/hiera.yaml +0 -5
  825. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/manifests/init.pp +0 -2
  826. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/metadata.json +0 -9
  827. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/data/empty_key.yaml +0 -1
  828. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/hiera.yaml +0 -5
  829. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/manifests/init.pp +0 -2
  830. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/metadata.json +0 -9
  831. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/data/empty.yaml +0 -2
  832. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/hiera.yaml +0 -5
  833. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/manifests/init.pp +0 -2
  834. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/metadata.json +0 -9
  835. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/data/first.json +0 -4
  836. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/hiera.yaml +0 -8
  837. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/manifests/init.pp +0 -5
  838. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/metadata.json +0 -9
  839. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +0 -9
  840. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/manifests/init.pp +0 -3
  841. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/metadata.json +0 -9
  842. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/no_provider/manifests/init.pp +0 -2
  843. data/spec/fixtures/unit/indirector/data_binding/hiera/global.yaml +0 -10
  844. data/spec/fixtures/unit/indirector/data_binding/hiera/invalid.yaml +0 -1
  845. data/spec/fixtures/unit/indirector/hiera/global.yaml +0 -10
  846. data/spec/fixtures/unit/indirector/hiera/invalid.yaml +0 -1
  847. data/spec/fixtures/unit/module/trailing-comma.json +0 -24
  848. data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/init.pp +0 -3
  849. data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/wrongdefine.pp +0 -3
  850. data/spec/fixtures/unit/parser/lexer/aliastest.pp +0 -16
  851. data/spec/fixtures/unit/parser/lexer/append.pp +0 -11
  852. data/spec/fixtures/unit/parser/lexer/argumentdefaults.pp +0 -14
  853. data/spec/fixtures/unit/parser/lexer/arithmetic_expression.pp +0 -8
  854. data/spec/fixtures/unit/parser/lexer/arraytrailingcomma.pp +0 -3
  855. data/spec/fixtures/unit/parser/lexer/casestatement.pp +0 -65
  856. data/spec/fixtures/unit/parser/lexer/classheirarchy.pp +0 -15
  857. data/spec/fixtures/unit/parser/lexer/classincludes.pp +0 -17
  858. data/spec/fixtures/unit/parser/lexer/classpathtest.pp +0 -11
  859. data/spec/fixtures/unit/parser/lexer/collection.pp +0 -10
  860. data/spec/fixtures/unit/parser/lexer/collection_override.pp +0 -8
  861. data/spec/fixtures/unit/parser/lexer/collection_within_virtual_definitions.pp +0 -20
  862. data/spec/fixtures/unit/parser/lexer/componentmetaparams.pp +0 -11
  863. data/spec/fixtures/unit/parser/lexer/componentrequire.pp +0 -8
  864. data/spec/fixtures/unit/parser/lexer/deepclassheirarchy.pp +0 -23
  865. data/spec/fixtures/unit/parser/lexer/defineoverrides.pp +0 -17
  866. data/spec/fixtures/unit/parser/lexer/emptyclass.pp +0 -9
  867. data/spec/fixtures/unit/parser/lexer/emptyexec.pp +0 -3
  868. data/spec/fixtures/unit/parser/lexer/emptyifelse.pp +0 -9
  869. data/spec/fixtures/unit/parser/lexer/falsevalues.pp +0 -3
  870. data/spec/fixtures/unit/parser/lexer/filecreate.pp +0 -11
  871. data/spec/fixtures/unit/parser/lexer/fqdefinition.pp +0 -5
  872. data/spec/fixtures/unit/parser/lexer/fqparents.pp +0 -11
  873. data/spec/fixtures/unit/parser/lexer/funccomma.pp +0 -5
  874. data/spec/fixtures/unit/parser/lexer/hash.pp +0 -33
  875. data/spec/fixtures/unit/parser/lexer/ifexpression.pp +0 -12
  876. data/spec/fixtures/unit/parser/lexer/implicititeration.pp +0 -15
  877. data/spec/fixtures/unit/parser/lexer/multilinecomments.pp +0 -10
  878. data/spec/fixtures/unit/parser/lexer/multipleclass.pp +0 -9
  879. data/spec/fixtures/unit/parser/lexer/multipleinstances.pp +0 -7
  880. data/spec/fixtures/unit/parser/lexer/multisubs.pp +0 -13
  881. data/spec/fixtures/unit/parser/lexer/namevartest.pp +0 -9
  882. data/spec/fixtures/unit/parser/lexer/scopetest.pp +0 -13
  883. data/spec/fixtures/unit/parser/lexer/selectorvalues.pp +0 -49
  884. data/spec/fixtures/unit/parser/lexer/simpledefaults.pp +0 -5
  885. data/spec/fixtures/unit/parser/lexer/simpleselector.pp +0 -38
  886. data/spec/fixtures/unit/parser/lexer/singleary.pp +0 -19
  887. data/spec/fixtures/unit/parser/lexer/singlequote.pp +0 -11
  888. data/spec/fixtures/unit/parser/lexer/singleselector.pp +0 -22
  889. data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +0 -11
  890. data/spec/fixtures/unit/parser/lexer/tag.pp +0 -9
  891. data/spec/fixtures/unit/parser/lexer/tagged.pp +0 -35
  892. data/spec/fixtures/unit/parser/lexer/virtualresources.pp +0 -14
  893. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +0 -10
  894. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/lib/puppet/bindings/confdirtest.rb +0 -10
  895. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet/bindings/awesome2/default.rb +0 -20
  896. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +0 -18
  897. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/lib/puppet/bindings/bad/default.rb +0 -5
  898. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/lib/puppet/bindings/good/default.rb +0 -6
  899. data/spec/fixtures/unit/pops/binder/config/binder_config/nolayer/binder_config.yaml +0 -6
  900. data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +0 -9
  901. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp +0 -3
  902. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/callee.rb +0 -5
  903. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +0 -6
  904. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/type/usee_type.rb +0 -5
  905. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +0 -8
  906. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +0 -1
  907. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb +0 -5
  908. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +0 -5
  909. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +0 -5
  910. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +0 -5
  911. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller.rb +0 -5
  912. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +0 -5
  913. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +0 -5
  914. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +0 -5
  915. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +0 -5
  916. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +0 -87
  917. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/metadata.json +0 -10
  918. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +0 -1
  919. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +0 -1
  920. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load.rb +0 -11
  921. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load2.rb +0 -11
  922. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load3.rb +0 -11
  923. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load4.rb +0 -11
  924. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load5.rb +0 -12
  925. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/callee.rb +0 -8
  926. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/callee_ws.rb +0 -8
  927. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/func_with_syntax_error.rb +0 -9
  928. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/good_func_load.rb +0 -9
  929. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/metadata.json +0 -9
  930. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcalled.pp +0 -3
  931. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller.pp +0 -3
  932. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller4.pp +0 -3
  933. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/caller.rb +0 -5
  934. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/caller_ws.rb +0 -12
  935. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/callingpuppet.rb +0 -5
  936. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/metadata.json +0 -9
  937. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/functions/hello.pp +0 -3
  938. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/manifests/init.pp +0 -3
  939. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/metadata.json +0 -10
  940. data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +0 -10
  941. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/hello.pp +0 -3
  942. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/subspace/hello.pp +0 -3
  943. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/modulea/rb_func_a.rb +0 -5
  944. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/rb_func_a.rb +0 -5
  945. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/manifests/init.pp +0 -3
  946. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/metadata.json +0 -10
  947. data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/lib/puppet/functions/moduleb/rb_func_b.rb +0 -6
  948. data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/manifests/init.pp +0 -3
  949. data/spec/fixtures/unit/pops/parser/lexer/aliastest.pp +0 -16
  950. data/spec/fixtures/unit/pops/parser/lexer/append.pp +0 -11
  951. data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +0 -14
  952. data/spec/fixtures/unit/pops/parser/lexer/arithmetic_expression.pp +0 -8
  953. data/spec/fixtures/unit/pops/parser/lexer/arraytrailingcomma.pp +0 -3
  954. data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +0 -65
  955. data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +0 -15
  956. data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +0 -17
  957. data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +0 -11
  958. data/spec/fixtures/unit/pops/parser/lexer/collection.pp +0 -10
  959. data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +0 -8
  960. data/spec/fixtures/unit/pops/parser/lexer/collection_within_virtual_definitions.pp +0 -20
  961. data/spec/fixtures/unit/pops/parser/lexer/componentmetaparams.pp +0 -11
  962. data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +0 -8
  963. data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +0 -23
  964. data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +0 -17
  965. data/spec/fixtures/unit/pops/parser/lexer/emptyclass.pp +0 -9
  966. data/spec/fixtures/unit/pops/parser/lexer/emptyexec.pp +0 -3
  967. data/spec/fixtures/unit/pops/parser/lexer/emptyifelse.pp +0 -9
  968. data/spec/fixtures/unit/pops/parser/lexer/falsevalues.pp +0 -3
  969. data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +0 -11
  970. data/spec/fixtures/unit/pops/parser/lexer/fqdefinition.pp +0 -5
  971. data/spec/fixtures/unit/pops/parser/lexer/fqparents.pp +0 -11
  972. data/spec/fixtures/unit/pops/parser/lexer/funccomma.pp +0 -5
  973. data/spec/fixtures/unit/pops/parser/lexer/hash.pp +0 -33
  974. data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +0 -12
  975. data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +0 -15
  976. data/spec/fixtures/unit/pops/parser/lexer/multilinecomments.pp +0 -10
  977. data/spec/fixtures/unit/pops/parser/lexer/multipleclass.pp +0 -9
  978. data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +0 -7
  979. data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +0 -13
  980. data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +0 -9
  981. data/spec/fixtures/unit/pops/parser/lexer/scopetest.pp +0 -13
  982. data/spec/fixtures/unit/pops/parser/lexer/selectorvalues.pp +0 -49
  983. data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +0 -5
  984. data/spec/fixtures/unit/pops/parser/lexer/simpleselector.pp +0 -38
  985. data/spec/fixtures/unit/pops/parser/lexer/singleary.pp +0 -19
  986. data/spec/fixtures/unit/pops/parser/lexer/singlequote.pp +0 -11
  987. data/spec/fixtures/unit/pops/parser/lexer/singleselector.pp +0 -22
  988. data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +0 -11
  989. data/spec/fixtures/unit/pops/parser/lexer/tag.pp +0 -9
  990. data/spec/fixtures/unit/pops/parser/lexer/tagged.pp +0 -35
  991. data/spec/fixtures/unit/pops/parser/lexer/virtualresources.pp +0 -14
  992. data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_input.out +0 -1
  993. data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_output.out +0 -1
  994. data/spec/fixtures/unit/provider/cron/crontab/single_line.yaml +0 -272
  995. data/spec/fixtures/unit/provider/cron/crontab/vixie_header.txt +0 -3
  996. data/spec/fixtures/unit/provider/cron/parsed/managed +0 -6
  997. data/spec/fixtures/unit/provider/cron/parsed/simple +0 -9
  998. data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +0 -19
  999. data/spec/fixtures/unit/provider/package/gem/gem-list-single-package +0 -4
  1000. data/spec/fixtures/unit/provider/package/gem/line-with-1.8.5-warning +0 -14
  1001. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.detail +0 -19
  1002. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.list +0 -10
  1003. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.query +0 -1
  1004. data/spec/fixtures/unit/provider/package/openbsd/pkginfo_flavors.list +0 -2
  1005. data/spec/fixtures/unit/provider/package/pkg/dummy_implicit_version +0 -3
  1006. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris10 +0 -1
  1007. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.certificate_warning +0 -2
  1008. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.installed +0 -1
  1009. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.known +0 -1
  1010. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.installed +0 -1
  1011. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.known +0 -1
  1012. data/spec/fixtures/unit/provider/package/pkg/incomplete +0 -1
  1013. data/spec/fixtures/unit/provider/package/pkg/solaris11 +0 -2
  1014. data/spec/fixtures/unit/provider/package/pkg/unknown_status +0 -12
  1015. data/spec/fixtures/unit/provider/package/pkgng/pkg.query +0 -7
  1016. data/spec/fixtures/unit/provider/package/pkgng/pkg.query.zsh +0 -1
  1017. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +0 -5
  1018. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +0 -30
  1019. data/spec/fixtures/unit/provider/package/sun/dummy.server +0 -12
  1020. data/spec/fixtures/unit/provider/package/sun/simple +0 -24
  1021. data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +0 -187
  1022. data/spec/fixtures/unit/provider/package/yum/yum-check-update-multiline.txt +0 -201
  1023. data/spec/fixtures/unit/provider/package/yum/yum-check-update-obsoletes.txt +0 -195
  1024. data/spec/fixtures/unit/provider/package/yum/yum-check-update-plugin-output.txt +0 -36
  1025. data/spec/fixtures/unit/provider/package/yum/yum-check-update-security.txt +0 -184
  1026. data/spec/fixtures/unit/provider/package/yum/yum-check-update-simple.txt +0 -13
  1027. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +0 -9
  1028. data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-SLES11sp1.out +0 -369
  1029. data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-empty.out +0 -3
  1030. data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +0 -13
  1031. data/spec/fixtures/unit/provider/parsedfile/aliases.txt +0 -2
  1032. data/spec/fixtures/unit/provider/parsedfile/simple.txt +0 -7
  1033. data/spec/fixtures/unit/provider/service/base/ps_ef.mixed_encoding +0 -3
  1034. data/spec/fixtures/unit/provider/service/gentoo/rc_update_show +0 -30
  1035. data/spec/fixtures/unit/provider/service/openbsd/rcctl_getall +0 -6
  1036. data/spec/fixtures/unit/provider/service/openrc/rcservice_list +0 -8
  1037. data/spec/fixtures/unit/provider/service/openrc/rcstatus +0 -43
  1038. data/spec/fixtures/unit/provider/service/smf/svcs_fmri.out +0 -6
  1039. data/spec/fixtures/unit/provider/service/smf/svcs_instances.out +0 -4
  1040. data/spec/fixtures/unit/provider/service/smf/svcs_multiple_fmris.out +0 -13
  1041. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +0 -16
  1042. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +0 -9
  1043. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -36
  1044. data/spec/fixtures/unit/reports/tagmail/tagmail_email.conf +0 -2
  1045. data/spec/fixtures/unit/reports/tagmail/tagmail_failers.conf +0 -3
  1046. data/spec/fixtures/unit/reports/tagmail/tagmail_passers.conf +0 -30
  1047. data/spec/fixtures/unit/ssl/certificate/old-style-cert-exts.pem +0 -33
  1048. data/spec/fixtures/unit/ssl/certificate_request/old-style-cert-request.pem +0 -28
  1049. data/spec/fixtures/unit/type/user/authorized_keys +0 -6
  1050. data/spec/fixtures/unit/util/filetype/aixtab_output +0 -44
  1051. data/spec/fixtures/unit/util/filetype/suntab_output +0 -9
  1052. data/spec/fixtures/unit/util/monkey_patches/x509.pem +0 -32
  1053. data/spec/fixtures/unit/util/rdoc/basic.pp +0 -16
  1054. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +0 -104
  1055. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +0 -108
  1056. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +0 -108
  1057. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +0 -104
  1058. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +0 -100
  1059. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +0 -104
  1060. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +0 -104
  1061. data/spec/fixtures/yaml/report2.6.x.yaml +0 -190
  1062. data/spec/fixtures/yaml/test.local.yaml +0 -16
  1063. data/spec/integration/agent/logging_spec.rb +0 -179
  1064. data/spec/integration/application/agent_spec.rb +0 -1067
  1065. data/spec/integration/application/apply_spec.rb +0 -781
  1066. data/spec/integration/application/doc_spec.rb +0 -24
  1067. data/spec/integration/application/filebucket_spec.rb +0 -255
  1068. data/spec/integration/application/help_spec.rb +0 -44
  1069. data/spec/integration/application/lookup_spec.rb +0 -275
  1070. data/spec/integration/application/module_spec.rb +0 -230
  1071. data/spec/integration/application/plugin_spec.rb +0 -145
  1072. data/spec/integration/application/resource_spec.rb +0 -68
  1073. data/spec/integration/application/ssl_spec.rb +0 -20
  1074. data/spec/integration/configurer_spec.rb +0 -166
  1075. data/spec/integration/data_binding_spec.rb +0 -278
  1076. data/spec/integration/defaults_spec.rb +0 -279
  1077. data/spec/integration/directory_environments_spec.rb +0 -67
  1078. data/spec/integration/environments/default_manifest_spec.rb +0 -215
  1079. data/spec/integration/environments/setting_hooks_spec.rb +0 -27
  1080. data/spec/integration/environments/settings_interpolation_spec.rb +0 -106
  1081. data/spec/integration/environments/settings_spec.rb +0 -128
  1082. data/spec/integration/http/client_spec.rb +0 -229
  1083. data/spec/integration/indirector/catalog/compiler_spec.rb +0 -75
  1084. data/spec/integration/indirector/direct_file_server_spec.rb +0 -90
  1085. data/spec/integration/indirector/facts/facter_spec.rb +0 -168
  1086. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -106
  1087. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -75
  1088. data/spec/integration/l10n/compiler_spec.rb +0 -37
  1089. data/spec/integration/network/formats_spec.rb +0 -90
  1090. data/spec/integration/network/http/api/indirected_routes_spec.rb +0 -60
  1091. data/spec/integration/network/http_pool_spec.rb +0 -275
  1092. data/spec/integration/node/environment_spec.rb +0 -170
  1093. data/spec/integration/node/facts_spec.rb +0 -40
  1094. data/spec/integration/node_spec.rb +0 -77
  1095. data/spec/integration/parser/catalog_spec.rb +0 -68
  1096. data/spec/integration/parser/class_spec.rb +0 -33
  1097. data/spec/integration/parser/collection_spec.rb +0 -362
  1098. data/spec/integration/parser/compiler_spec.rb +0 -1221
  1099. data/spec/integration/parser/conditionals_spec.rb +0 -95
  1100. data/spec/integration/parser/dynamic_scoping_spec.rb +0 -66
  1101. data/spec/integration/parser/environment_spec.rb +0 -47
  1102. data/spec/integration/parser/node_spec.rb +0 -163
  1103. data/spec/integration/parser/parameter_defaults_spec.rb +0 -358
  1104. data/spec/integration/parser/pcore_resource_spec.rb +0 -243
  1105. data/spec/integration/parser/resource_expressions_spec.rb +0 -222
  1106. data/spec/integration/parser/scope_spec.rb +0 -735
  1107. data/spec/integration/parser/script_compiler_spec.rb +0 -113
  1108. data/spec/integration/parser/undef_param_spec.rb +0 -95
  1109. data/spec/integration/provider/file/windows_spec.rb +0 -162
  1110. data/spec/integration/resource/catalog_spec.rb +0 -47
  1111. data/spec/integration/resource/type_collection_spec.rb +0 -88
  1112. data/spec/integration/transaction/report_spec.rb +0 -706
  1113. data/spec/integration/transaction_spec.rb +0 -553
  1114. data/spec/integration/type/exec_spec.rb +0 -114
  1115. data/spec/integration/type/file_spec.rb +0 -2012
  1116. data/spec/integration/type/notify_spec.rb +0 -46
  1117. data/spec/integration/type/package_spec.rb +0 -200
  1118. data/spec/integration/type/tidy_spec.rb +0 -45
  1119. data/spec/integration/type_spec.rb +0 -30
  1120. data/spec/integration/util/autoload_spec.rb +0 -104
  1121. data/spec/integration/util/execution_spec.rb +0 -104
  1122. data/spec/integration/util/rdoc/parser_spec.rb +0 -171
  1123. data/spec/integration/util/settings_spec.rb +0 -115
  1124. data/spec/integration/util/windows/adsi_spec.rb +0 -207
  1125. data/spec/integration/util/windows/monkey_patches/process_spec.rb +0 -231
  1126. data/spec/integration/util/windows/principal_spec.rb +0 -279
  1127. data/spec/integration/util/windows/process_spec.rb +0 -96
  1128. data/spec/integration/util/windows/registry_spec.rb +0 -334
  1129. data/spec/integration/util/windows/security_spec.rb +0 -1010
  1130. data/spec/integration/util/windows/user_spec.rb +0 -226
  1131. data/spec/integration/util_spec.rb +0 -104
  1132. data/spec/lib/matchers/containment_matchers.rb +0 -52
  1133. data/spec/lib/matchers/include_in_order.rb +0 -20
  1134. data/spec/lib/matchers/include_in_order_spec.rb +0 -30
  1135. data/spec/lib/matchers/json.rb +0 -132
  1136. data/spec/lib/matchers/match_tokens2.rb +0 -74
  1137. data/spec/lib/matchers/relationship_graph_matchers.rb +0 -48
  1138. data/spec/lib/matchers/resource.rb +0 -74
  1139. data/spec/lib/puppet/certificate_factory.rb +0 -218
  1140. data/spec/lib/puppet/face/1.0.0/huzzah.rb +0 -8
  1141. data/spec/lib/puppet/face/basetest.rb +0 -51
  1142. data/spec/lib/puppet/face/huzzah/obsolete.rb +0 -6
  1143. data/spec/lib/puppet/face/huzzah.rb +0 -8
  1144. data/spec/lib/puppet/face/version_matching.rb +0 -12
  1145. data/spec/lib/puppet/indirector/indirector_testing/json.rb +0 -6
  1146. data/spec/lib/puppet/indirector/indirector_testing/memory.rb +0 -7
  1147. data/spec/lib/puppet/indirector/indirector_testing/msgpack.rb +0 -6
  1148. data/spec/lib/puppet/indirector_proxy.rb +0 -34
  1149. data/spec/lib/puppet/indirector_testing.rb +0 -31
  1150. data/spec/lib/puppet/test_ca.rb +0 -157
  1151. data/spec/lib/puppet_spec/character_encoding.rb +0 -12
  1152. data/spec/lib/puppet_spec/compiler.rb +0 -112
  1153. data/spec/lib/puppet_spec/files.rb +0 -107
  1154. data/spec/lib/puppet_spec/fixtures.rb +0 -52
  1155. data/spec/lib/puppet_spec/handler.rb +0 -53
  1156. data/spec/lib/puppet_spec/https.rb +0 -95
  1157. data/spec/lib/puppet_spec/language.rb +0 -75
  1158. data/spec/lib/puppet_spec/matchers.rb +0 -68
  1159. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +0 -56
  1160. data/spec/lib/puppet_spec/module_tool/stub_source.rb +0 -136
  1161. data/spec/lib/puppet_spec/modules.rb +0 -82
  1162. data/spec/lib/puppet_spec/network.rb +0 -127
  1163. data/spec/lib/puppet_spec/pops.rb +0 -29
  1164. data/spec/lib/puppet_spec/puppetserver.rb +0 -180
  1165. data/spec/lib/puppet_spec/scope.rb +0 -13
  1166. data/spec/lib/puppet_spec/settings.rb +0 -39
  1167. data/spec/lib/puppet_spec/ssl.rb +0 -265
  1168. data/spec/lib/puppet_spec/unindent.rb +0 -5
  1169. data/spec/lib/puppet_spec/verbose.rb +0 -20
  1170. data/spec/shared_behaviours/all_parsedfile_providers.rb +0 -21
  1171. data/spec/shared_behaviours/an_indirector_face.rb +0 -6
  1172. data/spec/shared_behaviours/documentation_on_faces.rb +0 -261
  1173. data/spec/shared_behaviours/file_server_terminus.rb +0 -38
  1174. data/spec/shared_behaviours/file_serving.rb +0 -73
  1175. data/spec/shared_behaviours/hiera_indirections.rb +0 -98
  1176. data/spec/shared_behaviours/iterative_functions.rb +0 -68
  1177. data/spec/shared_behaviours/memory_terminus.rb +0 -28
  1178. data/spec/shared_behaviours/path_parameters.rb +0 -160
  1179. data/spec/shared_behaviours/store_configs_terminus.rb +0 -21
  1180. data/spec/shared_behaviours/things_that_declare_options.rb +0 -262
  1181. data/spec/shared_contexts/checksum.rb +0 -65
  1182. data/spec/shared_contexts/digests.rb +0 -100
  1183. data/spec/shared_contexts/https.rb +0 -29
  1184. data/spec/shared_contexts/l10n.rb +0 -32
  1185. data/spec/shared_contexts/provider.rb +0 -16
  1186. data/spec/shared_contexts/types_setup.rb +0 -204
  1187. data/spec/shared_examples/rhel_package_provider.rb +0 -398
  1188. data/spec/spec_helper.rb +0 -240
  1189. data/spec/unit/agent/disabler_spec.rb +0 -63
  1190. data/spec/unit/agent/locker_spec.rb +0 -99
  1191. data/spec/unit/agent_spec.rb +0 -411
  1192. data/spec/unit/application/agent_spec.rb +0 -640
  1193. data/spec/unit/application/apply_spec.rb +0 -559
  1194. data/spec/unit/application/config_spec.rb +0 -232
  1195. data/spec/unit/application/describe_spec.rb +0 -135
  1196. data/spec/unit/application/device_spec.rb +0 -616
  1197. data/spec/unit/application/doc_spec.rb +0 -333
  1198. data/spec/unit/application/face_base_spec.rb +0 -454
  1199. data/spec/unit/application/facts_spec.rb +0 -139
  1200. data/spec/unit/application/filebucket_spec.rb +0 -319
  1201. data/spec/unit/application/indirection_base_spec.rb +0 -50
  1202. data/spec/unit/application/lookup_spec.rb +0 -698
  1203. data/spec/unit/application/resource_spec.rb +0 -229
  1204. data/spec/unit/application/ssl_spec.rb +0 -507
  1205. data/spec/unit/application_spec.rb +0 -730
  1206. data/spec/unit/certificate_factory_spec.rb +0 -170
  1207. data/spec/unit/concurrent/lock_spec.rb +0 -29
  1208. data/spec/unit/concurrent/thread_local_singleton_spec.rb +0 -39
  1209. data/spec/unit/configurer/downloader_spec.rb +0 -252
  1210. data/spec/unit/configurer/fact_handler_spec.rb +0 -147
  1211. data/spec/unit/configurer/plugin_handler_spec.rb +0 -152
  1212. data/spec/unit/configurer_spec.rb +0 -1488
  1213. data/spec/unit/confine/exists_spec.rb +0 -82
  1214. data/spec/unit/confine/false_spec.rb +0 -78
  1215. data/spec/unit/confine/feature_spec.rb +0 -59
  1216. data/spec/unit/confine/true_spec.rb +0 -78
  1217. data/spec/unit/confine/variable_spec.rb +0 -105
  1218. data/spec/unit/confine_collection_spec.rb +0 -132
  1219. data/spec/unit/confine_spec.rb +0 -99
  1220. data/spec/unit/confiner_spec.rb +0 -61
  1221. data/spec/unit/context/trusted_information_spec.rb +0 -213
  1222. data/spec/unit/context_spec.rb +0 -217
  1223. data/spec/unit/daemon_spec.rb +0 -176
  1224. data/spec/unit/data_binding_spec.rb +0 -11
  1225. data/spec/unit/data_providers/function_data_provider_spec.rb +0 -122
  1226. data/spec/unit/data_providers/hiera_data_provider_spec.rb +0 -362
  1227. data/spec/unit/datatypes_spec.rb +0 -352
  1228. data/spec/unit/defaults_spec.rb +0 -182
  1229. data/spec/unit/environments_spec.rb +0 -1186
  1230. data/spec/unit/etc_spec.rb +0 -465
  1231. data/spec/unit/external/pson_spec.rb +0 -58
  1232. data/spec/unit/face/config_spec.rb +0 -402
  1233. data/spec/unit/face/epp_face_spec.rb +0 -385
  1234. data/spec/unit/face/facts_spec.rb +0 -78
  1235. data/spec/unit/face/generate_spec.rb +0 -293
  1236. data/spec/unit/face/help_spec.rb +0 -208
  1237. data/spec/unit/face/module/install_spec.rb +0 -40
  1238. data/spec/unit/face/module/list_spec.rb +0 -256
  1239. data/spec/unit/face/module/uninstall_spec.rb +0 -45
  1240. data/spec/unit/face/module/upgrade_spec.rb +0 -26
  1241. data/spec/unit/face/node_spec.rb +0 -129
  1242. data/spec/unit/face/parser_spec.rb +0 -310
  1243. data/spec/unit/face/plugin_spec.rb +0 -158
  1244. data/spec/unit/face_spec.rb +0 -1
  1245. data/spec/unit/facter_impl_spec.rb +0 -31
  1246. data/spec/unit/file_bucket/dipper_spec.rb +0 -405
  1247. data/spec/unit/file_bucket/file_spec.rb +0 -58
  1248. data/spec/unit/file_serving/base_spec.rb +0 -164
  1249. data/spec/unit/file_serving/configuration/parser_spec.rb +0 -206
  1250. data/spec/unit/file_serving/configuration_spec.rb +0 -240
  1251. data/spec/unit/file_serving/content_spec.rb +0 -98
  1252. data/spec/unit/file_serving/fileset_spec.rb +0 -417
  1253. data/spec/unit/file_serving/http_metadata_spec.rb +0 -109
  1254. data/spec/unit/file_serving/metadata_spec.rb +0 -551
  1255. data/spec/unit/file_serving/mount/file_spec.rb +0 -188
  1256. data/spec/unit/file_serving/mount/locales_spec.rb +0 -72
  1257. data/spec/unit/file_serving/mount/modules_spec.rb +0 -69
  1258. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +0 -72
  1259. data/spec/unit/file_serving/mount/plugins_spec.rb +0 -72
  1260. data/spec/unit/file_serving/mount/scripts_spec.rb +0 -69
  1261. data/spec/unit/file_serving/mount/tasks_spec.rb +0 -71
  1262. data/spec/unit/file_serving/mount_spec.rb +0 -30
  1263. data/spec/unit/file_serving/terminus_helper_spec.rb +0 -114
  1264. data/spec/unit/file_serving/terminus_selector_spec.rb +0 -84
  1265. data/spec/unit/file_system/path_pattern_spec.rb +0 -153
  1266. data/spec/unit/file_system/uniquefile_spec.rb +0 -245
  1267. data/spec/unit/file_system_spec.rb +0 -1198
  1268. data/spec/unit/forge/errors_spec.rb +0 -80
  1269. data/spec/unit/forge/forge_spec.rb +0 -69
  1270. data/spec/unit/forge/module_release_spec.rb +0 -331
  1271. data/spec/unit/forge/repository_spec.rb +0 -154
  1272. data/spec/unit/forge_spec.rb +0 -210
  1273. data/spec/unit/functions/abs_spec.rb +0 -70
  1274. data/spec/unit/functions/all_spec.rb +0 -97
  1275. data/spec/unit/functions/annotate_spec.rb +0 -175
  1276. data/spec/unit/functions/any_spec.rb +0 -109
  1277. data/spec/unit/functions/assert_type_spec.rb +0 -97
  1278. data/spec/unit/functions/binary_file_spec.rb +0 -46
  1279. data/spec/unit/functions/break_spec.rb +0 -207
  1280. data/spec/unit/functions/call_spec.rb +0 -131
  1281. data/spec/unit/functions/camelcase_spec.rb +0 -34
  1282. data/spec/unit/functions/capitalize_spec.rb +0 -34
  1283. data/spec/unit/functions/ceiling_spec.rb +0 -65
  1284. data/spec/unit/functions/chomp_spec.rb +0 -46
  1285. data/spec/unit/functions/chop_spec.rb +0 -38
  1286. data/spec/unit/functions/compare_spec.rb +0 -147
  1287. data/spec/unit/functions/contain_spec.rb +0 -297
  1288. data/spec/unit/functions/convert_to_spec.rb +0 -25
  1289. data/spec/unit/functions/defined_spec.rb +0 -288
  1290. data/spec/unit/functions/dig_spec.rb +0 -58
  1291. data/spec/unit/functions/downcase_spec.rb +0 -34
  1292. data/spec/unit/functions/each_spec.rb +0 -107
  1293. data/spec/unit/functions/empty_spec.rb +0 -87
  1294. data/spec/unit/functions/epp_spec.rb +0 -178
  1295. data/spec/unit/functions/filter_spec.rb +0 -145
  1296. data/spec/unit/functions/find_file_spec.rb +0 -69
  1297. data/spec/unit/functions/find_template_spec.rb +0 -69
  1298. data/spec/unit/functions/flatten_spec.rb +0 -31
  1299. data/spec/unit/functions/floor_spec.rb +0 -65
  1300. data/spec/unit/functions/get_spec.rb +0 -135
  1301. data/spec/unit/functions/getvar_spec.rb +0 -121
  1302. data/spec/unit/functions/group_by_spec.rb +0 -40
  1303. data/spec/unit/functions/hiera_spec.rb +0 -495
  1304. data/spec/unit/functions/include_spec.rb +0 -186
  1305. data/spec/unit/functions/index_spec.rb +0 -184
  1306. data/spec/unit/functions/inline_epp_spec.rb +0 -120
  1307. data/spec/unit/functions/join_spec.rb +0 -33
  1308. data/spec/unit/functions/keys_spec.rb +0 -31
  1309. data/spec/unit/functions/length_spec.rb +0 -50
  1310. data/spec/unit/functions/lest_spec.rb +0 -34
  1311. data/spec/unit/functions/logging_spec.rb +0 -62
  1312. data/spec/unit/functions/lookup_fixture_spec.rb +0 -687
  1313. data/spec/unit/functions/lookup_spec.rb +0 -3415
  1314. data/spec/unit/functions/lstrip_spec.rb +0 -30
  1315. data/spec/unit/functions/map_spec.rb +0 -163
  1316. data/spec/unit/functions/match_spec.rb +0 -74
  1317. data/spec/unit/functions/max_spec.rb +0 -158
  1318. data/spec/unit/functions/min_spec.rb +0 -158
  1319. data/spec/unit/functions/module_directory_spec.rb +0 -43
  1320. data/spec/unit/functions/new_spec.rb +0 -776
  1321. data/spec/unit/functions/next_spec.rb +0 -93
  1322. data/spec/unit/functions/partition_spec.rb +0 -40
  1323. data/spec/unit/functions/reduce_spec.rb +0 -85
  1324. data/spec/unit/functions/regsubst_spec.rb +0 -114
  1325. data/spec/unit/functions/require_spec.rb +0 -82
  1326. data/spec/unit/functions/return_spec.rb +0 -109
  1327. data/spec/unit/functions/reverse_each_spec.rb +0 -108
  1328. data/spec/unit/functions/round_spec.rb +0 -41
  1329. data/spec/unit/functions/rstrip_spec.rb +0 -30
  1330. data/spec/unit/functions/scanf_spec.rb +0 -32
  1331. data/spec/unit/functions/shared.rb +0 -94
  1332. data/spec/unit/functions/size_spec.rb +0 -50
  1333. data/spec/unit/functions/slice_spec.rb +0 -136
  1334. data/spec/unit/functions/sort_spec.rb +0 -79
  1335. data/spec/unit/functions/split_spec.rb +0 -59
  1336. data/spec/unit/functions/step_spec.rb +0 -113
  1337. data/spec/unit/functions/strftime_spec.rb +0 -152
  1338. data/spec/unit/functions/strip_spec.rb +0 -30
  1339. data/spec/unit/functions/then_spec.rb +0 -40
  1340. data/spec/unit/functions/tree_each_spec.rb +0 -493
  1341. data/spec/unit/functions/type_spec.rb +0 -35
  1342. data/spec/unit/functions/unique_spec.rb +0 -111
  1343. data/spec/unit/functions/unwrap_spec.rb +0 -37
  1344. data/spec/unit/functions/upcase_spec.rb +0 -34
  1345. data/spec/unit/functions/values_spec.rb +0 -30
  1346. data/spec/unit/functions/versioncmp_spec.rb +0 -70
  1347. data/spec/unit/functions/with_spec.rb +0 -31
  1348. data/spec/unit/functions4_spec.rb +0 -1046
  1349. data/spec/unit/gettext/config_spec.rb +0 -156
  1350. data/spec/unit/gettext/module_loading_spec.rb +0 -53
  1351. data/spec/unit/graph/key_spec.rb +0 -41
  1352. data/spec/unit/graph/rb_tree_map_spec.rb +0 -570
  1353. data/spec/unit/graph/relationship_graph_spec.rb +0 -401
  1354. data/spec/unit/graph/sequential_prioritizer_spec.rb +0 -32
  1355. data/spec/unit/graph/simple_graph_spec.rb +0 -759
  1356. data/spec/unit/hiera/scope_spec.rb +0 -105
  1357. data/spec/unit/hiera_puppet_spec.rb +0 -159
  1358. data/spec/unit/http/client_spec.rb +0 -937
  1359. data/spec/unit/http/dns_spec.rb +0 -281
  1360. data/spec/unit/http/external_client_spec.rb +0 -201
  1361. data/spec/unit/http/factory_spec.rb +0 -160
  1362. data/spec/unit/http/pool_entry_spec.rb +0 -49
  1363. data/spec/unit/http/pool_spec.rb +0 -401
  1364. data/spec/unit/http/proxy_spec.rb +0 -347
  1365. data/spec/unit/http/resolver_spec.rb +0 -133
  1366. data/spec/unit/http/response_spec.rb +0 -75
  1367. data/spec/unit/http/service/ca_spec.rb +0 -281
  1368. data/spec/unit/http/service/compiler_spec.rb +0 -746
  1369. data/spec/unit/http/service/file_server_spec.rb +0 -309
  1370. data/spec/unit/http/service/puppetserver_spec.rb +0 -112
  1371. data/spec/unit/http/service/report_spec.rb +0 -107
  1372. data/spec/unit/http/service_spec.rb +0 -137
  1373. data/spec/unit/http/session_spec.rb +0 -309
  1374. data/spec/unit/http/site_spec.rb +0 -96
  1375. data/spec/unit/indirector/catalog/compiler_spec.rb +0 -1238
  1376. data/spec/unit/indirector/catalog/json_spec.rb +0 -66
  1377. data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -11
  1378. data/spec/unit/indirector/catalog/rest_spec.rb +0 -91
  1379. data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -16
  1380. data/spec/unit/indirector/catalog/yaml_spec.rb +0 -23
  1381. data/spec/unit/indirector/data_binding/hiera_spec.rb +0 -19
  1382. data/spec/unit/indirector/data_binding/none_spec.rb +0 -28
  1383. data/spec/unit/indirector/direct_file_server_spec.rb +0 -87
  1384. data/spec/unit/indirector/envelope_spec.rb +0 -32
  1385. data/spec/unit/indirector/exec_spec.rb +0 -63
  1386. data/spec/unit/indirector/face_spec.rb +0 -80
  1387. data/spec/unit/indirector/facts/facter_spec.rb +0 -290
  1388. data/spec/unit/indirector/facts/json_spec.rb +0 -255
  1389. data/spec/unit/indirector/facts/network_device_spec.rb +0 -77
  1390. data/spec/unit/indirector/facts/rest_spec.rb +0 -99
  1391. data/spec/unit/indirector/facts/store_configs_spec.rb +0 -16
  1392. data/spec/unit/indirector/facts/yaml_spec.rb +0 -255
  1393. data/spec/unit/indirector/file_bucket_file/file_spec.rb +0 -426
  1394. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +0 -89
  1395. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +0 -46
  1396. data/spec/unit/indirector/file_content/file_server_spec.rb +0 -13
  1397. data/spec/unit/indirector/file_content/file_spec.rb +0 -13
  1398. data/spec/unit/indirector/file_content/rest_spec.rb +0 -60
  1399. data/spec/unit/indirector/file_content/selector_spec.rb +0 -9
  1400. data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -13
  1401. data/spec/unit/indirector/file_metadata/file_spec.rb +0 -57
  1402. data/spec/unit/indirector/file_metadata/http_spec.rb +0 -194
  1403. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -116
  1404. data/spec/unit/indirector/file_metadata/selector_spec.rb +0 -10
  1405. data/spec/unit/indirector/file_server_spec.rb +0 -288
  1406. data/spec/unit/indirector/hiera_spec.rb +0 -22
  1407. data/spec/unit/indirector/indirection_spec.rb +0 -916
  1408. data/spec/unit/indirector/json_spec.rb +0 -200
  1409. data/spec/unit/indirector/memory_spec.rb +0 -26
  1410. data/spec/unit/indirector/msgpack_spec.rb +0 -199
  1411. data/spec/unit/indirector/node/exec_spec.rb +0 -107
  1412. data/spec/unit/indirector/node/json_spec.rb +0 -33
  1413. data/spec/unit/indirector/node/memory_spec.rb +0 -16
  1414. data/spec/unit/indirector/node/msgpack_spec.rb +0 -23
  1415. data/spec/unit/indirector/node/plain_spec.rb +0 -34
  1416. data/spec/unit/indirector/node/rest_spec.rb +0 -66
  1417. data/spec/unit/indirector/node/store_configs_spec.rb +0 -16
  1418. data/spec/unit/indirector/node/yaml_spec.rb +0 -23
  1419. data/spec/unit/indirector/none_spec.rb +0 -33
  1420. data/spec/unit/indirector/plain_spec.rb +0 -26
  1421. data/spec/unit/indirector/report/json_spec.rb +0 -72
  1422. data/spec/unit/indirector/report/msgpack_spec.rb +0 -27
  1423. data/spec/unit/indirector/report/processor_spec.rb +0 -99
  1424. data/spec/unit/indirector/report/rest_spec.rb +0 -58
  1425. data/spec/unit/indirector/report/yaml_spec.rb +0 -91
  1426. data/spec/unit/indirector/request_spec.rb +0 -295
  1427. data/spec/unit/indirector/resource/ral_spec.rb +0 -89
  1428. data/spec/unit/indirector/resource/store_configs_spec.rb +0 -20
  1429. data/spec/unit/indirector/rest_spec.rb +0 -149
  1430. data/spec/unit/indirector/terminus_spec.rb +0 -264
  1431. data/spec/unit/indirector/yaml_spec.rb +0 -188
  1432. data/spec/unit/indirector_spec.rb +0 -148
  1433. data/spec/unit/info_service_spec.rb +0 -575
  1434. data/spec/unit/interface/action_builder_spec.rb +0 -216
  1435. data/spec/unit/interface/action_manager_spec.rb +0 -254
  1436. data/spec/unit/interface/action_spec.rb +0 -670
  1437. data/spec/unit/interface/documentation_spec.rb +0 -32
  1438. data/spec/unit/interface/face_collection_spec.rb +0 -219
  1439. data/spec/unit/interface/option_builder_spec.rb +0 -86
  1440. data/spec/unit/interface/option_spec.rb +0 -156
  1441. data/spec/unit/interface_spec.rb +0 -305
  1442. data/spec/unit/module_spec.rb +0 -985
  1443. data/spec/unit/module_tool/application_spec.rb +0 -25
  1444. data/spec/unit/module_tool/applications/checksummer_spec.rb +0 -115
  1445. data/spec/unit/module_tool/applications/installer_spec.rb +0 -473
  1446. data/spec/unit/module_tool/applications/uninstaller_spec.rb +0 -181
  1447. data/spec/unit/module_tool/applications/unpacker_spec.rb +0 -75
  1448. data/spec/unit/module_tool/applications/upgrader_spec.rb +0 -337
  1449. data/spec/unit/module_tool/install_directory_spec.rb +0 -70
  1450. data/spec/unit/module_tool/installed_modules_spec.rb +0 -49
  1451. data/spec/unit/module_tool/metadata_spec.rb +0 -330
  1452. data/spec/unit/module_tool/tar/gnu_spec.rb +0 -23
  1453. data/spec/unit/module_tool/tar/mini_spec.rb +0 -109
  1454. data/spec/unit/module_tool/tar_spec.rb +0 -36
  1455. data/spec/unit/module_tool_spec.rb +0 -304
  1456. data/spec/unit/network/authconfig_spec.rb +0 -8
  1457. data/spec/unit/network/authorization_spec.rb +0 -8
  1458. data/spec/unit/network/format_handler_spec.rb +0 -93
  1459. data/spec/unit/network/format_spec.rb +0 -205
  1460. data/spec/unit/network/format_support_spec.rb +0 -199
  1461. data/spec/unit/network/formats_spec.rb +0 -584
  1462. data/spec/unit/network/http/api/indirected_routes_spec.rb +0 -425
  1463. data/spec/unit/network/http/api/master_spec.rb +0 -38
  1464. data/spec/unit/network/http/api/server/v3/environments_spec.rb +0 -51
  1465. data/spec/unit/network/http/api/server/v3_spec.rb +0 -78
  1466. data/spec/unit/network/http/api_spec.rb +0 -109
  1467. data/spec/unit/network/http/connection_spec.rb +0 -636
  1468. data/spec/unit/network/http/error_spec.rb +0 -30
  1469. data/spec/unit/network/http/handler_spec.rb +0 -164
  1470. data/spec/unit/network/http/request_spec.rb +0 -108
  1471. data/spec/unit/network/http/response_spec.rb +0 -106
  1472. data/spec/unit/network/http/route_spec.rb +0 -90
  1473. data/spec/unit/network/http_pool_spec.rb +0 -145
  1474. data/spec/unit/network/uri_spec.rb +0 -47
  1475. data/spec/unit/node/environment_spec.rb +0 -612
  1476. data/spec/unit/node/facts_spec.rb +0 -225
  1477. data/spec/unit/node_spec.rb +0 -434
  1478. data/spec/unit/other/selinux_spec.rb +0 -27
  1479. data/spec/unit/parameter/boolean_spec.rb +0 -35
  1480. data/spec/unit/parameter/package_options_spec.rb +0 -43
  1481. data/spec/unit/parameter/path_spec.rb +0 -23
  1482. data/spec/unit/parameter/value_collection_spec.rb +0 -160
  1483. data/spec/unit/parameter/value_spec.rb +0 -82
  1484. data/spec/unit/parameter_spec.rb +0 -272
  1485. data/spec/unit/parser/ast/block_expression_spec.rb +0 -66
  1486. data/spec/unit/parser/ast/leaf_spec.rb +0 -136
  1487. data/spec/unit/parser/compiler_spec.rb +0 -1020
  1488. data/spec/unit/parser/files_spec.rb +0 -101
  1489. data/spec/unit/parser/functions/create_resources_spec.rb +0 -326
  1490. data/spec/unit/parser/functions/digest_spec.rb +0 -26
  1491. data/spec/unit/parser/functions/fail_spec.rb +0 -23
  1492. data/spec/unit/parser/functions/file_spec.rb +0 -99
  1493. data/spec/unit/parser/functions/fqdn_rand_spec.rb +0 -87
  1494. data/spec/unit/parser/functions/generate_spec.rb +0 -124
  1495. data/spec/unit/parser/functions/hiera_array_spec.rb +0 -12
  1496. data/spec/unit/parser/functions/hiera_hash_spec.rb +0 -12
  1497. data/spec/unit/parser/functions/hiera_include_spec.rb +0 -12
  1498. data/spec/unit/parser/functions/hiera_spec.rb +0 -12
  1499. data/spec/unit/parser/functions/inline_template_spec.rb +0 -36
  1500. data/spec/unit/parser/functions/lookup_spec.rb +0 -14
  1501. data/spec/unit/parser/functions/realize_spec.rb +0 -70
  1502. data/spec/unit/parser/functions/regsubst_spec.rb +0 -19
  1503. data/spec/unit/parser/functions/scanf_spec.rb +0 -25
  1504. data/spec/unit/parser/functions/shellquote_spec.rb +0 -66
  1505. data/spec/unit/parser/functions/split_spec.rb +0 -13
  1506. data/spec/unit/parser/functions/sprintf_spec.rb +0 -68
  1507. data/spec/unit/parser/functions/tag_spec.rb +0 -30
  1508. data/spec/unit/parser/functions/tagged_spec.rb +0 -36
  1509. data/spec/unit/parser/functions/template_spec.rb +0 -93
  1510. data/spec/unit/parser/functions/versioncmp_spec.rb +0 -28
  1511. data/spec/unit/parser/functions_spec.rb +0 -156
  1512. data/spec/unit/parser/relationship_spec.rb +0 -74
  1513. data/spec/unit/parser/resource/param_spec.rb +0 -32
  1514. data/spec/unit/parser/resource_spec.rb +0 -657
  1515. data/spec/unit/parser/scope_spec.rb +0 -698
  1516. data/spec/unit/parser/templatewrapper_spec.rb +0 -111
  1517. data/spec/unit/parser/type_loader_spec.rb +0 -202
  1518. data/spec/unit/plan_spec.rb +0 -65
  1519. data/spec/unit/pops/adaptable_spec.rb +0 -139
  1520. data/spec/unit/pops/benchmark_spec.rb +0 -123
  1521. data/spec/unit/pops/containment_spec.rb +0 -0
  1522. data/spec/unit/pops/evaluator/access_ops_spec.rb +0 -560
  1523. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +0 -317
  1524. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +0 -101
  1525. data/spec/unit/pops/evaluator/collections_ops_spec.rb +0 -108
  1526. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +0 -267
  1527. data/spec/unit/pops/evaluator/conditionals_spec.rb +0 -189
  1528. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -46
  1529. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +0 -1639
  1530. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +0 -75
  1531. data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +0 -63
  1532. data/spec/unit/pops/evaluator/literal_evaluator_spec.rb +0 -43
  1533. data/spec/unit/pops/evaluator/logical_ops_spec.rb +0 -89
  1534. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +0 -181
  1535. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +0 -43
  1536. data/spec/unit/pops/evaluator/variables_spec.rb +0 -88
  1537. data/spec/unit/pops/factory_rspec_helper.rb +0 -65
  1538. data/spec/unit/pops/factory_spec.rb +0 -309
  1539. data/spec/unit/pops/issues_spec.rb +0 -210
  1540. data/spec/unit/pops/label_provider_spec.rb +0 -46
  1541. data/spec/unit/pops/loaders/dependency_loader_spec.rb +0 -122
  1542. data/spec/unit/pops/loaders/environment_loader_spec.rb +0 -172
  1543. data/spec/unit/pops/loaders/loader_paths_spec.rb +0 -43
  1544. data/spec/unit/pops/loaders/loader_spec.rb +0 -516
  1545. data/spec/unit/pops/loaders/loaders_spec.rb +0 -863
  1546. data/spec/unit/pops/loaders/module_loaders_spec.rb +0 -268
  1547. data/spec/unit/pops/loaders/static_loader_spec.rb +0 -85
  1548. data/spec/unit/pops/lookup/context_spec.rb +0 -333
  1549. data/spec/unit/pops/lookup/interpolation_spec.rb +0 -389
  1550. data/spec/unit/pops/lookup/lookup_spec.rb +0 -375
  1551. data/spec/unit/pops/merge_strategy_spec.rb +0 -17
  1552. data/spec/unit/pops/migration_spec.rb +0 -51
  1553. data/spec/unit/pops/model/model_spec.rb +0 -41
  1554. data/spec/unit/pops/model/pn_transformer_spec.rb +0 -56
  1555. data/spec/unit/pops/parser/epp_parser_spec.rb +0 -115
  1556. data/spec/unit/pops/parser/evaluating_parser_spec.rb +0 -89
  1557. data/spec/unit/pops/parser/lexer2_spec.rb +0 -942
  1558. data/spec/unit/pops/parser/locator_spec.rb +0 -86
  1559. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -380
  1560. data/spec/unit/pops/parser/parse_calls_spec.rb +0 -171
  1561. data/spec/unit/pops/parser/parse_conditionals_spec.rb +0 -184
  1562. data/spec/unit/pops/parser/parse_containers_spec.rb +0 -247
  1563. data/spec/unit/pops/parser/parse_functions_spec.rb +0 -19
  1564. data/spec/unit/pops/parser/parse_heredoc_spec.rb +0 -276
  1565. data/spec/unit/pops/parser/parse_lambda_spec.rb +0 -19
  1566. data/spec/unit/pops/parser/parse_plan_spec.rb +0 -47
  1567. data/spec/unit/pops/parser/parse_resource_spec.rb +0 -328
  1568. data/spec/unit/pops/parser/parser_rspec_helper.rb +0 -17
  1569. data/spec/unit/pops/parser/parser_spec.rb +0 -211
  1570. data/spec/unit/pops/parser/parsing_typed_parameters_spec.rb +0 -65
  1571. data/spec/unit/pops/parser/pn_parser_spec.rb +0 -100
  1572. data/spec/unit/pops/pn_spec.rb +0 -147
  1573. data/spec/unit/pops/puppet_stack_spec.rb +0 -108
  1574. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -37
  1575. data/spec/unit/pops/serialization/packer_spec.rb +0 -162
  1576. data/spec/unit/pops/serialization/serialization_spec.rb +0 -458
  1577. data/spec/unit/pops/serialization/to_from_hr_spec.rb +0 -649
  1578. data/spec/unit/pops/serialization/to_stringified_spec.rb +0 -162
  1579. data/spec/unit/pops/time/timespan_spec.rb +0 -121
  1580. data/spec/unit/pops/time/timestamp_spec.rb +0 -13
  1581. data/spec/unit/pops/types/class_loader_spec.rb +0 -10
  1582. data/spec/unit/pops/types/deferred_spec.rb +0 -87
  1583. data/spec/unit/pops/types/error_spec.rb +0 -207
  1584. data/spec/unit/pops/types/iterable_spec.rb +0 -262
  1585. data/spec/unit/pops/types/p_binary_type_spec.rb +0 -243
  1586. data/spec/unit/pops/types/p_init_type_spec.rb +0 -383
  1587. data/spec/unit/pops/types/p_object_type_spec.rb +0 -1730
  1588. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +0 -340
  1589. data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -191
  1590. data/spec/unit/pops/types/p_timespan_type_spec.rb +0 -323
  1591. data/spec/unit/pops/types/p_timestamp_type_spec.rb +0 -391
  1592. data/spec/unit/pops/types/p_type_set_type_spec.rb +0 -549
  1593. data/spec/unit/pops/types/p_uri_type_spec.rb +0 -191
  1594. data/spec/unit/pops/types/recursion_guard_spec.rb +0 -93
  1595. data/spec/unit/pops/types/ruby_generator_spec.rb +0 -874
  1596. data/spec/unit/pops/types/string_converter_spec.rb +0 -1202
  1597. data/spec/unit/pops/types/task_spec.rb +0 -411
  1598. data/spec/unit/pops/types/type_acceptor_spec.rb +0 -106
  1599. data/spec/unit/pops/types/type_asserter_spec.rb +0 -43
  1600. data/spec/unit/pops/types/type_calculator_spec.rb +0 -2504
  1601. data/spec/unit/pops/types/type_factory_spec.rb +0 -322
  1602. data/spec/unit/pops/types/type_formatter_spec.rb +0 -427
  1603. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +0 -424
  1604. data/spec/unit/pops/types/type_parser_spec.rb +0 -445
  1605. data/spec/unit/pops/types/types_spec.rb +0 -755
  1606. data/spec/unit/pops/utils_spec.rb +0 -70
  1607. data/spec/unit/pops/validation_spec.rb +0 -66
  1608. data/spec/unit/pops/validator/validator_spec.rb +0 -1029
  1609. data/spec/unit/pops/visitor_spec.rb +0 -93
  1610. data/spec/unit/property/boolean_spec.rb +0 -24
  1611. data/spec/unit/property/ensure_spec.rb +0 -11
  1612. data/spec/unit/property/keyvalue_spec.rb +0 -259
  1613. data/spec/unit/property/list_spec.rb +0 -172
  1614. data/spec/unit/property/ordered_list_spec.rb +0 -59
  1615. data/spec/unit/property_spec.rb +0 -563
  1616. data/spec/unit/provider/README.markdown +0 -4
  1617. data/spec/unit/provider/aix_object_spec.rb +0 -821
  1618. data/spec/unit/provider/command_spec.rb +0 -62
  1619. data/spec/unit/provider/exec/posix_spec.rb +0 -232
  1620. data/spec/unit/provider/exec/shell_spec.rb +0 -53
  1621. data/spec/unit/provider/exec/windows_spec.rb +0 -105
  1622. data/spec/unit/provider/exec_spec.rb +0 -244
  1623. data/spec/unit/provider/file/posix_spec.rb +0 -230
  1624. data/spec/unit/provider/file/windows_spec.rb +0 -152
  1625. data/spec/unit/provider/group/aix_spec.rb +0 -91
  1626. data/spec/unit/provider/group/directoryservice_spec.rb +0 -33
  1627. data/spec/unit/provider/group/groupadd_spec.rb +0 -284
  1628. data/spec/unit/provider/group/ldap_spec.rb +0 -98
  1629. data/spec/unit/provider/group/pw_spec.rb +0 -78
  1630. data/spec/unit/provider/group/windows_adsi_spec.rb +0 -398
  1631. data/spec/unit/provider/ldap_spec.rb +0 -242
  1632. data/spec/unit/provider/nameservice/directoryservice_spec.rb +0 -157
  1633. data/spec/unit/provider/nameservice_spec.rb +0 -398
  1634. data/spec/unit/provider/package/aix_spec.rb +0 -158
  1635. data/spec/unit/provider/package/appdmg_spec.rb +0 -42
  1636. data/spec/unit/provider/package/apt_spec.rb +0 -302
  1637. data/spec/unit/provider/package/aptitude_spec.rb +0 -46
  1638. data/spec/unit/provider/package/aptrpm_spec.rb +0 -42
  1639. data/spec/unit/provider/package/base_spec.rb +0 -19
  1640. data/spec/unit/provider/package/dnf_spec.rb +0 -62
  1641. data/spec/unit/provider/package/dnfmodule_spec.rb +0 -276
  1642. data/spec/unit/provider/package/dpkg_spec.rb +0 -444
  1643. data/spec/unit/provider/package/freebsd_spec.rb +0 -51
  1644. data/spec/unit/provider/package/gem_spec.rb +0 -487
  1645. data/spec/unit/provider/package/hpux_spec.rb +0 -48
  1646. data/spec/unit/provider/package/macports_spec.rb +0 -142
  1647. data/spec/unit/provider/package/nim_spec.rb +0 -267
  1648. data/spec/unit/provider/package/openbsd_spec.rb +0 -417
  1649. data/spec/unit/provider/package/opkg_spec.rb +0 -180
  1650. data/spec/unit/provider/package/pacman_spec.rb +0 -438
  1651. data/spec/unit/provider/package/pip2_spec.rb +0 -38
  1652. data/spec/unit/provider/package/pip3_spec.rb +0 -38
  1653. data/spec/unit/provider/package/pip_spec.rb +0 -504
  1654. data/spec/unit/provider/package/pkg_spec.rb +0 -473
  1655. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -166
  1656. data/spec/unit/provider/package/pkgin_spec.rb +0 -185
  1657. data/spec/unit/provider/package/pkgng_spec.rb +0 -228
  1658. data/spec/unit/provider/package/pkgutil_spec.rb +0 -231
  1659. data/spec/unit/provider/package/portage_spec.rb +0 -226
  1660. data/spec/unit/provider/package/puppet_gem_spec.rb +0 -130
  1661. data/spec/unit/provider/package/puppetserver_gem_spec.rb +0 -139
  1662. data/spec/unit/provider/package/rpm_spec.rb +0 -674
  1663. data/spec/unit/provider/package/sun_spec.rb +0 -112
  1664. data/spec/unit/provider/package/tdnf_spec.rb +0 -15
  1665. data/spec/unit/provider/package/up2date_spec.rb +0 -22
  1666. data/spec/unit/provider/package/urpmi_spec.rb +0 -84
  1667. data/spec/unit/provider/package/windows/exe_package_spec.rb +0 -114
  1668. data/spec/unit/provider/package/windows/msi_package_spec.rb +0 -111
  1669. data/spec/unit/provider/package/windows/package_spec.rb +0 -180
  1670. data/spec/unit/provider/package/windows_spec.rb +0 -272
  1671. data/spec/unit/provider/package/yum_spec.rb +0 -512
  1672. data/spec/unit/provider/package/zypper_spec.rb +0 -327
  1673. data/spec/unit/provider/package_targetable_spec.rb +0 -60
  1674. data/spec/unit/provider/parsedfile_spec.rb +0 -263
  1675. data/spec/unit/provider/service/base_spec.rb +0 -109
  1676. data/spec/unit/provider/service/bsd_spec.rb +0 -127
  1677. data/spec/unit/provider/service/daemontools_spec.rb +0 -190
  1678. data/spec/unit/provider/service/debian_spec.rb +0 -158
  1679. data/spec/unit/provider/service/freebsd_spec.rb +0 -92
  1680. data/spec/unit/provider/service/gentoo_spec.rb +0 -250
  1681. data/spec/unit/provider/service/init_spec.rb +0 -316
  1682. data/spec/unit/provider/service/launchd_spec.rb +0 -425
  1683. data/spec/unit/provider/service/openbsd_spec.rb +0 -196
  1684. data/spec/unit/provider/service/openrc_spec.rb +0 -231
  1685. data/spec/unit/provider/service/openwrt_spec.rb +0 -101
  1686. data/spec/unit/provider/service/rcng_spec.rb +0 -40
  1687. data/spec/unit/provider/service/redhat_spec.rb +0 -190
  1688. data/spec/unit/provider/service/runit_spec.rb +0 -164
  1689. data/spec/unit/provider/service/smf_spec.rb +0 -526
  1690. data/spec/unit/provider/service/src_spec.rb +0 -186
  1691. data/spec/unit/provider/service/systemd_spec.rb +0 -578
  1692. data/spec/unit/provider/service/upstart_spec.rb +0 -681
  1693. data/spec/unit/provider/service/windows_spec.rb +0 -475
  1694. data/spec/unit/provider/user/aix_spec.rb +0 -320
  1695. data/spec/unit/provider/user/directoryservice_spec.rb +0 -1256
  1696. data/spec/unit/provider/user/hpux_spec.rb +0 -72
  1697. data/spec/unit/provider/user/ldap_spec.rb +0 -286
  1698. data/spec/unit/provider/user/openbsd_spec.rb +0 -76
  1699. data/spec/unit/provider/user/pw_spec.rb +0 -252
  1700. data/spec/unit/provider/user/user_role_add_spec.rb +0 -374
  1701. data/spec/unit/provider/user/useradd_spec.rb +0 -849
  1702. data/spec/unit/provider/user/windows_adsi_spec.rb +0 -407
  1703. data/spec/unit/provider_spec.rb +0 -904
  1704. data/spec/unit/puppet_pal_2pec.rb +0 -1033
  1705. data/spec/unit/puppet_pal_catalog_spec.rb +0 -962
  1706. data/spec/unit/puppet_pal_spec.rb +0 -3
  1707. data/spec/unit/puppet_spec.rb +0 -127
  1708. data/spec/unit/relationship_spec.rb +0 -202
  1709. data/spec/unit/reports/http_spec.rb +0 -119
  1710. data/spec/unit/reports/store_spec.rb +0 -69
  1711. data/spec/unit/reports_spec.rb +0 -68
  1712. data/spec/unit/resource/catalog_spec.rb +0 -1160
  1713. data/spec/unit/resource/status_spec.rb +0 -216
  1714. data/spec/unit/resource/type_collection_spec.rb +0 -332
  1715. data/spec/unit/resource/type_spec.rb +0 -876
  1716. data/spec/unit/resource_spec.rb +0 -1189
  1717. data/spec/unit/scheduler/job_spec.rb +0 -78
  1718. data/spec/unit/scheduler/scheduler_spec.rb +0 -115
  1719. data/spec/unit/scheduler/splay_job_spec.rb +0 -34
  1720. data/spec/unit/settings/array_setting_spec.rb +0 -39
  1721. data/spec/unit/settings/autosign_setting_spec.rb +0 -104
  1722. data/spec/unit/settings/certificate_revocation_setting_spec.rb +0 -37
  1723. data/spec/unit/settings/config_file_spec.rb +0 -147
  1724. data/spec/unit/settings/directory_setting_spec.rb +0 -27
  1725. data/spec/unit/settings/duration_setting_spec.rb +0 -48
  1726. data/spec/unit/settings/enum_setting_spec.rb +0 -27
  1727. data/spec/unit/settings/environment_conf_spec.rb +0 -133
  1728. data/spec/unit/settings/file_setting_spec.rb +0 -344
  1729. data/spec/unit/settings/http_extra_headers_spec.rb +0 -62
  1730. data/spec/unit/settings/ini_file_spec.rb +0 -550
  1731. data/spec/unit/settings/integer_setting_spec.rb +0 -42
  1732. data/spec/unit/settings/path_setting_spec.rb +0 -29
  1733. data/spec/unit/settings/port_setting_spec.rb +0 -31
  1734. data/spec/unit/settings/priority_setting_spec.rb +0 -65
  1735. data/spec/unit/settings/server_list_setting_spec.rb +0 -21
  1736. data/spec/unit/settings/string_setting_spec.rb +0 -74
  1737. data/spec/unit/settings/terminus_setting_spec.rb +0 -27
  1738. data/spec/unit/settings/value_translator_spec.rb +0 -75
  1739. data/spec/unit/settings_spec.rb +0 -2343
  1740. data/spec/unit/ssl/base_spec.rb +0 -125
  1741. data/spec/unit/ssl/certificate_request_attributes_spec.rb +0 -80
  1742. data/spec/unit/ssl/certificate_request_spec.rb +0 -373
  1743. data/spec/unit/ssl/certificate_signer_spec.rb +0 -17
  1744. data/spec/unit/ssl/certificate_spec.rb +0 -183
  1745. data/spec/unit/ssl/digest_spec.rb +0 -34
  1746. data/spec/unit/ssl/oids_spec.rb +0 -73
  1747. data/spec/unit/ssl/ssl_provider_spec.rb +0 -657
  1748. data/spec/unit/ssl/state_machine_spec.rb +0 -1117
  1749. data/spec/unit/ssl/verifier_spec.rb +0 -102
  1750. data/spec/unit/task_spec.rb +0 -345
  1751. data/spec/unit/test/test_helper_spec.rb +0 -17
  1752. data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -534
  1753. data/spec/unit/transaction/event_manager_spec.rb +0 -365
  1754. data/spec/unit/transaction/event_spec.rb +0 -198
  1755. data/spec/unit/transaction/persistence_spec.rb +0 -276
  1756. data/spec/unit/transaction/report_spec.rb +0 -772
  1757. data/spec/unit/transaction/resource_harness_spec.rb +0 -625
  1758. data/spec/unit/transaction_spec.rb +0 -1037
  1759. data/spec/unit/type/README.markdown +0 -4
  1760. data/spec/unit/type/component_spec.rb +0 -52
  1761. data/spec/unit/type/exec_spec.rb +0 -937
  1762. data/spec/unit/type/file/checksum_spec.rb +0 -104
  1763. data/spec/unit/type/file/checksum_value_spec.rb +0 -285
  1764. data/spec/unit/type/file/content_spec.rb +0 -440
  1765. data/spec/unit/type/file/ctime_spec.rb +0 -33
  1766. data/spec/unit/type/file/ensure_spec.rb +0 -121
  1767. data/spec/unit/type/file/group_spec.rb +0 -65
  1768. data/spec/unit/type/file/mode_spec.rb +0 -220
  1769. data/spec/unit/type/file/mtime_spec.rb +0 -33
  1770. data/spec/unit/type/file/owner_spec.rb +0 -63
  1771. data/spec/unit/type/file/selinux_spec.rb +0 -86
  1772. data/spec/unit/type/file/source_spec.rb +0 -730
  1773. data/spec/unit/type/file/type_spec.rb +0 -18
  1774. data/spec/unit/type/file_spec.rb +0 -1746
  1775. data/spec/unit/type/filebucket_spec.rb +0 -104
  1776. data/spec/unit/type/group_spec.rb +0 -105
  1777. data/spec/unit/type/noop_metaparam_spec.rb +0 -37
  1778. data/spec/unit/type/package/package_settings_spec.rb +0 -156
  1779. data/spec/unit/type/package_spec.rb +0 -396
  1780. data/spec/unit/type/resources_spec.rb +0 -362
  1781. data/spec/unit/type/schedule_spec.rb +0 -621
  1782. data/spec/unit/type/service_spec.rb +0 -458
  1783. data/spec/unit/type/stage_spec.rb +0 -7
  1784. data/spec/unit/type/tidy_spec.rb +0 -493
  1785. data/spec/unit/type/user_spec.rb +0 -553
  1786. data/spec/unit/type/whit_spec.rb +0 -9
  1787. data/spec/unit/type_spec.rb +0 -1473
  1788. data/spec/unit/util/at_fork_spec.rb +0 -150
  1789. data/spec/unit/util/autoload_spec.rb +0 -330
  1790. data/spec/unit/util/backups_spec.rb +0 -130
  1791. data/spec/unit/util/character_encoding_spec.rb +0 -186
  1792. data/spec/unit/util/checksums_spec.rb +0 -223
  1793. data/spec/unit/util/colors_spec.rb +0 -44
  1794. data/spec/unit/util/command_line_spec.rb +0 -200
  1795. data/spec/unit/util/command_line_utils/puppet_option_parser_spec.rb +0 -129
  1796. data/spec/unit/util/constant_inflector_spec.rb +0 -55
  1797. data/spec/unit/util/diff_spec.rb +0 -46
  1798. data/spec/unit/util/docs_spec.rb +0 -100
  1799. data/spec/unit/util/errors_spec.rb +0 -36
  1800. data/spec/unit/util/execution_spec.rb +0 -943
  1801. data/spec/unit/util/execution_stub_spec.rb +0 -38
  1802. data/spec/unit/util/feature_spec.rb +0 -129
  1803. data/spec/unit/util/filetype_spec.rb +0 -223
  1804. data/spec/unit/util/inifile_spec.rb +0 -510
  1805. data/spec/unit/util/json_lockfile_spec.rb +0 -48
  1806. data/spec/unit/util/json_spec.rb +0 -126
  1807. data/spec/unit/util/ldap/connection_spec.rb +0 -162
  1808. data/spec/unit/util/ldap/generator_spec.rb +0 -49
  1809. data/spec/unit/util/ldap/manager_spec.rb +0 -612
  1810. data/spec/unit/util/lockfile_spec.rb +0 -117
  1811. data/spec/unit/util/log/destinations_spec.rb +0 -258
  1812. data/spec/unit/util/log_spec.rb +0 -479
  1813. data/spec/unit/util/logging_spec.rb +0 -618
  1814. data/spec/unit/util/metric_spec.rb +0 -89
  1815. data/spec/unit/util/monkey_patches_spec.rb +0 -161
  1816. data/spec/unit/util/multi_match_spec.rb +0 -38
  1817. data/spec/unit/util/network_device/config_spec.rb +0 -91
  1818. data/spec/unit/util/network_device/transport/base_spec.rb +0 -40
  1819. data/spec/unit/util/network_device_spec.rb +0 -43
  1820. data/spec/unit/util/package/version/debian_spec.rb +0 -83
  1821. data/spec/unit/util/package/version/pip_spec.rb +0 -464
  1822. data/spec/unit/util/package/version/range_spec.rb +0 -175
  1823. data/spec/unit/util/package/version/rpm_spec.rb +0 -121
  1824. data/spec/unit/util/package_spec.rb +0 -19
  1825. data/spec/unit/util/pidlock_spec.rb +0 -333
  1826. data/spec/unit/util/plist_spec.rb +0 -168
  1827. data/spec/unit/util/posix_spec.rb +0 -630
  1828. data/spec/unit/util/profiler/aggregate_spec.rb +0 -55
  1829. data/spec/unit/util/profiler/around_profiler_spec.rb +0 -61
  1830. data/spec/unit/util/profiler/logging_spec.rb +0 -70
  1831. data/spec/unit/util/profiler/object_counts_spec.rb +0 -13
  1832. data/spec/unit/util/profiler/wall_clock_spec.rb +0 -13
  1833. data/spec/unit/util/profiler_spec.rb +0 -47
  1834. data/spec/unit/util/rdoc_spec.rb +0 -55
  1835. data/spec/unit/util/reference_spec.rb +0 -38
  1836. data/spec/unit/util/resource_template_spec.rb +0 -57
  1837. data/spec/unit/util/retry_action_spec.rb +0 -84
  1838. data/spec/unit/util/rpm_compare_spec.rb +0 -196
  1839. data/spec/unit/util/rubygems_spec.rb +0 -47
  1840. data/spec/unit/util/run_mode_spec.rb +0 -185
  1841. data/spec/unit/util/selinux_spec.rb +0 -422
  1842. data/spec/unit/util/skip_tags_spec.rb +0 -14
  1843. data/spec/unit/util/splayer_spec.rb +0 -44
  1844. data/spec/unit/util/storage_spec.rb +0 -330
  1845. data/spec/unit/util/suidmanager_spec.rb +0 -278
  1846. data/spec/unit/util/symbolic_file_mode_spec.rb +0 -180
  1847. data/spec/unit/util/tag_set_spec.rb +0 -52
  1848. data/spec/unit/util/tagging_spec.rb +0 -246
  1849. data/spec/unit/util/terminal_spec.rb +0 -41
  1850. data/spec/unit/util/user_attr_spec.rb +0 -45
  1851. data/spec/unit/util/warnings_spec.rb +0 -45
  1852. data/spec/unit/util/watched_file_spec.rb +0 -52
  1853. data/spec/unit/util/watcher/periodic_watcher_spec.rb +0 -52
  1854. data/spec/unit/util/watcher_spec.rb +0 -86
  1855. data/spec/unit/util/windows/access_control_entry_spec.rb +0 -66
  1856. data/spec/unit/util/windows/access_control_list_spec.rb +0 -132
  1857. data/spec/unit/util/windows/adsi_spec.rb +0 -704
  1858. data/spec/unit/util/windows/api_types_spec.rb +0 -184
  1859. data/spec/unit/util/windows/eventlog_spec.rb +0 -120
  1860. data/spec/unit/util/windows/file_spec.rb +0 -88
  1861. data/spec/unit/util/windows/root_certs_spec.rb +0 -16
  1862. data/spec/unit/util/windows/security_descriptor_spec.rb +0 -115
  1863. data/spec/unit/util/windows/service_spec.rb +0 -677
  1864. data/spec/unit/util/windows/sid_spec.rb +0 -338
  1865. data/spec/unit/util/windows/string_spec.rb +0 -55
  1866. data/spec/unit/util/windows_spec.rb +0 -23
  1867. data/spec/unit/util/yaml_spec.rb +0 -171
  1868. data/spec/unit/util_spec.rb +0 -960
  1869. data/spec/unit/version_spec.rb +0 -61
  1870. data/spec/unit/x509/cert_provider_spec.rb +0 -663
  1871. data/spec/unit/x509/pem_store_spec.rb +0 -160
@@ -1,3415 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet_spec/compiler'
3
- require 'puppet_spec/files'
4
- require 'puppet/pops'
5
- require 'deep_merge/core'
6
-
7
- describe "The lookup function" do
8
- include PuppetSpec::Compiler
9
- include PuppetSpec::Files
10
-
11
- let(:env_name) { 'spec' }
12
- let(:code_dir_files) { {} }
13
- let(:code_dir) { tmpdir('code') }
14
- let(:ruby_dir) { tmpdir('ruby') }
15
- let(:env_modules) { {} }
16
- let(:env_hiera_yaml) do
17
- <<-YAML.unindent
18
- ---
19
- version: 5
20
- hierarchy:
21
- - name: "Common"
22
- data_hash: yaml_data
23
- path: "common.yaml"
24
- YAML
25
- end
26
-
27
- let(:env_data) { {} }
28
-
29
- let(:environment_files) do
30
- {
31
- env_name => {
32
- 'modules' => env_modules,
33
- 'hiera.yaml' => env_hiera_yaml,
34
- 'data' => env_data
35
- }
36
- }
37
- end
38
-
39
- let(:logs) { [] }
40
- let(:scope_additions ) { {} }
41
- let(:notices) { logs.select { |log| log.level == :notice }.map { |log| log.message } }
42
- let(:warnings) { logs.select { |log| log.level == :warning }.map { |log| log.message } }
43
- let(:debugs) { logs.select { |log| log.level == :debug }.map { |log| log.message } }
44
- let(:env) { Puppet::Node::Environment.create(env_name.to_sym, [File.join(populated_env_dir, env_name, 'modules')]) }
45
- let(:environments) { Puppet::Environments::Directories.new(populated_env_dir, []) }
46
- let(:node) { Puppet::Node.new('test_lookup', :environment => env) }
47
- let(:compiler) { Puppet::Parser::Compiler.new(node) }
48
- let(:lookup_func) { Puppet.lookup(:loaders).puppet_system_loader.load(:function, 'lookup') }
49
- let(:invocation_with_explain) { Puppet::Pops::Lookup::Invocation.new(compiler.topscope, {}, {}, true) }
50
- let(:explanation) { invocation_with_explain.explainer.explain }
51
-
52
- let(:populated_code_dir) do
53
- dir_contained_in(code_dir, code_dir_files)
54
- code_dir
55
- end
56
-
57
- let(:env_dir) do
58
- d = File.join(populated_code_dir, 'environments')
59
- Dir.mkdir(d)
60
- d
61
- end
62
-
63
- let(:populated_env_dir) do
64
- dir_contained_in(env_dir, environment_files)
65
- env_dir
66
- end
67
-
68
- before(:each) do
69
- Puppet.settings[:codedir] = code_dir
70
- Puppet.push_context(:environments => environments, :current_environment => env)
71
- end
72
-
73
- after(:each) do
74
- Puppet.pop_context
75
- if Object.const_defined?(:Hiera)
76
- Hiera.send(:remove_instance_variable, :@config) if Hiera.instance_variable_defined?(:@config)
77
- Hiera.send(:remove_instance_variable, :@logger) if Hiera.instance_variable_defined?(:@logger)
78
- if Hiera.const_defined?(:Config)
79
- Hiera::Config.send(:remove_instance_variable, :@config) if Hiera::Config.instance_variable_defined?(:@config)
80
- end
81
- if Hiera.const_defined?(:Backend) && Hiera::Backend.respond_to?(:clear!)
82
- Hiera::Backend.clear!
83
- end
84
- end
85
- end
86
-
87
- def collect_notices(code, explain = false, &block)
88
- Puppet[:code] = code
89
- Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
90
- scope = compiler.topscope
91
- scope['domain'] = 'example.com'
92
- scope_additions.each_pair { |k, v| scope[k] = v }
93
- if explain
94
- begin
95
- invocation_with_explain.lookup('dummy', nil) do
96
- if block_given?
97
- compiler.compile { |catalog| block.call(compiler.topscope); catalog }
98
- else
99
- compiler.compile
100
- end
101
- end
102
- rescue RuntimeError => e
103
- invocation_with_explain.report_text { e.message }
104
- end
105
- else
106
- if block_given?
107
- compiler.compile { |catalog| block.call(compiler.topscope); catalog }
108
- else
109
- compiler.compile
110
- end
111
- end
112
- end
113
- nil
114
- end
115
-
116
- def lookup(key, options = {}, explain = false, type = nil)
117
- value_type = type ? ", #{type}" : ''
118
- nc_opts = options.empty? ? '' : ", #{Puppet::Pops::Types::TypeFormatter.string(options)}"
119
- keys = key.is_a?(Array) ? key : [key]
120
- collect_notices(keys.map { |k| "notice(String(lookup('#{k}'#{value_type}#{nc_opts}), '%p'))" }.join("\n"), explain)
121
- if explain
122
- explanation
123
- else
124
- result = notices.map { |n| Puppet::Pops::Types::TypeParser.singleton.parse_literal(n) }
125
- key.is_a?(Array) ? result : result[0]
126
- end
127
- end
128
-
129
- def explain(key, options = {})
130
- lookup(key, options, true)[1]
131
- explanation
132
- end
133
-
134
- context 'with faulty hiera.yaml configuration' do
135
- context 'in global layer' do
136
- let(:global_data) do
137
- {
138
- 'common.yaml' => <<-YAML.unindent
139
- a: value a (from global)
140
- YAML
141
- }
142
- end
143
-
144
- let(:code_dir_files) do
145
- {
146
- 'hiera.yaml' => hiera_yaml,
147
- 'data' => global_data
148
- }
149
- end
150
-
151
- before(:each) do
152
- # Need to set here since spec_helper defines these settings in its "before each"
153
- Puppet.settings[:codedir] = populated_code_dir
154
- Puppet.settings[:hiera_config] = File.join(code_dir, 'hiera.yaml')
155
- end
156
-
157
- context 'using a not yet supported hiera version' do
158
- let(:hiera_yaml) { <<-YAML.unindent }
159
- version: 6
160
- YAML
161
-
162
- it 'fails and reports error' do
163
- expect { lookup('a') }.to raise_error("This runtime does not support hiera.yaml version 6 (file: #{code_dir}/hiera.yaml)")
164
- end
165
- end
166
-
167
- context 'with multiply defined backend using hiera version 3' do
168
- let(:hiera_yaml) { <<-YAML.unindent }
169
- :version: 3
170
- :backends:
171
- - yaml
172
- - json
173
- - yaml
174
- YAML
175
-
176
- it 'fails and reports error' do
177
- expect { lookup('a') }.to raise_error(
178
- "Backend 'yaml' is defined more than once. First defined at (line: 3) (file: #{code_dir}/hiera.yaml, line: 5)")
179
- end
180
- end
181
-
182
- context 'using hiera version 4' do
183
- let(:hiera_yaml) { <<-YAML.unindent }
184
- version: 4
185
- YAML
186
-
187
- it 'fails and reports error' do
188
- expect { lookup('a') }.to raise_error(
189
- "hiera.yaml version 4 cannot be used in the global layer (file: #{code_dir}/hiera.yaml)")
190
- end
191
- end
192
-
193
- context 'using hiera version 5' do
194
- context 'with multiply defined hierarchy' do
195
- let(:hiera_yaml) { <<-YAML.unindent }
196
- version: 5
197
- hierarchy:
198
- - name: Common
199
- path: common.yaml
200
- - name: Other
201
- path: other.yaml
202
- - name: Common
203
- path: common.yaml
204
- YAML
205
-
206
- it 'fails and reports error' do
207
- expect { lookup('a') }.to raise_error(
208
- "Hierarchy name 'Common' defined more than once. First defined at (line: 3) (file: #{code_dir}/hiera.yaml, line: 7)")
209
- end
210
- end
211
-
212
- context 'with hiera3_backend that is provided as data_hash function' do
213
- let(:hiera_yaml) { <<-YAML.unindent }
214
- version: 5
215
- hierarchy:
216
- - name: Common
217
- hiera3_backend: hocon
218
- path: common.conf
219
- YAML
220
-
221
- it 'fails and reports error' do
222
- expect { lookup('a') }.to raise_error(
223
- "Use \"data_hash: hocon_data\" instead of \"hiera3_backend: hocon\" (file: #{code_dir}/hiera.yaml, line: 4)")
224
- end
225
- end
226
-
227
- context 'with no data provider function defined' do
228
- let(:hiera_yaml) { <<-YAML.unindent }
229
- version: 5
230
- defaults:
231
- datadir: data
232
- hierarchy:
233
- - name: Common
234
- path: common.txt
235
- YAML
236
-
237
- it 'fails and reports error' do
238
- expect { lookup('a') }.to raise_error(
239
- "One of data_hash, lookup_key, data_dig, or hiera3_backend must be defined in hierarchy 'Common' (file: #{code_dir}/hiera.yaml)")
240
- end
241
- end
242
-
243
- context 'with multiple data providers in defaults' do
244
- let(:hiera_yaml) { <<-YAML.unindent }
245
- version: 5
246
- defaults:
247
- data_hash: yaml_data
248
- lookup_key: eyaml_lookup_key
249
- datadir: data
250
- hierarchy:
251
- - name: Common
252
- path: common.txt
253
- YAML
254
-
255
- it 'fails and reports error' do
256
- expect { lookup('a') }.to raise_error(
257
- "Only one of data_hash, lookup_key, data_dig, or hiera3_backend can be defined in defaults (file: #{code_dir}/hiera.yaml)")
258
- end
259
- end
260
-
261
- context 'with non existing data provider function' do
262
- let(:hiera_yaml) { <<-YAML.unindent }
263
- version: 5
264
- hierarchy:
265
- - name: Common
266
- data_hash: nonesuch_txt_data
267
- path: common.yaml
268
- YAML
269
-
270
- it 'fails and reports error' do
271
- Puppet[:strict] = :error
272
- expect { lookup('a') }.to raise_error(
273
- "Unable to find 'data_hash' function named 'nonesuch_txt_data' (file: #{code_dir}/hiera.yaml)")
274
- end
275
- end
276
-
277
- context 'with a declared default_hierarchy' do
278
- let(:hiera_yaml) { <<-YAML.unindent }
279
- version: 5
280
- hierarchy:
281
- - name: Common
282
- path: common.yaml
283
- default_hierarchy:
284
- - name: Defaults
285
- path: defaults.yaml
286
- YAML
287
-
288
- it 'fails and reports error' do
289
- expect { lookup('a') }.to raise_error(
290
- "'default_hierarchy' is only allowed in the module layer (file: #{code_dir}/hiera.yaml, line: 5)")
291
- end
292
- end
293
-
294
- context 'with missing variables' do
295
- let(:scope_additions) { { 'fqdn' => 'test.example.com' } }
296
- let(:hiera_yaml) { <<-YAML.unindent }
297
- version: 5
298
- hierarchy:
299
- - name: Common # don't report this line %{::nonesuch}
300
- path: "%{::fqdn}/%{::nonesuch}/data.yaml"
301
- YAML
302
-
303
- it 'fails and reports errors when strict == error' do
304
- expect { lookup('a') }.to raise_error("Function lookup() did not find a value for the name 'a'")
305
- end
306
- end
307
-
308
- context 'using interpolation functions' do
309
- let(:hiera_yaml) { <<-YAML.unindent }
310
- version: 5
311
- hierarchy:
312
- - name: Common # don't report this line %{::nonesuch}
313
- path: "%{lookup('fqdn')}/data.yaml"
314
- YAML
315
-
316
- it 'fails and reports errors when strict == error' do
317
- expect { lookup('a') }.to raise_error("Interpolation using method syntax is not allowed in this context (file: #{code_dir}/hiera.yaml)")
318
- end
319
- end
320
- end
321
- end
322
-
323
- context 'in environment layer' do
324
- context 'using hiera version 4' do
325
- context 'with an unknown backend' do
326
- let(:env_hiera_yaml) { <<-YAML.unindent }
327
- version: 4
328
- hierarchy:
329
- - name: Common
330
- backend: nonesuch
331
- path: common.yaml
332
- YAML
333
-
334
- it 'fails and reports error' do
335
- expect { lookup('a') }.to raise_error(
336
- "No data provider is registered for backend 'nonesuch' (file: #{env_dir}/spec/hiera.yaml, line: 4)")
337
- end
338
- end
339
-
340
- context 'with multiply defined hierarchy' do
341
- let(:env_hiera_yaml) { <<-YAML.unindent }
342
- version: 4
343
- hierarchy:
344
- - name: Common
345
- backend: yaml
346
- path: common.yaml
347
- - name: Other
348
- backend: yaml
349
- path: other.yaml
350
- - name: Common
351
- backend: yaml
352
- path: common.yaml
353
- YAML
354
-
355
- it 'fails and reports error' do
356
- expect { lookup('a') }.to raise_error(
357
- "Hierarchy name 'Common' defined more than once. First defined at (line: 3) (file: #{env_dir}/spec/hiera.yaml, line: 9)")
358
- end
359
- end
360
- end
361
-
362
- context 'using hiera version 5' do
363
- context 'with a hiera3_backend declaration' do
364
- let(:env_hiera_yaml) { <<-YAML.unindent }
365
- version: 5
366
- hierarchy:
367
- - name: Common
368
- hiera3_backend: something
369
- YAML
370
-
371
- it 'fails and reports error' do
372
- expect { lookup('a') }.to raise_error(
373
- "'hiera3_backend' is only allowed in the global layer (file: #{env_dir}/spec/hiera.yaml, line: 4)")
374
- end
375
- end
376
-
377
- context 'with a declared default_hierarchy' do
378
- let(:env_hiera_yaml) { <<-YAML.unindent }
379
- version: 5
380
- hierarchy:
381
- - name: Common
382
- path: common.yaml
383
- default_hierarchy:
384
- - name: Defaults
385
- path: defaults.yaml
386
- YAML
387
-
388
- it 'fails and reports error' do
389
- Puppet[:strict] = :error
390
- expect { lookup('a') }.to raise_error(
391
- "'default_hierarchy' is only allowed in the module layer (file: #{env_dir}/spec/hiera.yaml, line: 5)")
392
- end
393
- end
394
- end
395
- end
396
- end
397
-
398
- context 'with an environment' do
399
- let(:env_data) do
400
- {
401
- 'common.yaml' => <<-YAML.unindent
402
- ---
403
- a: value a (from environment)
404
- c:
405
- c_b: value c_b (from environment)
406
- mod_a::a: value mod_a::a (from environment)
407
- mod_a::hash_a:
408
- a: value mod_a::hash_a.a (from environment)
409
- mod_a::hash_b:
410
- a: value mod_a::hash_b.a (from environment)
411
- hash_b:
412
- hash_ba:
413
- bab: value hash_b.hash_ba.bab (from environment)
414
- hash_c:
415
- hash_ca:
416
- caa: value hash_c.hash_ca.caa (from environment)
417
- lookup_options:
418
- mod_a::hash_b:
419
- merge: hash
420
- hash_c:
421
- merge: hash
422
- YAML
423
- }
424
- end
425
-
426
- it 'finds data in the environment' do
427
- expect(lookup('a')).to eql('value a (from environment)')
428
- end
429
-
430
- context 'with log-level debug' do
431
- before(:each) { Puppet[:log_level] = 'debug' }
432
-
433
- it 'does not report a regular lookup as APL' do
434
- expect(lookup('a')).to eql('value a (from environment)')
435
- expect(debugs.count { |dbg| dbg =~ /\A\s*Automatic Parameter Lookup of/ }).to eql(0)
436
- end
437
-
438
- it 'reports regular lookup as lookup' do
439
- expect(lookup('a')).to eql('value a (from environment)')
440
- expect(debugs.count { |dbg| dbg =~ /\A\s*Lookup of/ }).to eql(1)
441
- end
442
-
443
- it 'does not report APL as lookup' do
444
- collect_notices("class mod_a($a) { notice($a) }; include mod_a")
445
- expect(debugs.count { |dbg| dbg =~ /\A\s*Lookup of/ }).to eql(0)
446
- end
447
-
448
- it 'reports APL as APL' do
449
- collect_notices("class mod_a($a) { notice($a) }; include mod_a")
450
- expect(debugs.count { |dbg| dbg =~ /\A\s*Automatic Parameter Lookup of/ }).to eql(1)
451
- end
452
- end
453
-
454
- context 'that has no lookup configured' do
455
- let(:environment_files) do
456
- {
457
- env_name => {
458
- 'data' => env_data
459
- }
460
- }
461
- end
462
-
463
- it 'does not find data in the environment' do
464
- expect { lookup('a') }.to raise_error(Puppet::DataBinding::LookupError, /did not find a value for the name 'a'/)
465
- end
466
-
467
- context "but an environment.conf with 'environment_data_provider=hiera'" do
468
- let(:environment_files) do
469
- {
470
- env_name => {
471
- 'environment.conf' => "environment_data_provider=hiera\n",
472
- 'data' => env_data
473
- }
474
- }
475
- end
476
-
477
- it 'finds data in the environment and reports deprecation warning for environment.conf' do
478
- expect(lookup('a')).to eql('value a (from environment)')
479
- expect(warnings).to include(/Defining environment_data_provider='hiera' in environment.conf is deprecated. A 'hiera.yaml' file should be used instead/)
480
- end
481
-
482
- context 'and a hiera.yaml file' do
483
- let(:env_hiera_yaml) do
484
- <<-YAML.unindent
485
- ---
486
- version: 4
487
- hierarchy:
488
- - name: common
489
- backend: yaml
490
- YAML
491
- end
492
-
493
- let(:environment_files) do
494
- {
495
- env_name => {
496
- 'hiera.yaml' => env_hiera_yaml,
497
- 'environment.conf' => "environment_data_provider=hiera\n",
498
- 'data' => env_data
499
- }
500
- }
501
- end
502
-
503
- it 'finds data in the environment and reports deprecation warnings for both environment.conf and hiera.yaml' do
504
- expect(lookup('a')).to eql('value a (from environment)')
505
- expect(warnings).to include(/Defining environment_data_provider='hiera' in environment.conf is deprecated/)
506
- expect(warnings).to include(/Use of 'hiera.yaml' version 4 is deprecated. It should be converted to version 5/)
507
- end
508
- end
509
- end
510
-
511
- context "but an environment.conf with 'environment_data_provider=function'" do
512
- let(:environment_files) do
513
- {
514
- env_name => {
515
- 'environment.conf' => "environment_data_provider=function\n",
516
- 'functions' => {
517
- 'environment' => { 'data.pp' => <<-PUPPET.unindent }
518
- function environment::data() {
519
- { 'a' => 'value a' }
520
- }
521
- PUPPET
522
- }
523
- }
524
- }
525
- end
526
-
527
- it 'finds data in the environment and reports deprecation warning for environment.conf' do
528
- expect(lookup('a')).to eql('value a')
529
- expect(warnings).to include(/Defining environment_data_provider='function' in environment.conf is deprecated. A 'hiera.yaml' file should be used instead/)
530
- expect(warnings).to include(/Using of legacy data provider function 'environment::data'. Please convert to a 'data_hash' function/)
531
- end
532
- end
533
- end
534
-
535
- context 'that has interpolated paths configured' do
536
- let(:env_hiera_yaml) do
537
- <<-YAML.unindent
538
- ---
539
- version: 5
540
- hierarchy:
541
- - name: "Varying"
542
- data_hash: yaml_data
543
- path: "#{data_path}"
544
- YAML
545
- end
546
-
547
- let(:environment_files) do
548
- {
549
- env_name => {
550
- 'hiera.yaml' => env_hiera_yaml,
551
- 'modules' => {},
552
- 'data' => {
553
- 'x.yaml' => <<-YAML.unindent,
554
- y: value y from x
555
- YAML
556
- 'x_d.yaml' => <<-YAML.unindent,
557
- y: value y from x_d
558
- YAML
559
- 'x_e.yaml' => <<-YAML.unindent,
560
- y: value y from x_e
561
- YAML
562
- }
563
- }
564
- }
565
- end
566
-
567
- context 'using local variable reference' do
568
- let(:data_path) { 'x%{var.sub}.yaml' }
569
-
570
- it 'reloads the configuration if interpolated values change' do
571
- Puppet[:log_level] = 'debug'
572
- collect_notices("notice('success')") do |scope|
573
- scope['var'] = {}
574
- expect(lookup_func.call(scope, 'y')).to eql('value y from x')
575
- nested_scope = scope.compiler.newscope(scope)
576
- nested_scope['var'] = { 'sub' => '_d' }
577
- expect(lookup_func.call(nested_scope, 'y')).to eql('value y from x_d')
578
- nested_scope = scope.compiler.newscope(scope)
579
- nested_scope['var'] = { 'sub' => '_e' }
580
- expect(lookup_func.call(nested_scope, 'y')).to eql('value y from x_e')
581
- end
582
- expect(notices).to eql(['success'])
583
- expect(debugs.any? { |m| m =~ /Hiera configuration recreated due to change of scope variables used in interpolation expressions/ }).to be_truthy
584
- end
585
-
586
- it 'does not include the lookups performed during stability check in explain output' do
587
- Puppet[:log_level] = 'debug'
588
- collect_notices("notice('success')") do |scope|
589
- var = { 'sub' => '_d' }
590
- scope['var'] = var
591
- expect(lookup_func.call(scope, 'y')).to eql('value y from x_d')
592
-
593
- # Second call triggers the check
594
- expect(lookup_func.call(scope, 'y')).to eql('value y from x_d')
595
- end
596
- expect(notices).to eql(['success'])
597
- expect(debugs.any? { |m| m =~ /Sub key: "sub"/ }).to be_falsey
598
- end
599
- end
600
-
601
- context 'using global variable reference' do
602
- let(:data_path) { 'x%{::var.sub}.yaml' }
603
-
604
- it 'does not raise an error when reloads the configuration if interpolating undefined values' do
605
- collect_notices("notice('success')") do |scope|
606
- expect { lookup_func.call(scope, 'y') }.to_not raise_error
607
- end
608
- end
609
-
610
- it 'does not reload the configuration if value changes locally' do
611
- Puppet[:log_level] = 'debug'
612
- collect_notices("notice('success')") do |scope|
613
- scope['var'] = { 'sub' => '_d' }
614
- expect(lookup_func.call(scope, 'y')).to eql('value y from x_d')
615
- nested_scope = scope.compiler.newscope(scope)
616
- nested_scope['var'] = { 'sub' => '_e' }
617
- expect(lookup_func.call(nested_scope, 'y')).to eql('value y from x_d')
618
- end
619
- expect(notices).to eql(['success'])
620
- expect(debugs.any? { |m| m =~ /Hiera configuration recreated due to change of scope variables used in interpolation expressions/ }).to be_falsey
621
- end
622
- end
623
- end
624
-
625
- context 'that uses reserved' do
626
- let(:environment_files) do
627
- { env_name => { 'hiera.yaml' => hiera_yaml } }
628
- end
629
-
630
- context 'option' do
631
- let(:hiera_yaml) { <<-YAML.unindent }
632
- version: 5
633
- hierarchy:
634
- - name: "Illegal"
635
- options:
636
- #{opt_spec}
637
- data_hash: yaml_data
638
- YAML
639
-
640
- context 'path' do
641
- let(:opt_spec) { 'path: data/foo.yaml' }
642
-
643
- it 'fails and reports the reserved option key' do
644
- expect { lookup('a') }.to raise_error do |e|
645
- expect(e.message).to match(/Option key 'path' used in hierarchy 'Illegal' is reserved by Puppet/)
646
- end
647
- end
648
- end
649
-
650
- context 'uri' do
651
- let(:opt_spec) { 'uri: file:///data/foo.yaml' }
652
-
653
- it 'fails and reports the reserved option key' do
654
- expect { lookup('a') }.to raise_error do |e|
655
- expect(e.message).to match(/Option key 'uri' used in hierarchy 'Illegal' is reserved by Puppet/)
656
- end
657
- end
658
- end
659
- end
660
-
661
- context 'default option' do
662
- let(:hiera_yaml) { <<-YAML.unindent }
663
- ---
664
- version: 5
665
- defaults:
666
- options:
667
- #{opt_spec}
668
- hierarchy:
669
- - name: "Illegal"
670
- data_hash: yaml_data
671
- YAML
672
-
673
- context 'path' do
674
- let(:opt_spec) { 'path: data/foo.yaml' }
675
-
676
- it 'fails and reports the reserved option key' do
677
- expect { lookup('a') }.to raise_error do |e|
678
- expect(e.message).to match(/Option key 'path' used in defaults is reserved by Puppet/)
679
- end
680
- end
681
- end
682
-
683
- context 'uri' do
684
- let(:opt_spec) { 'uri: file:///data/foo.yaml' }
685
-
686
- it 'fails and reports the reserved option key' do
687
- expect { lookup('a') }.to raise_error do |e|
688
- expect(e.message).to match(/Option key 'uri' used in defaults is reserved by Puppet/)
689
- end
690
- end
691
- end
692
- end
693
- end
694
-
695
- context 'with yaml data file' do
696
- let(:environment_files) do
697
- {
698
- env_name => {
699
- 'hiera.yaml' => <<-YAML.unindent,
700
- ---
701
- version: 5
702
- YAML
703
- 'data' => {
704
- 'common.yaml' => common_yaml
705
- }
706
- }
707
- }
708
- end
709
-
710
- context 'that contains hash values with interpolated keys' do
711
- let(:common_yaml) do
712
- <<-YAML.unindent
713
- ---
714
- a:
715
- "%{key}": "the %{value}"
716
- b: "Detail in %{lookup('a.a_key')}"
717
- YAML
718
- end
719
-
720
- it 'interpolates both key and value"' do
721
- Puppet[:log_level] = 'debug'
722
- collect_notices("notice('success')") do |scope|
723
- scope['key'] = ''
724
- scope['value'] = ''
725
- expect(lookup_func.call(scope, 'a')).to eql({'' => 'the '})
726
- nested_scope = scope.compiler.newscope(scope)
727
- nested_scope['key'] = 'a_key'
728
- nested_scope['value'] = 'interpolated value'
729
- expect(lookup_func.call(nested_scope, 'a')).to eql({'a_key' => 'the interpolated value'})
730
- end
731
- expect(notices).to eql(['success'])
732
- end
733
-
734
- it 'navigates to a value behind an interpolated key"' do
735
- Puppet[:log_level] = 'debug'
736
- collect_notices("notice('success')") do |scope|
737
- scope['key'] = 'a_key'
738
- scope['value'] = 'interpolated value'
739
- expect(lookup_func.call(scope, 'a.a_key')).to eql('the interpolated value')
740
- end
741
- expect(notices).to eql(['success'])
742
- end
743
-
744
- it 'navigates to a value behind an interpolated key using an interpolated value"' do
745
- Puppet[:log_level] = 'debug'
746
- collect_notices("notice('success')") do |scope|
747
- scope['key'] = 'a_key'
748
- scope['value'] = 'interpolated value'
749
- expect(lookup_func.call(scope, 'b')).to eql('Detail in the interpolated value')
750
- end
751
- expect(notices).to eql(['success'])
752
- end
753
- end
754
-
755
- context 'that is empty' do
756
- let(:common_yaml) { '' }
757
-
758
- it 'fails with a "did not find"' do
759
- expect { lookup('a') }.to raise_error do |e|
760
- expect(e.message).to match(/did not find a value for the name 'a'/)
761
- end
762
- end
763
-
764
- it 'logs a warning that the file does not contain a hash' do
765
- expect { lookup('a') }.to raise_error(Puppet::DataBinding::LookupError)
766
- expect(warnings).to include(/spec\/data\/common.yaml: file does not contain a valid yaml hash/)
767
- end
768
- end
769
-
770
- context 'that contains illegal yaml' do
771
- let(:common_yaml) { "@!#%**&:\n" }
772
-
773
- it 'fails lookup and that the key is not found' do
774
- expect { lookup('a') }.to raise_error do |e|
775
- expect(e.message).to match(/Unable to parse/)
776
- end
777
- end
778
- end
779
-
780
- context 'that contains a legal yaml that is not a hash' do
781
- let(:common_yaml) { "- A list\n- of things" }
782
-
783
- it 'fails with a "invalid yaml hash"' do
784
- expect { lookup('a') }.to raise_error do |e|
785
- expect(e.message).to match(/spec\/data\/common.yaml: file does not contain a valid yaml hash/)
786
- end
787
- end
788
-
789
- context 'when strict mode is off' do
790
- before :each do
791
- Puppet[:strict] = :warning
792
- end
793
- it 'fails with a "did not find"' do
794
- expect { lookup('a') }.to raise_error do |e|
795
- expect(e.message).to match(/did not find a value for the name 'a'/)
796
- end
797
- end
798
-
799
- it 'logs a warning that the file does not contain a hash' do
800
- expect { lookup('a') }.to raise_error(Puppet::DataBinding::LookupError)
801
- expect(warnings).to include(/spec\/data\/common.yaml: file does not contain a valid yaml hash/)
802
- end
803
- end
804
- end
805
-
806
- context 'that contains a legal yaml hash with illegal types' do
807
- let(:common_yaml) do
808
- <<-YAML.unindent
809
- ---
810
- a: !ruby/object:Puppet::Graph::Key
811
- value: x
812
- YAML
813
- end
814
-
815
- it 'fails lookup and reports parsing failed' do
816
- expect { lookup('a') }.to raise_error do |e|
817
- expect(e.message).to match(/Unable to parse .*: Tried to load unspecified class: Puppet::Graph::Key/)
818
- end
819
- end
820
- end
821
-
822
- context 'that contains a legal yaml hash with unexpected types' do
823
- let(:common_yaml) do
824
- <<-YAML.unindent
825
- ---
826
- a: 123
827
- YAML
828
- end
829
-
830
- it 'fails lookup and reports a type mismatch' do
831
- expect { lookup('a', {}, false, String) }.to raise_error do |e|
832
- expect(e.message).to match(/Found value has wrong type, expects a String value, got Integer \(line: 1, column: \d+\)/)
833
- end
834
- end
835
- end
836
-
837
- context 'that contains illegal interpolations' do
838
- context 'in the form of an alias that is not the entire string' do
839
- let(:common_yaml) { <<-YAML.unindent }
840
- a: "%{alias('x')} and then some"
841
- x: value x
842
- YAML
843
-
844
- it 'fails lookup and reports a type mismatch' do
845
- expect { lookup('a') }.to raise_error("'alias' interpolation is only permitted if the expression is equal to the entire string")
846
- end
847
- end
848
-
849
- context 'in the form of an unknown function name' do
850
- let(:common_yaml) { <<-YAML.unindent }
851
- a: "%{what('x')}"
852
- x: value x
853
- YAML
854
-
855
- it 'fails lookup and reports a type mismatch' do
856
- expect { lookup('a') }.to raise_error("Unknown interpolation method 'what'")
857
- end
858
- end
859
- end
860
-
861
- context 'that contains an array with duplicates' do
862
- let(:common_yaml) { <<-YAML.unindent }
863
- a:
864
- - alpha
865
- - bravo
866
- - charlie
867
- - bravo
868
- YAML
869
-
870
- it 'retains the duplicates when using default merge strategy' do
871
- expect(lookup('a')).to eql(%w(alpha bravo charlie bravo))
872
- end
873
-
874
- it 'does deduplification when using merge strategy "unique"' do
875
- expect(lookup('a', :merge => 'unique')).to eql(%w(alpha bravo charlie))
876
- end
877
- end
878
- end
879
-
880
- context 'with lookup_options' do
881
- let(:environment_files) do
882
- {
883
- env_name => {
884
- 'hiera.yaml' => <<-YAML.unindent,
885
- ---
886
- version: 5
887
- YAML
888
- 'data' => {
889
- 'common.yaml' => common_yaml
890
- }
891
- }
892
- }
893
- end
894
-
895
- context 'that are empty' do
896
- let(:common_yaml) { <<-YAML.unindent }
897
- lookup_options:
898
- a: b
899
- YAML
900
-
901
- it 'ignores empty options' do
902
- expect(lookup('a')).to eq("b")
903
- end
904
- end
905
-
906
- context 'that contains a legal yaml hash with unexpected types' do
907
- let(:common_yaml) { <<-YAML.unindent }
908
- lookup_options:
909
- :invalid_symbol
910
- YAML
911
-
912
- it 'fails lookup and reports a type mismatch' do
913
- expect {
914
- lookup('a')
915
- }.to raise_error(Puppet::DataBinding::LookupError, /has wrong type, expects Puppet::LookupValue, got Runtime\[ruby, 'Symbol'\]/)
916
- end
917
- end
918
- end
919
-
920
- context 'with lookup_options configured using patterns' do
921
- let(:mod_common) {
922
- <<-YAML.unindent
923
- mod::hash_a:
924
- aa:
925
- aaa: aaa (from module)
926
- ab:
927
- aba: aba (from module)
928
- mod::hash_b:
929
- ba:
930
- baa: baa (from module)
931
- bb:
932
- bba: bba (from module)
933
- lookup_options:
934
- '^mod::ha.*_a':
935
- merge: deep
936
- '^mod::ha.*_b':
937
- merge: deep
938
- YAML
939
- }
940
-
941
- let(:mod_base) do
942
- {
943
- 'hiera.yaml' => <<-YAML.unindent,
944
- version: 5
945
- YAML
946
- 'data' => {
947
- 'common.yaml' => mod_common
948
- }
949
- }
950
- end
951
-
952
- let(:env_modules) do
953
- {
954
- 'mod' => mod_base
955
- }
956
- end
957
-
958
- let(:env_hiera_yaml) do
959
- <<-YAML.unindent
960
- ---
961
- version: 5
962
- hierarchy:
963
- - name: X
964
- paths:
965
- - first.yaml
966
- - second.yaml
967
- YAML
968
- end
969
-
970
- let(:env_lookup_options) { <<-YAML.unindent }
971
- lookup_options:
972
- b:
973
- merge: hash
974
- '^[^b]$':
975
- merge: deep
976
- '^c':
977
- merge: first
978
- '^b':
979
- merge: first
980
- '^mod::ha.*_b':
981
- merge: hash
982
- YAML
983
-
984
- let(:env_data) do
985
- {
986
- 'first.yaml' => <<-YAML.unindent + env_lookup_options,
987
- a:
988
- aa:
989
- aaa: a.aa.aaa
990
- b:
991
- ba:
992
- baa: b.ba.baa
993
- bb:
994
- bba: b.bb.bba
995
- c:
996
- ca:
997
- caa: c.ca.caa
998
- mod::hash_a:
999
- aa:
1000
- aab: aab (from environment)
1001
- ab:
1002
- aba: aba (from environment)
1003
- abb: abb (from environment)
1004
- mod::hash_b:
1005
- ba:
1006
- bab: bab (from environment)
1007
- bc:
1008
- bca: bca (from environment)
1009
- sa:
1010
- sa1: ['e', 'd', '--f']
1011
- YAML
1012
- 'second.yaml' => <<-YAML.unindent,
1013
- a:
1014
- aa:
1015
- aab: a.aa.aab
1016
- b:
1017
- ba:
1018
- bab: b.ba.bab
1019
- bb:
1020
- bbb: b.bb.bbb
1021
- c:
1022
- ca:
1023
- cab: c.ca.cab
1024
- sa:
1025
- sa1: ['b', 'a', 'f', 'c']
1026
- YAML
1027
- }
1028
- end
1029
-
1030
- it 'finds lookup_options that matches a pattern' do
1031
- expect(lookup('a')).to eql({'aa' => { 'aaa' => 'a.aa.aaa', 'aab' => 'a.aa.aab' }})
1032
- end
1033
-
1034
- it 'gives a direct key match higher priority than a matching pattern' do
1035
- expect(lookup('b')).to eql({'ba' => { 'baa' => 'b.ba.baa' }, 'bb' => { 'bba'=>'b.bb.bba' }})
1036
- end
1037
-
1038
- it 'uses the first matching pattern' do
1039
- expect(lookup('c')).to eql({'ca' => { 'caa' => 'c.ca.caa', 'cab' => 'c.ca.cab' }})
1040
- end
1041
-
1042
- it 'uses lookup_option found by pattern from module' do
1043
- expect(lookup('mod::hash_a')).to eql({
1044
- 'aa' => {
1045
- 'aaa' => 'aaa (from module)',
1046
- 'aab' => 'aab (from environment)'
1047
- },
1048
- 'ab' => {
1049
- 'aba' => 'aba (from environment)',
1050
- 'abb' => 'abb (from environment)'
1051
- }
1052
- })
1053
- end
1054
-
1055
- it 'merges lookup_options found by pattern in environment and module (environment wins)' do
1056
- expect(lookup('mod::hash_b')).to eql({
1057
- 'ba' => {
1058
- 'bab' => 'bab (from environment)'
1059
- },
1060
- 'bb' => {
1061
- 'bba' => 'bba (from module)'
1062
- },
1063
- 'bc' => {
1064
- 'bca' => 'bca (from environment)'
1065
- }
1066
- })
1067
- end
1068
-
1069
- context 'and lookup_options is empty' do
1070
- let(:mod_common) { <<-YAML.unindent }
1071
- lookup_options:
1072
- mod::a: b
1073
- YAML
1074
-
1075
- it 'ignores empty options' do
1076
- expect(lookup('mod::a')).to eq("b")
1077
- end
1078
- end
1079
-
1080
- context 'and lookup_options contains a legal hash with unexpected types' do
1081
- let(:mod_common) { <<-YAML.unindent }
1082
- lookup_options:
1083
- :invalid_symbol
1084
- YAML
1085
-
1086
- it 'fails lookup and reports a type mismatch' do
1087
- expect {
1088
- lookup('mod::a')
1089
- }.to raise_error(Puppet::DataBinding::LookupError, /has wrong type, expects Puppet::LookupValue, got Runtime\[ruby, 'Symbol'\]/)
1090
- end
1091
- end
1092
-
1093
- context 'and patterns in module are not limited to module keys' do
1094
- let(:mod_common) {
1095
- <<-YAML.unindent
1096
- mod::hash_a:
1097
- aa:
1098
- aaa: aaa (from module)
1099
- ab:
1100
- aba: aba (from module)
1101
- lookup_options:
1102
- '^.*_a':
1103
- merge: deep
1104
- YAML
1105
- }
1106
-
1107
- it 'fails with error' do
1108
- expect { lookup('mod::a') }.to raise_error(Puppet::DataBinding::LookupError, /all lookup_options patterns must match a key starting with module name/)
1109
- end
1110
- end
1111
-
1112
- context 'and there are no lookup options that do not use patterns' do
1113
-
1114
- let(:env_lookup_options) { <<-YAML.unindent }
1115
- lookup_options:
1116
- '^[^b]$':
1117
- merge: deep
1118
- '^c':
1119
- merge: first
1120
- '^b':
1121
- merge: first
1122
- '^mod::ha.*_b':
1123
- merge: hash
1124
- YAML
1125
-
1126
- it 'finds lookup_options that matches a pattern' do
1127
- expect(lookup('a')).to eql({'aa' => { 'aaa' => 'a.aa.aaa', 'aab' => 'a.aa.aab' }})
1128
- end
1129
- end
1130
-
1131
- context 'and lookup options use a hash' do
1132
-
1133
- let(:env_lookup_options) { <<-YAML.unindent }
1134
- lookup_options:
1135
- 'sa':
1136
- merge:
1137
- strategy: deep
1138
- knockout_prefix: --
1139
- sort_merged_arrays: true
1140
- YAML
1141
-
1142
- it 'applies knockout_prefix and sort_merged_arrays' do
1143
- expect(lookup('sa')).to eql({ 'sa1' => %w(a b c d e) })
1144
- end
1145
-
1146
- it 'overrides knockout_prefix and sort_merged_arrays with explicitly given values' do
1147
- expect(
1148
- lookup('sa', 'merge' => { 'strategy' => 'deep', 'knockout_prefix' => '##', 'sort_merged_arrays' => false })).to(
1149
- eql({ 'sa1' => %w(b a f c e d --f) }))
1150
- end
1151
- end
1152
- end
1153
-
1154
- context 'and an environment Hiera v5 configuration using globs' do
1155
- let(:env_hiera_yaml) do
1156
- <<-YAML.unindent
1157
- ---
1158
- version: 5
1159
- hierarchy:
1160
- - name: Globs
1161
- globs:
1162
- - "globs/*.yaml"
1163
- - "globs_%{domain}/*.yaml"
1164
- YAML
1165
- end
1166
-
1167
- let(:env_data) do
1168
- {
1169
- 'globs' => {
1170
- 'a.yaml' => <<-YAML.unindent,
1171
- glob_a: value glob_a
1172
- YAML
1173
- 'b.yaml' => <<-YAML.unindent
1174
- glob_b:
1175
- a: value glob_b.a
1176
- b: value glob_b.b
1177
- YAML
1178
- },
1179
- 'globs_example.com' => {
1180
- 'a.yaml' => <<-YAML.unindent,
1181
- glob_c: value glob_a
1182
- YAML
1183
- 'b.yaml' => <<-YAML.unindent
1184
- glob_d:
1185
- a: value glob_d.a
1186
- b: value glob_d.b
1187
- YAML
1188
-
1189
- }
1190
- }
1191
- end
1192
-
1193
- it 'finds environment data using globs' do
1194
- expect(lookup('glob_a')).to eql('value glob_a')
1195
- expect(warnings).to be_empty
1196
- end
1197
-
1198
- it 'finds environment data using interpolated globs' do
1199
- expect(lookup('glob_d.a')).to eql('value glob_d.a')
1200
- expect(warnings).to be_empty
1201
- end
1202
- end
1203
-
1204
- context 'and an environment Hiera v5 configuration using uris' do
1205
- let(:env_hiera_yaml) do
1206
- <<-YAML.unindent
1207
- ---
1208
- version: 5
1209
- hierarchy:
1210
- - name: Uris
1211
- uris:
1212
- - "http://test.example.com"
1213
- - "/some/arbitrary/path"
1214
- - "urn:with:opaque:path"
1215
- - "dothis%20-f%20bar"
1216
- data_hash: mod::uri_test_func
1217
- YAML
1218
- end
1219
-
1220
- let(:env_modules) do
1221
- {
1222
- 'mod' => { 'lib' => { 'puppet' => { 'functions' => { 'mod' => { 'uri_test_func.rb' => <<-RUBY } } } } }
1223
- Puppet::Functions.create_function(:'mod::uri_test_func') do
1224
- dispatch :uri_test_func do
1225
- param 'Hash', :options
1226
- param 'Puppet::LookupContext', :context
1227
- end
1228
-
1229
- def uri_test_func(options, context)
1230
- { 'uri' => [ options['uri'] ] }
1231
- end
1232
- end
1233
- RUBY
1234
- }
1235
- end
1236
-
1237
- it 'The uris are propagated in the options hash' do
1238
- expect(lookup('uri', 'merge' => 'unique')).to eql(
1239
- %w(http://test.example.com /some/arbitrary/path urn:with:opaque:path dothis%20-f%20bar))
1240
- expect(warnings).to be_empty
1241
- end
1242
-
1243
- context 'and a uri uses bad syntax' do
1244
- let(:env_hiera_yaml) do
1245
- <<-YAML.unindent
1246
- ---
1247
- version: 5
1248
- hierarchy:
1249
- - name: Uris
1250
- uri: "dothis -f bar"
1251
- data_hash: mod::uri_test_func
1252
- YAML
1253
- end
1254
-
1255
- it 'an attempt to lookup raises InvalidURIError' do
1256
- expect{ lookup('uri', 'merge' => 'unique') }.to raise_error(/bad URI/)
1257
- end
1258
- end
1259
- end
1260
-
1261
- context 'and an environment Hiera v5 configuration using mapped_paths' do
1262
- let(:scope_additions) do
1263
- {
1264
- 'mapped' => {
1265
- 'array_var' => ['a', 'b', 'c'],
1266
- 'hash_var' => { 'x' => 'a', 'y' => 'b', 'z' => 'c' },
1267
- 'string_var' => 's' },
1268
- 'var' => 'global_var' # overridden by mapped path variable
1269
- }
1270
- end
1271
-
1272
- let(:env_hiera_yaml) do
1273
- <<-YAML.unindent
1274
- ---
1275
- version: 5
1276
- hierarchy:
1277
- - name: Mapped Paths
1278
- mapped_paths: #{mapped_paths}
1279
- - name: Global Path
1280
- path: "%{var}.yaml"
1281
- YAML
1282
- end
1283
-
1284
- let(:environment_files) do
1285
- {
1286
- env_name => {
1287
- 'hiera.yaml' => env_hiera_yaml,
1288
- 'data' => env_data
1289
- }
1290
- }
1291
- end
1292
-
1293
- context 'that originates from an array' do
1294
- let (:mapped_paths) { '[mapped.array_var, var, "paths/%{var}.yaml"]' }
1295
-
1296
- let(:env_data) do
1297
- {
1298
- 'paths' => {
1299
- 'a.yaml' => <<-YAML.unindent,
1300
- path_a: value path_a
1301
- path_h:
1302
- a: value path_h.a
1303
- c: value path_h.c
1304
- YAML
1305
- 'b.yaml' => <<-YAML.unindent,
1306
- path_h:
1307
- b: value path_h.b
1308
- d: value path_h.d
1309
- YAML
1310
- 'd.yaml' => <<-YAML.unindent
1311
- path_h:
1312
- b: value path_h.b (from d.yaml)
1313
- d: value path_h.d (from d.yaml)
1314
- YAML
1315
- },
1316
- 'global_var.yaml' => <<-YAML.unindent,
1317
- path_h:
1318
- e: value path_h.e
1319
- YAML
1320
- 'other_var.yaml' => <<-YAML.unindent
1321
- path_h:
1322
- e: value path_h.e (from other_var.yaml)
1323
- YAML
1324
- }
1325
- end
1326
-
1327
- it 'finds environment data using mapped_paths' do
1328
- expect(lookup('path_a')).to eql('value path_a')
1329
- expect(warnings).to be_empty
1330
- end
1331
-
1332
- it 'includes mapped path in explain output' do
1333
- explanation = explain('path_h', 'merge' => 'deep')
1334
- ['a', 'b', 'c'].each do |var|
1335
- expect(explanation).to match(/^\s+Path "#{env_dir}\/spec\/data\/paths\/#{var}\.yaml"\n\s+Original path: "paths\/%\{var\}\.yaml"/)
1336
- end
1337
- expect(warnings).to be_empty
1338
- end
1339
-
1340
- it 'performs merges between mapped paths and global path interpolated using same key' do
1341
- expect(lookup('path_h', 'merge' => 'hash')).to eql(
1342
- {
1343
- 'a' => 'value path_h.a',
1344
- 'b' => 'value path_h.b',
1345
- 'c' => 'value path_h.c',
1346
- 'd' => 'value path_h.d',
1347
- 'e' => 'value path_h.e'
1348
- })
1349
- expect(warnings).to be_empty
1350
- end
1351
-
1352
- it 'keeps track of changes in key overridden by interpolated key' do
1353
- Puppet[:log_level] = 'debug'
1354
- collect_notices("notice('success')") do |scope|
1355
- expect(lookup_func.call(scope, 'path_h', 'merge' => 'hash')).to eql(
1356
- {
1357
- 'a' => 'value path_h.a',
1358
- 'b' => 'value path_h.b',
1359
- 'c' => 'value path_h.c',
1360
- 'd' => 'value path_h.d',
1361
- 'e' => 'value path_h.e'
1362
- })
1363
- scope.with_local_scope('var' => 'other_var') do
1364
- expect(lookup_func.call(scope, 'path_h', 'merge' => 'hash')).to eql(
1365
- {
1366
- 'a' => 'value path_h.a',
1367
- 'b' => 'value path_h.b',
1368
- 'c' => 'value path_h.c',
1369
- 'd' => 'value path_h.d',
1370
- 'e' => 'value path_h.e (from other_var.yaml)'
1371
- })
1372
- end
1373
- end
1374
- expect(notices).to eql(['success'])
1375
- expect(debugs.any? { |m| m =~ /Hiera configuration recreated due to change of scope variables used in interpolation expressions/ }).to be_truthy
1376
- end
1377
-
1378
- it 'keeps track of changes in elements of mapped key' do
1379
- Puppet[:log_level] = 'debug'
1380
- collect_notices("notice('success')") do |scope|
1381
- expect(lookup_func.call(scope, 'path_h', 'merge' => 'hash')).to eql(
1382
- {
1383
- 'a' => 'value path_h.a',
1384
- 'b' => 'value path_h.b',
1385
- 'c' => 'value path_h.c',
1386
- 'd' => 'value path_h.d',
1387
- 'e' => 'value path_h.e'
1388
- })
1389
- scope['mapped']['array_var'] = ['a', 'c', 'd']
1390
- expect(lookup_func.call(scope, 'path_h', 'merge' => 'hash')).to eql(
1391
- {
1392
- 'a' => 'value path_h.a',
1393
- 'b' => 'value path_h.b (from d.yaml)',
1394
- 'c' => 'value path_h.c',
1395
- 'd' => 'value path_h.d (from d.yaml)',
1396
- 'e' => 'value path_h.e'
1397
- })
1398
- end
1399
- expect(notices).to eql(['success'])
1400
- expect(debugs.any? { |m| m =~ /Hiera configuration recreated due to change of scope variables used in interpolation expressions/ }).to be_truthy
1401
- end
1402
- end
1403
-
1404
- context 'that originates from a hash' do
1405
- let (:mapped_paths) { '[mapped.hash_var, var, "paths/%{var.0}.%{var.1}.yaml"]' }
1406
-
1407
- let(:env_data) do
1408
- {
1409
- 'paths' => {
1410
- 'x.a.yaml' => <<-YAML.unindent,
1411
- path_xa: value path_xa
1412
- path_m:
1413
- a: value path_m.a
1414
- c: value path_m.c
1415
- YAML
1416
- 'y.b.yaml' => <<-YAML.unindent
1417
- path_m:
1418
- b: value path_m.b
1419
- d: value path_m.d
1420
- YAML
1421
- },
1422
- 'global_var.yaml' => <<-YAML.unindent
1423
- path_m:
1424
- e: value path_m.e
1425
- YAML
1426
- }
1427
- end
1428
-
1429
- it 'finds environment data using mapped_paths' do
1430
- expect(lookup('path_xa')).to eql('value path_xa')
1431
- expect(warnings).to be_empty
1432
- end
1433
-
1434
- it 'includes mapped path in explain output' do
1435
- explanation = explain('path_h', 'merge' => 'deep')
1436
- ['x\.a', 'y\.b', 'z\.c'].each do |var|
1437
- expect(explanation).to match(/^\s+Path "#{env_dir}\/spec\/data\/paths\/#{var}\.yaml"\n\s+Original path: "paths\/%\{var\.0\}\.%\{var\.1\}\.yaml"/)
1438
- end
1439
- expect(warnings).to be_empty
1440
- end
1441
-
1442
- it 'performs merges between mapped paths' do
1443
- expect(lookup('path_m', 'merge' => 'hash')).to eql(
1444
- {
1445
- 'a' => 'value path_m.a',
1446
- 'b' => 'value path_m.b',
1447
- 'c' => 'value path_m.c',
1448
- 'd' => 'value path_m.d',
1449
- 'e' => 'value path_m.e'
1450
- })
1451
- expect(warnings).to be_empty
1452
- end
1453
- end
1454
-
1455
- context 'that originates from a string' do
1456
- let (:mapped_paths) { '[mapped.string_var, var, "paths/%{var}.yaml"]' }
1457
-
1458
- let(:env_data) do
1459
- {
1460
- 'paths' => {
1461
- 's.yaml' => <<-YAML.unindent,
1462
- path_s: value path_s
1463
- YAML
1464
- }
1465
- }
1466
- end
1467
-
1468
- it 'includes mapped path in explain output' do
1469
- expect(explain('path_s')).to match(/^\s+Path "#{env_dir}\/spec\/data\/paths\/s\.yaml"\n\s+Original path: "paths\/%\{var\}\.yaml"/)
1470
- expect(warnings).to be_empty
1471
- end
1472
-
1473
- it 'finds environment data using mapped_paths' do
1474
- expect(lookup('path_s')).to eql('value path_s')
1475
- expect(warnings).to be_empty
1476
- end
1477
- end
1478
-
1479
- context 'where the enty does not exist' do
1480
- let (:mapped_paths) { '[mapped.nosuch_var, var, "paths/%{var}.yaml"]' }
1481
-
1482
- it 'finds environment data using mapped_paths' do
1483
- expect(explain('hello')).to match(/No such key: "hello"/)
1484
- expect(warnings).to be_empty
1485
- end
1486
- end
1487
- end
1488
-
1489
- context 'and an environment Hiera v3 configuration' do
1490
- let(:env_hiera_yaml) do
1491
- <<-YAML.unindent
1492
- ---
1493
- :backends: yaml
1494
- :yaml:
1495
- :datadir: #{env_dir}/#{env_name}/hieradata
1496
- YAML
1497
- end
1498
-
1499
- let(:environment_files) do
1500
- {
1501
- env_name => {
1502
- 'hiera.yaml' => env_hiera_yaml,
1503
- 'hieradata' => {
1504
- 'common.yaml' => <<-YAML.unindent,
1505
- g: Value g
1506
- YAML
1507
- }
1508
- }
1509
- }
1510
- end
1511
-
1512
- it 'will raise an error if --strict is set to error' do
1513
- Puppet[:strict] = :error
1514
- expect { lookup('g') }.to raise_error(Puppet::Error, /hiera.yaml version 3 cannot be used in an environment/)
1515
- end
1516
-
1517
- it 'will log a warning and ignore the file if --strict is set to warning' do
1518
- Puppet[:strict] = :warning
1519
- expect { lookup('g') }.to raise_error(Puppet::Error, /did not find a value for the name 'g'/)
1520
- end
1521
-
1522
- it 'will not log a warning and ignore the file if --strict is set to off' do
1523
- Puppet[:strict] = :off
1524
- expect { lookup('g') }.to raise_error(Puppet::Error, /did not find a value for the name 'g'/)
1525
- expect(warnings).to include(/hiera.yaml version 3 found at the environment root was ignored/)
1526
- end
1527
-
1528
- it 'will use the configuration if appointed by global setting but still warn when encountered by environment data provider' do
1529
- Puppet[:strict] = :warning
1530
- Puppet.settings[:hiera_config] = File.join(env_dir, env_name, 'hiera.yaml')
1531
- expect(lookup('g')).to eql('Value g')
1532
- expect(warnings).to include(/hiera.yaml version 3 found at the environment root was ignored/)
1533
- end
1534
- end
1535
-
1536
- context 'and a global empty Hiera configuration' do
1537
- let(:hiera_yaml_path) { File.join(code_dir, 'hiera.yaml') }
1538
- let(:code_dir_files) do
1539
- {
1540
- 'hiera.yaml' => '',
1541
- }
1542
- end
1543
-
1544
- let(:environment_files) do
1545
- {
1546
- env_name => {
1547
- 'hieradata' => {
1548
- 'common.yaml' => <<-YAML.unindent,
1549
- x: value x (from environment)
1550
- YAML
1551
- }
1552
- }
1553
- }
1554
- end
1555
-
1556
- before(:each) do
1557
- # Need to set here since spec_helper defines these settings in its "before each"
1558
- Puppet.settings[:hiera_config] = hiera_yaml_path
1559
- end
1560
-
1561
- it 'uses a Hiera version 3 defaults' do
1562
- expect(lookup('x')).to eql('value x (from environment)')
1563
- end
1564
-
1565
- context 'obtained using /dev/null', :unless => Puppet::Util::Platform.windows? do
1566
- let(:code_dir_files) { {} }
1567
-
1568
- it 'uses a Hiera version 3 defaults' do
1569
- Puppet[:hiera_config] = '/dev/null'
1570
- expect(lookup('x')).to eql('value x (from environment)')
1571
- end
1572
- end
1573
- end
1574
-
1575
- context 'and a global configuration' do
1576
- let(:hiera_yaml) do
1577
- <<-YAML.unindent
1578
- ---
1579
- :backends:
1580
- - yaml
1581
- - json
1582
- - custom
1583
- - hocon
1584
- :yaml:
1585
- :datadir: #{code_dir}/hieradata
1586
- :json:
1587
- :datadir: #{code_dir}/hieradata
1588
- :hocon:
1589
- :datadir: #{code_dir}/hieradata
1590
- :hierarchy:
1591
- - common
1592
- - "%{domain}"
1593
- :merge_behavior: deeper
1594
- YAML
1595
- end
1596
-
1597
- let(:code_dir_files) do
1598
- {
1599
- 'hiera.yaml' => hiera_yaml,
1600
- 'hieradata' => {
1601
- 'common.yaml' => <<-YAML.unindent,
1602
- a: value a (from global)
1603
- hash_b:
1604
- hash_ba:
1605
- bab: value hash_b.hash_ba.bab (from global)
1606
- hash_c:
1607
- hash_ca:
1608
- cab: value hash_c.hash_ca.cab (from global)
1609
- ipl_hiera_env: "environment value '%{hiera('mod_a::hash_a.a')}'"
1610
- ipl_hiera_mod: "module value '%{hiera('mod_a::abc')}'"
1611
- ipl_hiera_modc: "module value '%{hiera('mod_a::caller')}'"
1612
- YAML
1613
- 'example.com.yaml' => <<-YAML.unindent,
1614
- x: value x (from global example.com.yaml)
1615
- YAML
1616
- 'common.json' => <<-JSON.unindent,
1617
- {
1618
- "hash_b": {
1619
- "hash_ba": {
1620
- "bac": "value hash_b.hash_ba.bac (from global json)"
1621
- }
1622
- },
1623
- "hash_c": {
1624
- "hash_ca": {
1625
- "cac": "value hash_c.hash_ca.cac (from global json)"
1626
- }
1627
- }
1628
- }
1629
- JSON
1630
- 'common.conf' => <<-HOCON.unindent,
1631
- // The 'xs' is a value used for testing
1632
- xs = { subkey = value xs.subkey (from global hocon) }
1633
- HOCON
1634
- }
1635
- }
1636
- end
1637
-
1638
- before(:all) do
1639
- $LOAD_PATH.unshift(my_fixture_dir)
1640
- end
1641
-
1642
- after(:all) do
1643
- if Kernel.const_defined?(:Hiera) && Hiera.const_defined?(:Backend)
1644
- Hiera::Backend.send(:remove_const, :Custom_backend) if Hiera::Backend.const_defined?(:Custom_backend)
1645
- Hiera::Backend.send(:remove_const, :Other_backend) if Hiera::Backend.const_defined?(:Other_backend)
1646
- end
1647
- $LOAD_PATH.shift
1648
- end
1649
-
1650
- before(:each) do
1651
- # Need to set here since spec_helper defines these settings in its "before each"
1652
- Puppet.settings[:codedir] = populated_code_dir
1653
- Puppet.settings[:hiera_config] = File.join(code_dir, 'hiera.yaml')
1654
- end
1655
-
1656
- around(:each) do |example|
1657
- Puppet.override(:environments => environments, :current_environment => env) do
1658
- example.run
1659
- end
1660
- end
1661
-
1662
- context 'version 3', :if => Puppet.features.hiera? do
1663
- it 'finds data in in global layer and reports deprecation warnings for hiera.yaml' do
1664
- expect(lookup('a')).to eql('value a (from global)')
1665
- expect(warnings).to include(/Use of 'hiera.yaml' version 3 is deprecated. It should be converted to version 5/)
1666
- end
1667
-
1668
- it 'explain contains output from global layer' do
1669
- explanation = explain('a')
1670
- expect(explanation).to include('Global Data Provider (hiera configuration version 3)')
1671
- expect(explanation).to include('Hierarchy entry "yaml"')
1672
- expect(explanation).to include('Hierarchy entry "json"')
1673
- expect(explanation).to include('Found key: "a" value: "value a (from global)"')
1674
- end
1675
-
1676
- it 'ignores merge behavior specified in global hiera.yaml' do
1677
- expect(lookup('hash_b')).to eql(
1678
- { 'hash_ba' => { 'bab' => 'value hash_b.hash_ba.bab (from global)'} })
1679
- end
1680
-
1681
- it 'uses the merge from lookup options to merge all layers' do
1682
- expect(lookup('hash_c')).to eql(
1683
- { 'hash_ca' => { 'cab' => 'value hash_c.hash_ca.cab (from global)' } })
1684
- end
1685
-
1686
- it 'uses the explicitly given merge to override lookup options and to merge all layers' do
1687
- expect(lookup('hash_c', 'merge' => 'deep')).to eql(
1688
- {
1689
- 'hash_ca' =>
1690
- {
1691
- 'caa' => 'value hash_c.hash_ca.caa (from environment)',
1692
- 'cab' => 'value hash_c.hash_ca.cab (from global)',
1693
- 'cac' => 'value hash_c.hash_ca.cac (from global json)',
1694
- 'cad' => 'value hash_c.hash_ca.cad (from global custom)'
1695
- }
1696
- })
1697
- end
1698
-
1699
- it 'paths are interpolated' do
1700
- expect(lookup('x')).to eql('value x (from global example.com.yaml)')
1701
- end
1702
-
1703
- it 'backend data sources are propagated to custom backend' do
1704
- expect(lookup('datasources')).to eql(['common', 'example.com'])
1705
- end
1706
-
1707
- it 'backend specific options are propagated to custom backend' do
1708
- expect(lookup('other_option')).to eql('value of other_option')
1709
- end
1710
-
1711
- it 'dotted keys are passed down to custom backend' do
1712
- expect(lookup('dotted.key')).to eql('custom backend received request for dotted.key value')
1713
- end
1714
-
1715
- it 'delegates configured hocon backend to hocon_data function' do
1716
- expect(explain('xs')).to match(/Hierarchy entry "hocon"\n.*\n.*\n.*"common"\n\s*Found key: "xs"/m)
1717
- end
1718
-
1719
- it 'can dig down into subkeys provided by hocon_data function' do
1720
- expect(lookup('xs.subkey')).to eql('value xs.subkey (from global hocon)')
1721
- end
1722
-
1723
- it 'multiple hiera3_backend declarations can be used and are merged into the generated config' do
1724
- expect(lookup(['datasources', 'other_option'])).to eql([['common', 'example.com'], 'value of other_option'])
1725
- expect(Hiera::Config.instance_variable_get(:@config)).to eql(
1726
- {
1727
- :backends => ['custom', 'other'],
1728
- :hierarchy => ['common', '%{domain}'],
1729
- :custom => { :datadir => "#{code_dir}/hieradata" },
1730
- :other => { :other_option => 'value of other_option', :datadir=>"#{code_dir}/hieradata" },
1731
- :logger => 'puppet'
1732
- })
1733
- end
1734
-
1735
- context 'with a module data provider' do
1736
- let(:module_files) do
1737
- {
1738
- 'mod_a' => {
1739
- 'hiera.yaml' => <<-YAML.unindent,
1740
- version: 5
1741
- hierarchy:
1742
- - name: Common
1743
- path: common.yaml
1744
- YAML
1745
- 'data' => {
1746
- 'common.yaml' => <<-YAML.unindent
1747
- mod_a::abc: value mod_a::abc (from module)
1748
- mod_a::caller: "calling module is %{calling_module}"
1749
- YAML
1750
- }
1751
- }
1752
- }
1753
- end
1754
-
1755
- let(:environment_files) do
1756
- {
1757
- env_name => {
1758
- 'hiera.yaml' => env_hiera_yaml,
1759
- 'data' => env_data,
1760
- 'modules' => module_files
1761
- }
1762
- }
1763
- end
1764
-
1765
- it "interpolation function 'hiera' finds values in environment" do
1766
- expect(lookup('ipl_hiera_env')).to eql("environment value 'value mod_a::hash_a.a (from environment)'")
1767
- end
1768
-
1769
- it "interpolation function 'hiera' finds values in module" do
1770
- expect(lookup('ipl_hiera_mod')).to eql("module value 'value mod_a::abc (from module)'")
1771
- end
1772
-
1773
- it "interpolation function 'hiera' finds values in module and that module does not find %{calling_module}" do
1774
- expect(lookup('ipl_hiera_modc')).to eql("module value 'calling module is '")
1775
- end
1776
-
1777
- context 'but no environment data provider' do
1778
- let(:environment_files) do
1779
- {
1780
- env_name => {
1781
- 'modules' => module_files
1782
- }
1783
- }
1784
- end
1785
-
1786
- it "interpolation function 'hiera' does not find values in a module" do
1787
- expect(lookup('ipl_hiera_mod')).to eql("module value ''")
1788
- end
1789
- end
1790
- end
1791
-
1792
-
1793
- context 'using an eyaml backend' do
1794
- let(:private_key_name) { 'private_key.pkcs7.pem' }
1795
- let(:public_key_name) { 'public_key.pkcs7.pem' }
1796
-
1797
- let(:private_key) do
1798
- <<-PKCS7.unindent
1799
- -----BEGIN RSA PRIVATE KEY-----
1800
- MIIEogIBAAKCAQEAwHB3GvImq59em4LV9DMfP0Zjs21eW3Jd5I9fuY0jLJhIkH6f
1801
- CR7tyOpYV6xUj+TF8giq9WLxZI7sourMJMWjEWhVjgUr5lqp1RLv4lwfDv3Wk4XC
1802
- 2LUuqj1IAErUXKeRz8i3lUSZW1Pf4CaMpnIiPdWbz6f0KkaJSFi9bqexONBx4fKQ
1803
- NlgZwm2/aYjjrYng788I0QhWDKUqsQOi5mZKlHNRsDlk7J3Afhsx/jTLrCX/G8+2
1804
- tPtLsHyRN39kluM5vYHbKXDsCG/a88Z2yUE2+r4Clp0FUKffiEDBPm0/H0sQ4Q1o
1805
- EfQFDQRKaIkhpsm0nOnLYTy3/xJc5uqDNkLiawIDAQABAoIBAE98pNXOe8ab93oI
1806
- mtNZYmjCbGAqprTjEoFb71A3SfYbmK2Gf65GxjUdBwx/tBYTiuekSOk+yzKcDoZk
1807
- sZnmwKpqDByzaiSmAkxunANFxdZtZvpcX9UfUX0j/t+QCROUa5gF8j6HrUiZ5nkx
1808
- sxr1PcuItekaGLJ1nDLz5JsWTQ+H4M+GXQw7/t96x8v8g9el4exTiAHGk6Fv16kD
1809
- 017T02M9qTTmV3Ab/enDIBmKVD42Ta36K/wc4l1aoUQNiRbIGVh96Cgd1CFXLF3x
1810
- CsaNbYT4SmRXaYqoj6MKq+QFEGxadFmJy48NoSd4joirIn2lUjHxJebw3lLbNLDR
1811
- uvQnQ2ECgYEA/nD94wEMr6078uMv6nKxPpNGq7fihwSKf0G/PQDqrRmjUCewuW+k
1812
- /iXMe1Y/y0PjFeNlSbUsUvKQ5xF7F/1AnpuPHIrn3cjGVLb71W+zen1m8SnhsW/f
1813
- 7dPgtcb4SCvfhmLgoov+P34YcNfGi6qgPUu6319IqoB3BIi7PvfEomkCgYEAwZ4+
1814
- V0bMjFdDn2hnYzjTNcF2aUQ1jPvtuETizGwyCbbMLl9522lrjC2DrH41vvqX35ct
1815
- CBJkhQFbtHM8Gnmozv0vxhI2jP+u14mzfePZsaXuYrEgWRj+BCsYUHodXryxnEWj
1816
- yVrTNskab1B5jFm2SCJDmKcycBOYpRBLCMx6W7MCgYBA99z7/6KboOIzzKrJdGup
1817
- jLV410UyMIikoccQ7pD9jhRTPS80yjsY4dHqlEVJw5XSWvPb9DTTITi6p44EvBep
1818
- 6BKMuTMnQELUEr0O7KypVCfa4FTOl8BX28f+4kU3OGykxc6R8qkC0VGwTohV1UWB
1819
- ITsgGhZV4uOA9uDI3T8KMQKBgEnQY2HwmuDSD/TA39GDA3qV8+ez2lqSXRGIKZLX
1820
- mMf9SaBQQ+uzKA4799wWDbVuYeIbB07xfCL83pJP8FUDlqi6+7Celu9wNp7zX1ua
1821
- Nw8z/ErhzjxJe+Xo7A8aTwIkG+5A2m1UU/up9YsEeiJYvVaIwY58B42U2vfq20BS
1822
- fD9jAoGAX2MscBzIsmN+U9R0ptL4SXcPiVnOl8mqvQWr1B4OLgxX7ghht5Fs956W
1823
- bHipxOWMFCPJA/AhNB8q1DvYiD1viZbIALSCJVUkzs4AEFIjiPsCBKxerl7jF6Xp
1824
- 1WYSaCmfvoCVEpFNt8cKp4Gq+zEBYAV4Q6TkcD2lDtEW49MuN8A=
1825
- -----END RSA PRIVATE KEY-----
1826
- PKCS7
1827
- end
1828
-
1829
- let(:public_key) do
1830
- <<-PKCS7.unindent
1831
- -----BEGIN CERTIFICATE-----
1832
- MIIC2TCCAcGgAwIBAgIBATANBgkqhkiG9w0BAQUFADAAMCAXDTE3MDExMzA5MTY1
1833
- MloYDzIwNjcwMTAxMDkxNjUyWjAAMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
1834
- CgKCAQEAwHB3GvImq59em4LV9DMfP0Zjs21eW3Jd5I9fuY0jLJhIkH6fCR7tyOpY
1835
- V6xUj+TF8giq9WLxZI7sourMJMWjEWhVjgUr5lqp1RLv4lwfDv3Wk4XC2LUuqj1I
1836
- AErUXKeRz8i3lUSZW1Pf4CaMpnIiPdWbz6f0KkaJSFi9bqexONBx4fKQNlgZwm2/
1837
- aYjjrYng788I0QhWDKUqsQOi5mZKlHNRsDlk7J3Afhsx/jTLrCX/G8+2tPtLsHyR
1838
- N39kluM5vYHbKXDsCG/a88Z2yUE2+r4Clp0FUKffiEDBPm0/H0sQ4Q1oEfQFDQRK
1839
- aIkhpsm0nOnLYTy3/xJc5uqDNkLiawIDAQABo1wwWjAPBgNVHRMBAf8EBTADAQH/
1840
- MB0GA1UdDgQWBBSejWrVnw7QaBjNFCHMNFi+doSOcTAoBgNVHSMEITAfgBSejWrV
1841
- nw7QaBjNFCHMNFi+doSOcaEEpAIwAIIBATANBgkqhkiG9w0BAQUFAAOCAQEAAe85
1842
- BQ1ydAHFqo0ib38VRPOwf5xPHGbYGhvQi4/sU6aTuR7pxaOJPYz05jLhS+utEmy1
1843
- sknBq60G67yhQE7IHcfwrl1arirG2WmKGvAbjeYL2K1UiU0pVD3D+Klkv/pK6jIQ
1844
- eOJRGb3qNUn0Sq9EoYIOXiGXQ641F0bZZ0+5H92kT1lmnF5oLfCb84ImD9T3snH6
1845
- pIr5RKRx/0YmJIcv3WdpoPT903rOJiRIEgIj/hDk9QZTBpm222Ul5yQQ5pBywpSp
1846
- xh0bmJKAQWhQm7QlybKfyaQmg5ot1jEzWAvD2I5FjHQxmAlchjb6RreaRhExj+JE
1847
- 5O117dMBdzDBjcNMOA==
1848
- -----END CERTIFICATE-----
1849
- PKCS7
1850
- end
1851
-
1852
- let(:keys_dir) do
1853
- keys = tmpdir('keys')
1854
- dir_contained_in(keys, {
1855
- private_key_name => private_key,
1856
- public_key_name => public_key
1857
- })
1858
- keys
1859
- end
1860
-
1861
- let(:private_key_path) { File.join(keys_dir, private_key_name) }
1862
- let(:public_key_path) { File.join(keys_dir, public_key_name) }
1863
- let(:hiera_yaml) do
1864
- <<-YAML.unindent
1865
- :backends:
1866
- - eyaml
1867
- - yaml
1868
- :eyaml:
1869
- :datadir: #{code_dir}/hieradata
1870
- :pkcs7_private_key: #{private_key_path}
1871
- :pkcs7_public_key: #{public_key_path}
1872
- :yaml:
1873
- :datadir: #{code_dir}/hieradata
1874
- :hierarchy:
1875
- - common
1876
- YAML
1877
- end
1878
-
1879
- let(:data_files) do
1880
- {
1881
- 'common.yaml' => <<-YAML.unindent,
1882
- b: value 'b' (from global)
1883
- c:
1884
- c_a: value c_a (from global)
1885
- YAML
1886
- 'common.eyaml' => <<-YAML.unindent
1887
- a: >
1888
- ENC[PKCS7,MIIBmQYJKoZIhvcNAQcDoIIBijCCAYYCAQAxggEhMIIBHQIBADAFMAACAQEw
1889
- DQYJKoZIhvcNAQEBBQAEggEAH457bsfL8kYw9O50roE3dcE21nCnmPnQ2XSX
1890
- LYRJ2C78LarbfFonKz0gvDW7tyhsLWASFCFaiU8T1QPBd2b3hoQK8E4B2Ual
1891
- xga/K7r9y3OSgRomTm9tpTltC6re0Ubh3Dy71H61obwxEdNVTqjPe95+m2b8
1892
- 6zWZVnzZzXXsTG1S17yJn1zaB/LXHbWNy4KyLLKCGAml+Gfl6ZMjmaplTmUA
1893
- QIC5rI8abzbPP3TDMmbLOGNkrmLqI+3uS8tSueTMoJmWaMF6c+H/cA7oRxmV
1894
- QCeEUVXjyFvCHcmbA+keS/RK9XF+vc07/XS4XkYSPs/I5hLQji1y9bkkGAs0
1895
- tehxQjBcBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBDHpA6Fcl/R16aIYcow
1896
- oiO4gDAvfFH6jLUwXkcYtagnwdmhkd9TQJtxNWcIwMpvmk036MqIoGwwhQdg
1897
- gV4beiCFtLU=]
1898
- a_ref: "A reference to %{hiera('a')}"
1899
- b_ref: "A reference to %{hiera('b')}"
1900
- c_ref: "%{alias('c')}"
1901
- :symbol: "A symbol"
1902
- YAML
1903
- }
1904
- end
1905
-
1906
- let(:code_dir_files) do
1907
- {
1908
- 'hiera.yaml' => hiera_yaml,
1909
- 'hieradata' => data_files
1910
- }
1911
- end
1912
-
1913
- before(:each) do
1914
- Puppet.settings[:hiera_config] = File.join(code_dir, 'hiera.yaml')
1915
- end
1916
-
1917
- it 'finds data in the global layer' do
1918
- expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
1919
- end
1920
-
1921
- it 'can use a hiera interpolation' do
1922
- expect(lookup('a_ref')).to eql("A reference to Encrypted value 'a' (from global)")
1923
- end
1924
-
1925
- it 'can use a hiera interpolation that refers back to yaml' do
1926
- expect(lookup('b_ref')).to eql("A reference to value 'b' (from global)")
1927
- end
1928
-
1929
- it 'can use a hiera interpolation that refers back to yaml, but only in global layer' do
1930
- expect(lookup(['c', 'c_ref'], 'merge' => 'deep')).to eql([{'c_a' => 'value c_a (from global)', 'c_b' => 'value c_b (from environment)'}, { 'c_a' => 'value c_a (from global)' }])
1931
- end
1932
-
1933
- it 'delegates configured eyaml backend to eyaml_lookup_key function' do
1934
- expect(explain('a')).to match(/Hierarchy entry "eyaml"\n.*\n.*\n.*"common"\n\s*Found key: "a"/m)
1935
- end
1936
- end
1937
-
1938
- context 'using deep_merge_options' do
1939
- let(:hiera_yaml) do
1940
- <<-YAML.unindent
1941
- ---
1942
- :backends:
1943
- - yaml
1944
- :yaml:
1945
- :datadir: #{code_dir}/hieradata
1946
- :hierarchy:
1947
- - common
1948
- - other
1949
- :merge_behavior: deeper
1950
- :deep_merge_options:
1951
- :unpack_arrays: ','
1952
- YAML
1953
- end
1954
-
1955
- let(:code_dir_files) do
1956
- {
1957
- 'hiera.yaml' => hiera_yaml,
1958
- 'hieradata' => {
1959
- 'common.yaml' => <<-YAML.unindent,
1960
- hash:
1961
- array:
1962
- - x1,x2
1963
- array:
1964
- - x1,x2
1965
- str: a string
1966
- mixed:
1967
- x: hx
1968
- y: hy
1969
- YAML
1970
- 'other.yaml' => <<-YAML.unindent,
1971
- hash:
1972
- array:
1973
- - x3
1974
- - x4
1975
- array:
1976
- - x3
1977
- - x4
1978
- str: another string
1979
- mixed:
1980
- - h1
1981
- - h2
1982
- YAML
1983
- }
1984
- }
1985
- end
1986
-
1987
- it 'ignores configured merge_behavior when looking up arrays' do
1988
- expect(lookup('array')).to eql(['x1,x2'])
1989
- end
1990
-
1991
- it 'ignores configured merge_behavior when merging arrays' do
1992
- expect(lookup('array', 'merge' => 'unique')).to eql(['x1,x2', 'x3', 'x4'])
1993
- end
1994
-
1995
- it 'ignores configured merge_behavior when looking up hashes' do
1996
- expect(lookup('hash')).to eql({'array' => ['x1,x2']})
1997
- end
1998
-
1999
- it 'ignores configured merge_behavior when merging hashes' do
2000
- expect(lookup('hash', 'merge' => 'hash')).to eql({'array' => ['x1,x2']})
2001
- end
2002
- end
2003
-
2004
- context 'using relative datadir paths' do
2005
- let(:hiera_yaml) do
2006
- <<-YAML.unindent
2007
- ---
2008
- :backends:
2009
- - yaml
2010
- :yaml:
2011
- :datadir: relative_data
2012
- :hierarchy:
2013
- - common
2014
- YAML
2015
- end
2016
-
2017
- let(:populated_code_dir) do
2018
- dir_contained_in(code_dir, code_dir_files.merge({
2019
- 'fake_cwd' => {
2020
- 'relative_data' => {
2021
- 'common.yaml' => <<-YAML.unindent
2022
- a: value a (from fake_cwd/relative_data/common.yaml)
2023
- YAML
2024
- }
2025
- }
2026
- }))
2027
- code_dir
2028
- end
2029
-
2030
- around(:each) do |example|
2031
- cwd = Dir.pwd
2032
- Dir.chdir(File.join(code_dir, 'fake_cwd'))
2033
- begin
2034
- example.run
2035
- ensure
2036
- Dir.chdir(cwd)
2037
- end
2038
- end
2039
-
2040
- it 'finds data from data file beneath relative datadir' do
2041
- expect(lookup('a')).to eql('value a (from fake_cwd/relative_data/common.yaml)')
2042
- end
2043
- end
2044
- end
2045
-
2046
- context 'version 5' do
2047
- let(:scope_additions) { { 'ipl_datadir' => 'hieradata' } }
2048
- let(:hiera_yaml) do
2049
- <<-YAML.unindent
2050
- ---
2051
- version: 5
2052
- defaults:
2053
- datadir: "%{ipl_datadir}"
2054
-
2055
- hierarchy:
2056
- - name: Yaml
2057
- data_hash: yaml_data
2058
- paths:
2059
- - common.yaml
2060
- - "%{domain}.yaml"
2061
- - name: Json
2062
- data_hash: json_data
2063
- paths:
2064
- - common.json
2065
- - "%{domain}.json"
2066
- - name: Hocon
2067
- data_hash: hocon_data
2068
- paths:
2069
- - common.conf
2070
- - "%{domain}.conf"
2071
- YAML
2072
- end
2073
-
2074
- it 'finds global data and reports no deprecation warnings' do
2075
- expect(lookup('a')).to eql('value a (from global)')
2076
- expect(warnings).to be_empty
2077
- end
2078
-
2079
- it 'explain contains output from global layer' do
2080
- explanation = explain('a')
2081
- expect(explanation).to include('Global Data Provider (hiera configuration version 5)')
2082
- expect(explanation).to include('Hierarchy entry "Yaml"')
2083
- expect(explanation).to include('Hierarchy entry "Json"')
2084
- expect(explanation).to include('Hierarchy entry "Hocon"')
2085
- expect(explanation).to include('Found key: "a" value: "value a (from global)"')
2086
- end
2087
-
2088
- it 'uses the explicitly given merge to override lookup options and to merge all layers' do
2089
- expect(lookup('hash_c', 'merge' => 'deep')).to eql(
2090
- {
2091
- 'hash_ca' =>
2092
- {
2093
- 'caa' => 'value hash_c.hash_ca.caa (from environment)',
2094
- 'cab' => 'value hash_c.hash_ca.cab (from global)',
2095
- 'cac' => 'value hash_c.hash_ca.cac (from global json)',
2096
- }
2097
- })
2098
- end
2099
-
2100
- it 'provides a sensible error message when the hocon library is not loaded' do
2101
- allow(Puppet.features).to receive(:hocon?).and_return(false)
2102
-
2103
- expect { lookup('a') }.to raise_error do |e|
2104
- expect(e.message).to match(/Lookup using Hocon data_hash function is not supported without hocon library/)
2105
- end
2106
- end
2107
-
2108
- context 'with missing path declaraion' do
2109
- context 'and yaml_data function' do
2110
- let(:hiera_yaml) { <<-YAML.unindent }
2111
- version: 5
2112
- hierarchy:
2113
- - name: Yaml
2114
- data_hash: yaml_data
2115
- YAML
2116
-
2117
- it 'fails and reports the missing path' do
2118
- expect { lookup('a') }.to raise_error(/one of 'path', 'paths' 'glob', 'globs' or 'mapped_paths' must be declared in hiera.yaml when using this data_hash function/)
2119
- end
2120
- end
2121
-
2122
- context 'and json_data function' do
2123
- let(:hiera_yaml) { <<-YAML.unindent }
2124
- version: 5
2125
- hierarchy:
2126
- - name: Json
2127
- data_hash: json_data
2128
- YAML
2129
-
2130
- it 'fails and reports the missing path' do
2131
- expect { lookup('a') }.to raise_error(/one of 'path', 'paths' 'glob', 'globs' or 'mapped_paths' must be declared in hiera.yaml when using this data_hash function/)
2132
- end
2133
- end
2134
-
2135
- context 'and hocon_data function' do
2136
- let(:hiera_yaml) { <<-YAML.unindent }
2137
- version: 5
2138
- hierarchy:
2139
- - name: Hocon
2140
- data_hash: hocon_data
2141
- YAML
2142
-
2143
- it 'fails and reports the missing path' do
2144
- expect { lookup('a') }.to raise_error(/one of 'path', 'paths' 'glob', 'globs' or 'mapped_paths' must be declared in hiera.yaml when using this data_hash function/)
2145
- end
2146
- end
2147
-
2148
- context 'and eyaml_lookup_key function', :if => Puppet.features.hiera_eyaml? do
2149
- let(:hiera_yaml) { <<-YAML.unindent }
2150
- version: 5
2151
- hierarchy:
2152
- - name: Yaml
2153
- lookup_key: eyaml_lookup_key
2154
- YAML
2155
-
2156
- it 'fails and reports the missing path' do
2157
- expect { lookup('a') }.to raise_error(/one of 'path', 'paths' 'glob', 'globs' or 'mapped_paths' must be declared in hiera.yaml when using this lookup_key function/)
2158
- end
2159
- end
2160
- end
2161
- end
2162
-
2163
- context 'with a hiera3_backend that has no paths', :if => Puppet.features.hiera? do
2164
- let(:hiera_yaml) do
2165
- <<-YAML.unindent
2166
- ---
2167
- version: 5
2168
- hierarchy:
2169
- - name: Custom
2170
- hiera3_backend: custom
2171
- YAML
2172
- end
2173
-
2174
- it 'calls the backend' do
2175
- expect(lookup('hash_c')).to eql(
2176
- { 'hash_ca' => { 'cad' => 'value hash_c.hash_ca.cad (from global custom)' }})
2177
- end
2178
- end
2179
- end
2180
-
2181
- context 'and a module' do
2182
- let(:mod_a_files) { {} }
2183
-
2184
- let(:populated_env_dir) do
2185
- dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files }))
2186
- env_dir
2187
- end
2188
-
2189
- context 'that has no lookup configured' do
2190
- let(:mod_a_files) do
2191
- {
2192
- 'mod_a' => {
2193
- 'data' => {
2194
- 'common.yaml' => <<-YAML.unindent
2195
- ---
2196
- mod_a::b: value mod_a::b (from mod_a)
2197
- YAML
2198
- }
2199
- }
2200
- }
2201
- end
2202
-
2203
- it 'does not find data in the module' do
2204
- expect { lookup('mod_a::b') }.to raise_error(Puppet::DataBinding::LookupError, /did not find a value for the name 'mod_a::b'/)
2205
- end
2206
-
2207
- context 'with a Hiera v3 configuration', :if => Puppet.features.hiera? do
2208
- let(:mod_a_files) do
2209
- {
2210
- 'mod_a' => {
2211
- 'hiera.yaml' => <<-YAML.unindent
2212
- ---
2213
- :backends: yaml
2214
- YAML
2215
- }
2216
- }
2217
- end
2218
-
2219
- it 'raises a warning' do
2220
- expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
2221
- expect(warnings).to include(/hiera.yaml version 3 found at module root was ignored/)
2222
- end
2223
- end
2224
-
2225
- context "but a metadata.json with 'module_data_provider=hiera'" do
2226
- let(:mod_a_files_1) { DeepMerge.deep_merge!(mod_a_files, 'mod_a' => { 'metadata.json' => <<-JSON.unindent }) }
2227
- {
2228
- "name": "example/mod_a",
2229
- "version": "0.0.2",
2230
- "source": "git@github.com/example/mod_a.git",
2231
- "dependencies": [],
2232
- "author": "Bob the Builder",
2233
- "license": "Apache-2.0",
2234
- "data_provider": "hiera"
2235
- }
2236
- JSON
2237
-
2238
- let(:populated_env_dir) do
2239
- dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files_1 }))
2240
- env_dir
2241
- end
2242
-
2243
- it 'finds data in the module and reports deprecation warning for metadata.json' do
2244
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2245
- expect(warnings).to include(/Defining "data_provider": "hiera" in metadata.json is deprecated. A 'hiera.yaml' file should be used instead/)
2246
- end
2247
-
2248
- context 'and a hiera.yaml file' do
2249
- let(:mod_a_files_2) { DeepMerge.deep_merge!(mod_a_files_1, 'mod_a' => { 'hiera.yaml' => <<-YAML.unindent }) }
2250
- ---
2251
- version: 4
2252
- hierarchy:
2253
- - name: common
2254
- backend: yaml
2255
- YAML
2256
-
2257
- let(:populated_env_dir) do
2258
- dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files_2 }))
2259
- env_dir
2260
- end
2261
-
2262
- it 'finds data in the module and reports deprecation warnings for both metadata.json and hiera.yaml' do
2263
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2264
- expect(warnings).to include(/Defining "data_provider": "hiera" in metadata.json is deprecated/)
2265
- expect(warnings).to include(/Use of 'hiera.yaml' version 4 is deprecated. It should be converted to version 5/)
2266
- end
2267
- end
2268
- end
2269
- end
2270
-
2271
- context 'using deep merge and module values that aliases environment values' do
2272
- let(:mod_a_files) do
2273
- {
2274
- 'mod_a' => {
2275
- 'data' => {
2276
- 'common.yaml' => <<-YAML.unindent,
2277
- ---
2278
- mod_a::hash:
2279
- b: value b (from module)
2280
- lookup_options:
2281
- mod_a::hash:
2282
- merge: deep
2283
- YAML
2284
- },
2285
- 'hiera.yaml' => <<-YAML.unindent,
2286
- ---
2287
- version: 5
2288
- hierarchy:
2289
- - name: "Common"
2290
- path: "common.yaml"
2291
- - name: "Other"
2292
- path: "other.yaml"
2293
- YAML
2294
- }
2295
- }
2296
- end
2297
- let(:env_data) do
2298
- {
2299
- 'common.yaml' => <<-YAML.unindent
2300
- a: value a (from environment)
2301
- mod_a::hash:
2302
- a: value mod_a::hash.a (from environment)
2303
- c: '%{alias("a")}'
2304
- YAML
2305
- }
2306
- end
2307
-
2308
- it 'continues with module lookup after alias is resolved in environment' do
2309
- expect(lookup('mod_a::hash')).to eql(
2310
- {
2311
- 'a' => 'value mod_a::hash.a (from environment)',
2312
- 'b' => 'value b (from module)',
2313
- 'c' => 'value a (from environment)'
2314
- })
2315
- end
2316
- end
2317
-
2318
- context 'using a data_hash that reads a yaml file' do
2319
- let(:defaults) {
2320
- {
2321
- 'mod_a::xd' => 'value mod_a::xd (from default)',
2322
- 'mod_a::xd_found' => 'value mod_a::xd_found (from default)',
2323
- 'scope_xd' => 'value scope_xd (from default)'
2324
- }}
2325
- let(:overrides) {
2326
- {
2327
- 'mod_a::xo' => 'value mod_a::xo (from override)',
2328
- 'scope_xo' => 'value scope_xo (from override)'
2329
- }}
2330
-
2331
- let(:scope_additions) do
2332
- {
2333
- 'scope_scalar' => 'scope scalar value',
2334
- 'scope_hash' => { 'a' => 'scope hash a', 'b' => 'scope hash b' }
2335
- }
2336
- end
2337
- let(:mod_a_files) do
2338
- {
2339
- 'mod_a' => {
2340
- 'data' => {
2341
- 'common.yaml' => <<-YAML.unindent
2342
- ---
2343
- mod_a::a: value mod_a::a (from mod_a)
2344
- mod_a::b: value mod_a::b (from mod_a)
2345
- mod_a::xo: value mod_a::xo (from mod_a)
2346
- mod_a::xd_found: value mod_a::xd_found (from mod_a)
2347
- mod_a::interpolate_xo: "-- %{lookup('mod_a::xo')} --"
2348
- mod_a::interpolate_xd: "-- %{lookup('mod_a::xd')} --"
2349
- mod_a::interpolate_scope_xo: "-- %{scope_xo} --"
2350
- mod_a::interpolate_scope_xd: "-- %{scope_xd} --"
2351
- mod_a::hash_a:
2352
- a: value mod_a::hash_a.a (from mod_a)
2353
- b: value mod_a::hash_a.b (from mod_a)
2354
- mod_a::hash_b:
2355
- a: value mod_a::hash_b.a (from mod_a)
2356
- b: value mod_a::hash_b.b (from mod_a)
2357
- mod_a::interpolated: "-- %{lookup('mod_a::a')} --"
2358
- mod_a::a_a: "-- %{lookup('mod_a::hash_a.a')} --"
2359
- mod_a::a_b: "-- %{lookup('mod_a::hash_a.b')} --"
2360
- mod_a::b_a: "-- %{lookup('mod_a::hash_b.a')} --"
2361
- mod_a::b_b: "-- %{lookup('mod_a::hash_b.b')} --"
2362
- mod_a::interpolate_array:
2363
- - "-- %{lookup('mod_a::a')} --"
2364
- - "-- %{lookup('mod_a::b')} --"
2365
- mod_a::interpolate_literal: "-- %{literal('hello')} --"
2366
- mod_a::interpolate_scope: "-- %{scope_scalar} --"
2367
- mod_a::interpolate_scope_not_found: "-- %{scope_nope} --"
2368
- mod_a::interpolate_scope_dig: "-- %{scope_hash.a} --"
2369
- mod_a::interpolate_scope_dig_not_found: "-- %{scope_hash.nope} --"
2370
- mod_a::quoted_interpolation: '-- %{lookup(''"mod_a::a.quoted.key"'')} --'
2371
- "mod_a::a.quoted.key": "value mod_a::a.quoted.key (from mod_a)"
2372
- YAML
2373
- },
2374
- 'hiera.yaml' => <<-YAML.unindent,
2375
- ---
2376
- version: 5
2377
- hierarchy:
2378
- - name: "Common"
2379
- data_hash: yaml_data
2380
- path: "common.yaml"
2381
- YAML
2382
- }
2383
- }
2384
- end
2385
-
2386
- it 'finds data in the module' do
2387
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2388
- end
2389
-
2390
- it 'environment data has higher priority than module data' do
2391
- expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
2392
- end
2393
-
2394
- it 'environment data has higher priority than module data in interpolated module data' do
2395
- expect(lookup('mod_a::interpolated')).to eql('-- value mod_a::a (from environment) --')
2396
- end
2397
-
2398
- it 'overrides have higher priority than found data' do
2399
- expect(lookup('mod_a::xo', { 'override' => overrides })).to eql('value mod_a::xo (from override)')
2400
- end
2401
-
2402
- it 'overrides have higher priority than found data in lookup interpolations' do
2403
- expect(lookup('mod_a::interpolate_xo', { 'override' => overrides })).to eql('-- value mod_a::xo (from override) --')
2404
- end
2405
-
2406
- it 'overrides have higher priority than found data in scope interpolations' do
2407
- expect(lookup('mod_a::interpolate_scope_xo', { 'override' => overrides })).to eql('-- value scope_xo (from override) --')
2408
- end
2409
-
2410
- it 'defaults have lower priority than found data' do
2411
- expect(lookup('mod_a::xd_found', { 'default_values_hash' => defaults })).to eql('value mod_a::xd_found (from mod_a)')
2412
- end
2413
-
2414
- it 'defaults are used when data is not found' do
2415
- expect(lookup('mod_a::xd', { 'default_values_hash' => defaults })).to eql('value mod_a::xd (from default)')
2416
- end
2417
-
2418
- it 'defaults are used when data is not found in lookup interpolations' do
2419
- expect(lookup('mod_a::interpolate_xd', { 'default_values_hash' => defaults })).to eql('-- value mod_a::xd (from default) --')
2420
- end
2421
-
2422
- it 'defaults are used when data is not found in scope interpolations' do
2423
- expect(lookup('mod_a::interpolate_scope_xd', { 'default_values_hash' => defaults })).to eql('-- value scope_xd (from default) --')
2424
- end
2425
-
2426
- it 'merges hashes from environment and module unless strategy hash is used' do
2427
- expect(lookup('mod_a::hash_a')).to eql({'a' => 'value mod_a::hash_a.a (from environment)'})
2428
- end
2429
-
2430
- it 'merges hashes from environment and module when merge strategy hash is used' do
2431
- expect(lookup('mod_a::hash_a', :merge => 'hash')).to eql(
2432
- {'a' => 'value mod_a::hash_a.a (from environment)', 'b' => 'value mod_a::hash_a.b (from mod_a)'})
2433
- end
2434
-
2435
- it 'will not merge hashes from environment and module in interpolated expressions' do
2436
- expect(lookup(['mod_a::a_a', 'mod_a::a_b'])).to eql(
2437
- ['-- value mod_a::hash_a.a (from environment) --', '-- --']) # root key found in environment, no hash merge is performed
2438
- end
2439
-
2440
- it 'interpolates arrays' do
2441
- expect(lookup('mod_a::interpolate_array')).to eql(['-- value mod_a::a (from environment) --', '-- value mod_a::b (from mod_a) --'])
2442
- end
2443
-
2444
- it 'can dig into arrays using subkeys' do
2445
- expect(lookup('mod_a::interpolate_array.1')).to eql('-- value mod_a::b (from mod_a) --')
2446
- end
2447
-
2448
- it 'treats an out of range subkey as not found' do
2449
- expect(explain('mod_a::interpolate_array.2')).to match(/No such key: "2"/)
2450
- end
2451
-
2452
- it 'interpolates a literal' do
2453
- expect(lookup('mod_a::interpolate_literal')).to eql('-- hello --')
2454
- end
2455
-
2456
- it 'interpolates scalar from scope' do
2457
- expect(lookup('mod_a::interpolate_scope')).to eql('-- scope scalar value --')
2458
- end
2459
-
2460
- it 'raises an error when trying to interpolate not found in scope' do
2461
- expect { lookup('mod_a::interpolate_scope_not_found')
2462
- }.to raise_error(/Evaluation Error: Error while evaluating a Function Call, Undefined variable 'scope_nope';/)
2463
- end
2464
-
2465
- it 'interpolates dotted key from scope' do
2466
- expect(lookup('mod_a::interpolate_scope_dig')).to eql('-- scope hash a --')
2467
- end
2468
-
2469
- it 'treats interpolated dotted key but not found in scope as empty string' do
2470
- expect(lookup('mod_a::interpolate_scope_dig_not_found')).to eql('-- --')
2471
- end
2472
-
2473
- it 'can use quoted keys in interpolation' do
2474
- expect(lookup('mod_a::quoted_interpolation')).to eql('-- value mod_a::a.quoted.key (from mod_a) --') # root key found in environment, no hash merge is performed
2475
- end
2476
-
2477
- it 'merges hashes from environment and module in interpolated expressions if hash merge is specified in lookup options' do
2478
- expect(lookup(['mod_a::b_a', 'mod_a::b_b'])).to eql(
2479
- ['-- value mod_a::hash_b.a (from environment) --', '-- value mod_a::hash_b.b (from mod_a) --'])
2480
- end
2481
- end
2482
-
2483
- context 'using a lookup_key that uses a path' do
2484
- let(:mod_a_files) do
2485
- {
2486
- 'mod_a' => {
2487
- 'functions' => {
2488
- 'pp_lookup_key.pp' => <<-PUPPET.unindent
2489
- function mod_a::pp_lookup_key($key, $options, $context) {
2490
- if !$context.cache_has_key(undef) {
2491
- $context.cache_all(yaml_data($options, $context))
2492
- $context.cache(undef, true)
2493
- }
2494
- if $context.cache_has_key($key) { $context.cached_value($key) } else { $context.not_found }
2495
- }
2496
- PUPPET
2497
- },
2498
- 'hiera.yaml' => <<-YAML.unindent,
2499
- ---
2500
- version: 5
2501
- hierarchy:
2502
- - name: "Common"
2503
- lookup_key: mod_a::pp_lookup_key
2504
- path: common.yaml
2505
- YAML
2506
- 'data' => {
2507
- 'common.yaml' => <<-YAML.unindent
2508
- mod_a::b: value mod_a::b (from mod_a)
2509
- YAML
2510
- }
2511
- }
2512
- }
2513
- end
2514
-
2515
- it 'finds data in the module' do
2516
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2517
- end
2518
- end
2519
-
2520
- context 'using a lookup_key that is a puppet function' do
2521
- let(:puppet_function) { <<-PUPPET.unindent }
2522
- function mod_a::pp_lookup_key(Puppet::LookupKey $key, Hash[String,String] $options, Puppet::LookupContext $context) >> Puppet::LookupValue {
2523
- case $key {
2524
- 'mod_a::really_interpolated': { $context.interpolate("-- %{lookup('mod_a::a')} --") }
2525
- 'mod_a::recursive': { lookup($key) }
2526
- default: {
2527
- if $context.cache_has_key(mod_a::a) {
2528
- $context.explain || { 'reusing cache' }
2529
- } else {
2530
- $context.explain || { 'initializing cache' }
2531
- $context.cache_all({
2532
- mod_a::a => 'value mod_a::a (from mod_a)',
2533
- mod_a::b => 'value mod_a::b (from mod_a)',
2534
- mod_a::c => 'value mod_a::c (from mod_a)',
2535
- mod_a::hash_a => {
2536
- a => 'value mod_a::hash_a.a (from mod_a)',
2537
- b => 'value mod_a::hash_a.b (from mod_a)'
2538
- },
2539
- mod_a::hash_b => {
2540
- a => 'value mod_a::hash_b.a (from mod_a)',
2541
- b => 'value mod_a::hash_b.b (from mod_a)'
2542
- },
2543
- mod_a::interpolated => "-- %{lookup('mod_a::a')} --",
2544
- mod_a::a_a => "-- %{lookup('mod_a::hash_a.a')} --",
2545
- mod_a::a_b => "-- %{lookup('mod_a::hash_a.b')} --",
2546
- mod_a::b_a => "-- %{lookup('mod_a::hash_b.a')} --",
2547
- mod_a::b_b => "-- %{lookup('mod_a::hash_b.b')} --",
2548
- 'mod_a::a.quoted.key' => 'value mod_a::a.quoted.key (from mod_a)',
2549
- mod_a::sensitive => Sensitive('reduct me please'),
2550
- mod_a::type => Object[{name => 'FindMe', 'attributes' => {'x' => String}}],
2551
- mod_a::version => SemVer('3.4.1'),
2552
- mod_a::version_range => SemVerRange('>=3.4.1'),
2553
- mod_a::timestamp => Timestamp("1994-03-25T19:30:00"),
2554
- mod_a::timespan => Timespan("3-10:00:00")
2555
- })
2556
- }
2557
- if !$context.cache_has_key($key) {
2558
- $context.not_found
2559
- }
2560
- $context.explain || { "returning value for $key" }
2561
- $context.cached_value($key)
2562
- }
2563
- }
2564
- }
2565
- PUPPET
2566
-
2567
- let(:mod_a_files) do
2568
- {
2569
- 'mod_a' => {
2570
- 'functions' => {
2571
- 'pp_lookup_key.pp' => puppet_function
2572
- },
2573
- 'hiera.yaml' => <<-YAML.unindent,
2574
- ---
2575
- version: 5
2576
- hierarchy:
2577
- - name: "Common"
2578
- lookup_key: mod_a::pp_lookup_key
2579
- YAML
2580
- }
2581
- }
2582
- end
2583
-
2584
- it 'finds data in the module' do
2585
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2586
- end
2587
-
2588
- it 'environment data has higher priority than module data' do
2589
- expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
2590
- end
2591
-
2592
- it 'finds quoted keys in the module' do
2593
- expect(lookup('"mod_a::a.quoted.key"')).to eql('value mod_a::a.quoted.key (from mod_a)')
2594
- end
2595
-
2596
- it 'will not resolve interpolated expressions' do
2597
- expect(lookup('mod_a::interpolated')).to eql("-- %{lookup('mod_a::a')} --")
2598
- end
2599
-
2600
- it 'resolves interpolated expressions using Context#interpolate' do
2601
- expect(lookup('mod_a::really_interpolated')).to eql("-- value mod_a::a (from environment) --")
2602
- end
2603
-
2604
- it 'will not merge hashes from environment and module unless strategy hash is used' do
2605
- expect(lookup('mod_a::hash_a')).to eql({ 'a' => 'value mod_a::hash_a.a (from environment)' })
2606
- end
2607
-
2608
- it 'merges hashes from environment and module when merge strategy hash is used' do
2609
- expect(lookup('mod_a::hash_a', :merge => 'hash')).to eql({ 'a' => 'value mod_a::hash_a.a (from environment)', 'b' => 'value mod_a::hash_a.b (from mod_a)' })
2610
- end
2611
-
2612
- it 'traps recursive lookup trapped' do
2613
- expect(explain('mod_a::recursive')).to include('Recursive lookup detected')
2614
- end
2615
-
2616
- it 'private cache is persisted over multiple calls' do
2617
- collect_notices("notice(lookup('mod_a::b')) notice(lookup('mod_a::c'))", true)
2618
- expect(notices).to eql(['value mod_a::b (from mod_a)', 'value mod_a::c (from mod_a)'])
2619
- expect(explanation).to match(/initializing cache.*reusing cache/m)
2620
- expect(explanation).not_to match(/initializing cache.*initializing cache/m)
2621
- end
2622
-
2623
- it 'the same key is requested only once' do
2624
- collect_notices("notice(lookup('mod_a::b')) notice(lookup('mod_a::b'))", true)
2625
- expect(notices).to eql(['value mod_a::b (from mod_a)', 'value mod_a::b (from mod_a)'])
2626
- expect(explanation).to match(/Found key: "mod_a::b".*Found key: "mod_a::b"/m)
2627
- expect(explanation).to match(/returning value for mod_a::b/m)
2628
- expect(explanation).not_to match(/returning value for mod_a::b.*returning value for mod_a::b/m)
2629
- end
2630
-
2631
- context 'and calling function via API' do
2632
- it 'finds and delivers rich data' do
2633
- collect_notices("notice('success')") do |scope|
2634
- expect(lookup_func.call(scope, 'mod_a::sensitive')).to be_a(Puppet::Pops::Types::PSensitiveType::Sensitive)
2635
- expect(lookup_func.call(scope, 'mod_a::type')).to be_a(Puppet::Pops::Types::PObjectType)
2636
- expect(lookup_func.call(scope, 'mod_a::version')).to eql(SemanticPuppet::Version.parse('3.4.1'))
2637
- expect(lookup_func.call(scope, 'mod_a::version_range')).to eql(SemanticPuppet::VersionRange.parse('>=3.4.1'))
2638
- expect(lookup_func.call(scope, 'mod_a::timestamp')).to eql(Puppet::Pops::Time::Timestamp.parse('1994-03-25T19:30:00'))
2639
- expect(lookup_func.call(scope, 'mod_a::timespan')).to eql(Puppet::Pops::Time::Timespan.parse('3-10:00:00'))
2640
- end
2641
- expect(notices).to eql(['success'])
2642
- end
2643
- end
2644
-
2645
- context 'with declared but incompatible return_type' do
2646
- let(:puppet_function) { <<-PUPPET.unindent }
2647
- function mod_a::pp_lookup_key(Puppet::LookupKey $key, Hash[String,String] $options, Puppet::LookupContext $context) >> Runtime['ruby','Symbol'] {
2648
- undef
2649
- }
2650
- PUPPET
2651
-
2652
- it 'fails and reports error' do
2653
- expect{lookup('mod_a::a')}.to raise_error(
2654
- "Return type of 'lookup_key' function named 'mod_a::pp_lookup_key' is incorrect, expects a RichData value, got Runtime")
2655
- end
2656
- end
2657
- end
2658
-
2659
- context 'using a data_dig that is a ruby function' do
2660
- let(:mod_a_files) do
2661
- {
2662
- 'mod_a' => {
2663
- 'lib' => {
2664
- 'puppet' => {
2665
- 'functions' => {
2666
- 'mod_a' => {
2667
- 'ruby_dig.rb' => <<-RUBY.unindent
2668
- Puppet::Functions.create_function(:'mod_a::ruby_dig') do
2669
- dispatch :ruby_dig do
2670
- param 'Array[String[1]]', :segments
2671
- param 'Hash[String,Any]', :options
2672
- param 'Puppet::LookupContext', :context
2673
- return_type 'Puppet::LookupValue'
2674
- end
2675
-
2676
- def ruby_dig(segments, options, context)
2677
- sub_segments = segments.dup
2678
- root_key = sub_segments.shift
2679
- case root_key
2680
- when 'mod_a::options'
2681
- hash = { 'mod_a::options' => options }
2682
- when 'mod_a::lookup'
2683
- return call_function('lookup', segments.join('.'))
2684
- else
2685
- hash = {
2686
- 'mod_a::a' => 'value mod_a::a (from mod_a)',
2687
- 'mod_a::b' => 'value mod_a::b (from mod_a)',
2688
- 'mod_a::hash_a' => {
2689
- 'a' => 'value mod_a::hash_a.a (from mod_a)',
2690
- 'b' => 'value mod_a::hash_a.b (from mod_a)'
2691
- },
2692
- 'mod_a::hash_b' => {
2693
- 'a' => 'value mod_a::hash_b.a (from mod_a)',
2694
- 'b' => 'value mod_a::hash_b.b (from mod_a)'
2695
- },
2696
- 'mod_a::interpolated' => "-- %{lookup('mod_a::a')} --",
2697
- 'mod_a::really_interpolated' => "-- %{lookup('mod_a::a')} --",
2698
- 'mod_a::a_a' => "-- %{lookup('mod_a::hash_a.a')} --",
2699
- 'mod_a::a_b' => "-- %{lookup('mod_a::hash_a.b')} --",
2700
- 'mod_a::b_a' => "-- %{lookup('mod_a::hash_b.a')} --",
2701
- 'mod_a::b_b' => "-- %{lookup('mod_a::hash_b.b')} --",
2702
- 'mod_a::bad_type' => :oops,
2703
- 'mod_a::bad_type_in_hash' => { 'a' => :oops },
2704
- }
2705
- end
2706
- context.not_found unless hash.include?(root_key)
2707
- value = sub_segments.reduce(hash[root_key]) do |memo, segment|
2708
- context.not_found unless memo.is_a?(Hash) && memo.include?(segment)
2709
- memo[segment]
2710
- end
2711
- root_key == 'mod_a::really_interpolated' ? context.interpolate(value) : value
2712
- end
2713
- end
2714
- RUBY
2715
- }
2716
- }
2717
- }
2718
- },
2719
- 'hiera.yaml' => <<-YAML.unindent,
2720
- ---
2721
- version: 5
2722
- defaults:
2723
- options:
2724
- option_b:
2725
- z: Default option value b.z
2726
-
2727
- hierarchy:
2728
- - name: "Common"
2729
- data_dig: mod_a::ruby_dig
2730
- uri: "http://www.example.com/passed/as/option"
2731
- options:
2732
- option_a: Option value a
2733
- option_b:
2734
- x: Option value b.x
2735
- y: Option value b.y
2736
- - name: "Extra"
2737
- data_dig: mod_a::ruby_dig
2738
- YAML
2739
- }
2740
- }
2741
- end
2742
-
2743
- it 'finds data in the module' do
2744
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2745
- end
2746
-
2747
- it 'environment data has higher priority than module data' do
2748
- expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
2749
- end
2750
-
2751
- it 'will not resolve interpolated expressions' do
2752
- expect(lookup('mod_a::interpolated')).to eql("-- %{lookup('mod_a::a')} --")
2753
- end
2754
-
2755
- it 'resolves interpolated expressions using Context#interpolate' do
2756
- expect(lookup('mod_a::really_interpolated')).to eql("-- value mod_a::a (from environment) --")
2757
- end
2758
-
2759
- it 'does not accept return of runtime type from function' do
2760
- # Message is produced by the called function, not by the lookup framework
2761
- expect(explain('mod_a::bad_type')).to include("value returned from function 'ruby_dig' has wrong type")
2762
- end
2763
-
2764
- it 'does not accept return of runtime type embedded in hash from function' do
2765
- # Message is produced by the called function, not by the lookup framework
2766
- expect(explain('mod_a::bad_type_in_hash')).to include("value returned from function 'ruby_dig' has wrong type")
2767
- end
2768
-
2769
- it 'will not merge hashes from environment and module unless strategy hash is used' do
2770
- expect(lookup('mod_a::hash_a')).to eql({'a' => 'value mod_a::hash_a.a (from environment)'})
2771
- end
2772
-
2773
- it 'hierarchy entry options are passed to the function' do
2774
- expect(lookup('mod_a::options.option_b.x')).to eql('Option value b.x')
2775
- end
2776
-
2777
- it 'default options are passed to the function' do
2778
- expect(lookup('mod_a::options.option_b.z')).to eql('Default option value b.z')
2779
- end
2780
-
2781
- it 'default options are not merged with hierarchy options' do
2782
- expect(lookup('mod_a::options')).to eql(
2783
- {
2784
- 'option_a' => 'Option value a',
2785
- 'option_b' => {
2786
- 'y' => 'Option value b.y',
2787
- 'x' => 'Option value b.x'
2788
- },
2789
- 'uri' => 'http://www.example.com/passed/as/option'
2790
- })
2791
- end
2792
-
2793
- it 'hierarchy entry "uri" is passed as location option to the function' do
2794
- expect(lookup('mod_a::options.uri')).to eql('http://www.example.com/passed/as/option')
2795
- end
2796
-
2797
- it 'recursive lookup is trapped' do
2798
- expect(explain('mod_a::lookup.mod_a::lookup')).to include('Recursive lookup detected')
2799
- end
2800
-
2801
- context 'with merge strategy hash' do
2802
- it 'merges hashes from environment and module' do
2803
- expect(lookup('mod_a::hash_a', :merge => 'hash')).to eql({'a' => 'value mod_a::hash_a.a (from environment)', 'b' => 'value mod_a::hash_a.b (from mod_a)'})
2804
- end
2805
-
2806
- it 'will "undig" value from data_dig function, merge root hashes, and then dig to get values by subkey' do
2807
- expect(lookup(['mod_a::hash_a.a', 'mod_a::hash_a.b'], :merge => 'hash')).to eql(
2808
- ['value mod_a::hash_a.a (from environment)', 'value mod_a::hash_a.b (from mod_a)'])
2809
- end
2810
- end
2811
- end
2812
-
2813
- context 'that has a default_hierarchy' do
2814
- let(:mod_a_hiera_yaml) { <<-YAML.unindent }
2815
- version: 5
2816
- hierarchy:
2817
- - name: "Common"
2818
- path: common.yaml
2819
- - name: "Common 2"
2820
- path: common2.yaml
2821
-
2822
- default_hierarchy:
2823
- - name: "Default"
2824
- path: defaults.yaml
2825
- - name: "Default 2"
2826
- path: defaults2.yaml
2827
- YAML
2828
-
2829
- let(:mod_a_common) { <<-YAML.unindent }
2830
- mod_a::a: value mod_a::a (from module)
2831
- mod_a::d:
2832
- a: value mod_a::d.a (from module)
2833
- mod_a::f:
2834
- a:
2835
- a: value mod_a::f.a.a (from module)
2836
- mod_a::to_array1: 'hello'
2837
- mod_a::to_array2: 'hello'
2838
- mod_a::to_int: 'bananas'
2839
- mod_a::to_bad_type: 'pyjamas'
2840
- mod_a::undef_value: null
2841
- lookup_options:
2842
- mod_a::e:
2843
- merge: deep
2844
- mod_a::to_array1:
2845
- merge: deep
2846
- convert_to: "Array"
2847
- mod_a::to_array2:
2848
- convert_to:
2849
- - "Array"
2850
- - true
2851
- mod_a::to_int:
2852
- convert_to: "Integer"
2853
- mod_a::to_bad_type:
2854
- convert_to: "ComicSans"
2855
- mod_a::undef_value:
2856
- convert_to:
2857
- - "Array"
2858
- - true
2859
- YAML
2860
-
2861
-
2862
- let(:mod_a_common2) { <<-YAML.unindent }
2863
- mod_a::b: value mod_a::b (from module)
2864
- mod_a::d:
2865
- c: value mod_a::d.c (from module)
2866
- mod_a::f:
2867
- a:
2868
- b: value mod_a::f.a.b (from module)
2869
- YAML
2870
-
2871
- let(:mod_a_defaults) { <<-YAML.unindent }
2872
- mod_a::a: value mod_a::a (from module defaults)
2873
- mod_a::b: value mod_a::b (from module defaults)
2874
- mod_a::c: value mod_a::c (from module defaults)
2875
- mod_a::d:
2876
- b: value mod_a::d.b (from module defaults)
2877
- mod_a::e:
2878
- a:
2879
- a: value mod_a::e.a.a (from module defaults)
2880
- mod_a::g:
2881
- a:
2882
- a: value mod_a::g.a.a (from module defaults)
2883
- lookup_options:
2884
- mod_a::d:
2885
- merge: hash
2886
- mod_a::g:
2887
- merge: deep
2888
- YAML
2889
-
2890
- let(:mod_a_defaults2) { <<-YAML.unindent }
2891
- mod_a::e:
2892
- a:
2893
- b: value mod_a::e.a.b (from module defaults)
2894
- mod_a::g:
2895
- a:
2896
- b: value mod_a::g.a.b (from module defaults)
2897
- YAML
2898
-
2899
- let(:mod_a_files) do
2900
- {
2901
- 'mod_a' => {
2902
- 'data' => {
2903
- 'common.yaml' => mod_a_common,
2904
- 'common2.yaml' => mod_a_common2,
2905
- 'defaults.yaml' => mod_a_defaults,
2906
- 'defaults2.yaml' => mod_a_defaults2
2907
- },
2908
- 'hiera.yaml' => mod_a_hiera_yaml
2909
- }
2910
- }
2911
- end
2912
-
2913
- it 'the default hierarchy does not interfere with environment hierarchy' do
2914
- expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
2915
- end
2916
-
2917
- it 'the default hierarchy does not interfere with regular hierarchy in module' do
2918
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from module)')
2919
- end
2920
-
2921
- it 'the default hierarchy is consulted when no value is found elsewhere' do
2922
- expect(lookup('mod_a::c')).to eql('value mod_a::c (from module defaults)')
2923
- end
2924
-
2925
- it 'the default hierarchy does not participate in a merge' do
2926
- expect(lookup('mod_a::d', 'merge' => 'hash')).to eql('a' => 'value mod_a::d.a (from module)', 'c' => 'value mod_a::d.c (from module)')
2927
- end
2928
-
2929
- it 'lookup_options from regular hierarchy does not effect values found in the default hierarchy' do
2930
- expect(lookup('mod_a::e')).to eql('a' => { 'a' => 'value mod_a::e.a.a (from module defaults)' })
2931
- end
2932
-
2933
- it 'lookup_options from default hierarchy affects values found in the default hierarchy' do
2934
- expect(lookup('mod_a::g')).to eql('a' => { 'a' => 'value mod_a::g.a.a (from module defaults)', 'b' => 'value mod_a::g.a.b (from module defaults)'})
2935
- end
2936
-
2937
- it 'merge parameter does not override lookup_options defined in the default hierarchy' do
2938
- expect(lookup('mod_a::g', 'merge' => 'hash')).to eql(
2939
- 'a' => { 'a' => 'value mod_a::g.a.a (from module defaults)', 'b' => 'value mod_a::g.a.b (from module defaults)'})
2940
- end
2941
-
2942
- it 'lookup_options from default hierarchy does not effect values found in the regular hierarchy' do
2943
- expect(lookup('mod_a::d')).to eql('a' => 'value mod_a::d.a (from module)')
2944
- end
2945
-
2946
- context "and conversion via convert_to" do
2947
- it 'converts with a single data type value' do
2948
- expect(lookup('mod_a::to_array1')).to eql(['h', 'e', 'l', 'l', 'o'])
2949
- end
2950
-
2951
- it 'converts with an array of arguments to the convert_to call' do
2952
- expect(lookup('mod_a::to_array2')).to eql(['hello'])
2953
- end
2954
-
2955
- it 'converts an undef/nil value that has convert_to option' do
2956
- expect(lookup('mod_a::undef_value')).to eql([nil])
2957
- end
2958
-
2959
- it 'errors if a convert_to lookup_option cannot be performed because value does not match type' do
2960
- 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/)
2961
- end
2962
-
2963
- it 'errors if a convert_to lookup_option cannot be performed because type does not exist' do
2964
- 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/)
2965
- end
2966
-
2967
- it 'adds explanation that conversion took place with a type' do
2968
- explanation = explain('mod_a::to_array1')
2969
- expect(explanation).to include('Applying convert_to lookup_option with arguments [Array]')
2970
- end
2971
-
2972
- it 'adds explanation that conversion took place with a type and arguments' do
2973
- explanation = explain('mod_a::to_array2')
2974
- expect(explanation).to include('Applying convert_to lookup_option with arguments [Array, true]')
2975
- end
2976
- end
2977
-
2978
- it 'the default hierarchy lookup is included in the explain output' do
2979
- explanation = explain('mod_a::c')
2980
- expect(explanation).to match(/Searching default_hierarchy of module "mod_a".+Original path: "defaults.yaml"/m)
2981
- end
2982
- end
2983
- end
2984
-
2985
- context 'and an eyaml lookup_key function', :if => Puppet.features.hiera_eyaml? do
2986
- let(:private_key_name) { 'private_key.pkcs7.pem' }
2987
- let(:public_key_name) { 'public_key.pkcs7.pem' }
2988
-
2989
- let(:private_key) do
2990
- <<-PKCS7.unindent
2991
- -----BEGIN RSA PRIVATE KEY-----
2992
- MIIEogIBAAKCAQEAwHB3GvImq59em4LV9DMfP0Zjs21eW3Jd5I9fuY0jLJhIkH6f
2993
- CR7tyOpYV6xUj+TF8giq9WLxZI7sourMJMWjEWhVjgUr5lqp1RLv4lwfDv3Wk4XC
2994
- 2LUuqj1IAErUXKeRz8i3lUSZW1Pf4CaMpnIiPdWbz6f0KkaJSFi9bqexONBx4fKQ
2995
- NlgZwm2/aYjjrYng788I0QhWDKUqsQOi5mZKlHNRsDlk7J3Afhsx/jTLrCX/G8+2
2996
- tPtLsHyRN39kluM5vYHbKXDsCG/a88Z2yUE2+r4Clp0FUKffiEDBPm0/H0sQ4Q1o
2997
- EfQFDQRKaIkhpsm0nOnLYTy3/xJc5uqDNkLiawIDAQABAoIBAE98pNXOe8ab93oI
2998
- mtNZYmjCbGAqprTjEoFb71A3SfYbmK2Gf65GxjUdBwx/tBYTiuekSOk+yzKcDoZk
2999
- sZnmwKpqDByzaiSmAkxunANFxdZtZvpcX9UfUX0j/t+QCROUa5gF8j6HrUiZ5nkx
3000
- sxr1PcuItekaGLJ1nDLz5JsWTQ+H4M+GXQw7/t96x8v8g9el4exTiAHGk6Fv16kD
3001
- 017T02M9qTTmV3Ab/enDIBmKVD42Ta36K/wc4l1aoUQNiRbIGVh96Cgd1CFXLF3x
3002
- CsaNbYT4SmRXaYqoj6MKq+QFEGxadFmJy48NoSd4joirIn2lUjHxJebw3lLbNLDR
3003
- uvQnQ2ECgYEA/nD94wEMr6078uMv6nKxPpNGq7fihwSKf0G/PQDqrRmjUCewuW+k
3004
- /iXMe1Y/y0PjFeNlSbUsUvKQ5xF7F/1AnpuPHIrn3cjGVLb71W+zen1m8SnhsW/f
3005
- 7dPgtcb4SCvfhmLgoov+P34YcNfGi6qgPUu6319IqoB3BIi7PvfEomkCgYEAwZ4+
3006
- V0bMjFdDn2hnYzjTNcF2aUQ1jPvtuETizGwyCbbMLl9522lrjC2DrH41vvqX35ct
3007
- CBJkhQFbtHM8Gnmozv0vxhI2jP+u14mzfePZsaXuYrEgWRj+BCsYUHodXryxnEWj
3008
- yVrTNskab1B5jFm2SCJDmKcycBOYpRBLCMx6W7MCgYBA99z7/6KboOIzzKrJdGup
3009
- jLV410UyMIikoccQ7pD9jhRTPS80yjsY4dHqlEVJw5XSWvPb9DTTITi6p44EvBep
3010
- 6BKMuTMnQELUEr0O7KypVCfa4FTOl8BX28f+4kU3OGykxc6R8qkC0VGwTohV1UWB
3011
- ITsgGhZV4uOA9uDI3T8KMQKBgEnQY2HwmuDSD/TA39GDA3qV8+ez2lqSXRGIKZLX
3012
- mMf9SaBQQ+uzKA4799wWDbVuYeIbB07xfCL83pJP8FUDlqi6+7Celu9wNp7zX1ua
3013
- Nw8z/ErhzjxJe+Xo7A8aTwIkG+5A2m1UU/up9YsEeiJYvVaIwY58B42U2vfq20BS
3014
- fD9jAoGAX2MscBzIsmN+U9R0ptL4SXcPiVnOl8mqvQWr1B4OLgxX7ghht5Fs956W
3015
- bHipxOWMFCPJA/AhNB8q1DvYiD1viZbIALSCJVUkzs4AEFIjiPsCBKxerl7jF6Xp
3016
- 1WYSaCmfvoCVEpFNt8cKp4Gq+zEBYAV4Q6TkcD2lDtEW49MuN8A=
3017
- -----END RSA PRIVATE KEY-----
3018
- PKCS7
3019
- end
3020
-
3021
- let(:public_key) do
3022
- <<-PKCS7.unindent
3023
- -----BEGIN CERTIFICATE-----
3024
- MIIC2TCCAcGgAwIBAgIBATANBgkqhkiG9w0BAQUFADAAMCAXDTE3MDExMzA5MTY1
3025
- MloYDzIwNjcwMTAxMDkxNjUyWjAAMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
3026
- CgKCAQEAwHB3GvImq59em4LV9DMfP0Zjs21eW3Jd5I9fuY0jLJhIkH6fCR7tyOpY
3027
- V6xUj+TF8giq9WLxZI7sourMJMWjEWhVjgUr5lqp1RLv4lwfDv3Wk4XC2LUuqj1I
3028
- AErUXKeRz8i3lUSZW1Pf4CaMpnIiPdWbz6f0KkaJSFi9bqexONBx4fKQNlgZwm2/
3029
- aYjjrYng788I0QhWDKUqsQOi5mZKlHNRsDlk7J3Afhsx/jTLrCX/G8+2tPtLsHyR
3030
- N39kluM5vYHbKXDsCG/a88Z2yUE2+r4Clp0FUKffiEDBPm0/H0sQ4Q1oEfQFDQRK
3031
- aIkhpsm0nOnLYTy3/xJc5uqDNkLiawIDAQABo1wwWjAPBgNVHRMBAf8EBTADAQH/
3032
- MB0GA1UdDgQWBBSejWrVnw7QaBjNFCHMNFi+doSOcTAoBgNVHSMEITAfgBSejWrV
3033
- nw7QaBjNFCHMNFi+doSOcaEEpAIwAIIBATANBgkqhkiG9w0BAQUFAAOCAQEAAe85
3034
- BQ1ydAHFqo0ib38VRPOwf5xPHGbYGhvQi4/sU6aTuR7pxaOJPYz05jLhS+utEmy1
3035
- sknBq60G67yhQE7IHcfwrl1arirG2WmKGvAbjeYL2K1UiU0pVD3D+Klkv/pK6jIQ
3036
- eOJRGb3qNUn0Sq9EoYIOXiGXQ641F0bZZ0+5H92kT1lmnF5oLfCb84ImD9T3snH6
3037
- pIr5RKRx/0YmJIcv3WdpoPT903rOJiRIEgIj/hDk9QZTBpm222Ul5yQQ5pBywpSp
3038
- xh0bmJKAQWhQm7QlybKfyaQmg5ot1jEzWAvD2I5FjHQxmAlchjb6RreaRhExj+JE
3039
- 5O117dMBdzDBjcNMOA==
3040
- -----END CERTIFICATE-----
3041
- PKCS7
3042
- end
3043
-
3044
- let(:keys_dir) do
3045
- keys = tmpdir('keys')
3046
- dir_contained_in(keys, {
3047
- private_key_name => private_key,
3048
- public_key_name => public_key
3049
- })
3050
- keys
3051
- end
3052
-
3053
- let(:private_key_path) { File.join(keys_dir, private_key_name) }
3054
- let(:public_key_path) { File.join(keys_dir, public_key_name) }
3055
-
3056
- let(:env_hiera_yaml) do
3057
- <<-YAML.unindent
3058
- version: 5
3059
- hierarchy:
3060
- - name: EYaml
3061
- path: common.eyaml
3062
- lookup_key: eyaml_lookup_key
3063
- options:
3064
- pkcs7_private_key: #{private_key_path}
3065
- pkcs7_public_key: #{public_key_path}
3066
- YAML
3067
- end
3068
-
3069
- let(:scope_additions) { { 'ipl_suffix' => 'aa' } }
3070
- let(:data_files) do
3071
- {
3072
- 'common.eyaml' => <<-YAML.unindent
3073
- # a: Encrypted value 'a' (from environment)
3074
- a: >
3075
- ENC[PKCS7,MIIBmQYJKoZIhvcNAQcDoIIBijCCAYYCAQAxggEhMIIBHQIBADAFMAACAQEw
3076
- DQYJKoZIhvcNAQEBBQAEggEAUwwNRA5ZKM87SLnjnJfzDFRQbeheSYMTOhcr
3077
- sgTPCGtzEAzvRBrkdIRAvDZVRfadV9OB+bJsYrhWIkU1bYiOn1m78ginh96M
3078
- 44RuspnIZYnL9Dhs+JyC8VvB5nlvlEph2RGt+KYg9iU4JYhwZ2+8+yxB6/UK
3079
- H5HGKDCjBbEc8o9MbCckLsciIh11hKKgT6K0yhKB/nBxxM78nrX0BxmAHX2u
3080
- bejKDRa9S/0uS7Y91nvnbIkaQpZ4KteSQ+J4/lQBMlMAeE+2F9ncM8jFKnQC
3081
- rzzdbn1O/zwsEt5J5CRP1Sc+8hM644+IqkLs+17segxArHVGOsEqyDcHbXEK
3082
- 9jspfzBcBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBCIq/L5HeJgA9XQm67j
3083
- JHUngDDS5s52FsuSIMin7Z/pV+XuaJGFkL80ia4bXnCWilmtM8oUa/DZuBje
3084
- dCILO7I8QqU=]
3085
- hash_a:
3086
- "hash_%{ipl_suffix}":
3087
- # aaa: Encrypted value hash_a.hash_aa.aaa (from environment)
3088
- aaa: >
3089
- ENC[PKCS7,MIIBqQYJKoZIhvcNAQcDoIIBmjCCAZYCAQAxggEhMIIBHQIBADAFMAACAQEw
3090
- DQYJKoZIhvcNAQEBBQAEggEAhvGXL5RxVUs9wdqJvpCyXtfCHrm2HbG/u30L
3091
- n8EuRD9ravlsgIISAnd27JPtrxA+0rZq4EQRGz6OcovnH9vTg86/lVBhhPnz
3092
- b83ArptGJhRvTYUJ19GZI3AYjJbhWj/Jo5NL56oQJaPBccqHxMApm/U0wlus
3093
- QtASL94cLuh4toVIBQCQzD5/Bx51p2wQobm9p4WKSl1zJhDceurmoLZXqhuN
3094
- JwwEBwXopJvgid3ZDPbdX8nI6vHhb/8wDq9yb5DOsrkgqDqQgwPU9sUUioQj
3095
- Hr1pGyeOWnbEe99iEb2+m7TWsC0NN7OBo06mAgFNbBLjvn2k4PiCxrOOgJ8S
3096
- LI5eXjBsBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBCWNS6j3m/Xvrp5RFaN
3097
- ovm/gEB4oPlYJswoXuWqcEBfwZzbpy96x3b2Le/yoa72ylbPAUc5GfLENvFQ
3098
- zXpTtSmQE0fixY4JMaBTke65ZRvoiOQO]
3099
- array_a:
3100
- # - "array_a[0]"
3101
- - >
3102
- ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw
3103
- DQYJKoZIhvcNAQEBBQAEggEAmXZfyfU77vVCZqHpR10qhD0Jy9DpMGBgal97
3104
- vUO2VHX7KlCgagK0kz8/uLRIthkYzcpn8ISmw/+CIAny3jOjxOsylJiujqyu
3105
- hx/JEFl8bOKOg40Bd0UuBaw/qZ+CoAtOorhiIW7x6t7DpknItC6gkH/cSJ4/
3106
- p3MdhoARRuwj2fvuaChVsD39l2rXjgJj0OJOaDXdbuisG75VRZf5l8IH6+44
3107
- Q7m6W7BU69LX+ozn+W3filQoiJ5MPf8w/KXAObMSbKYIDsrZUyIWyyNUbpW0
3108
- MieIkHj93bX3gIEcenECLdWaEzcPa7MHgl6zevQKg4H0JVmcvKYyfHYqcrVE
3109
- PqizKDA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBDf259KZEay1widVSFy
3110
- I9zGgBAICjm0x2GeqoCnHdiAA+jt]
3111
- # - "array_a[1]"
3112
- - >
3113
- ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw
3114
- DQYJKoZIhvcNAQEBBQAEggEATVy4hHG356INFKOswAhoravh66iJljp+Vn3o
3115
- UVD1kyRiqY5tz3UVSptzUmzD+YssX/f73AKCjUI3HrPNL7kAxsk6fWS7nDEj
3116
- AuxtCqGYeBha6oYJYziSGIHfAdY3MiJUI1C9g/OQB4TTvKdrlDArPiY8THJi
3117
- bzLLMbVQYJ6ixSldwkdKD75vtikyamx+1LSyVBSg8maVyPvLHtLZJuT71rln
3118
- WON3Ious9PIbd+izbcCzaoqh5UnTfDCjOuAYliXalBxamIIwNzSV1sdR8/qf
3119
- t22zpYK4J8lgCBV2gKfrOWSi9MAs6JhCeOb8wNLMmAUTbc0WrFJxoCwAPX0z
3120
- MAjsNjA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBC4v4bNE4gFlbLmVY+9
3121
- BtSLgBBm7U0wu6d6s9wF9Ek9IHPe]
3122
- # ref_a: "A resolved = '%{hiera('a')}'"
3123
- ref_a: >
3124
- ENC[PKCS7,MIIBiQYJKoZIhvcNAQcDoIIBejCCAXYCAQAxggEhMIIBHQIBADAFMAACAQEw
3125
- DQYJKoZIhvcNAQEBBQAEggEAFSuUp+yk+oaA7b5ekT0u360CQ9Q2sIQ/bTcM
3126
- jT3XLjm8HIGYPcysOEnuo8WcAxJFY5iya4yQ7Y/UhMWXaTi7Vzv/6BmyPDwz
3127
- +7Z2Mf0r0PvS5+ylue6aem/3bXPOmXTKTf68OCehTRXlDUs8/av9gnsDzojp
3128
- yiUTBZvKxhIP2n//GyoHgyATveHT0lxPVpdMycB347DtWS7IduCxx0+KiOOw
3129
- DXYFlYbIVxVInwgERxtsfYSr+Fu0/mkjtRsQm+dPzMQOATE9Val2gGKsV6bi
3130
- kdm1OM9HrwVsFj6Lma6FYmr89Bcm/1uEc8fiOMtNK3z2+nwunWBMNCGneMYD
3131
- C5IJejBMBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBAeiZDGQyXHkZlV5ceT
3132
- iCxpgCDDatuVvbPEEi8rKOC7xhPHZ22zLEEV//l7C9jxq+DZcA==]
3133
- YAML
3134
- }
3135
- end
3136
-
3137
- let(:env_data) { data_files }
3138
-
3139
- context 'with unencryptable eyaml' do
3140
- let(:data_files) do
3141
- {
3142
- 'common.eyaml' => <<-YAML.unindent
3143
- key_with_invalid_eyaml: ENC[PKCS7,INVALID]
3144
- YAML
3145
- }
3146
- end
3147
-
3148
- it 'fails and reports error with ENC value, key being looked up and filename' do
3149
- expect { lookup('key_with_invalid_eyaml') }.to raise_error(Puppet::DataBinding::LookupError, /hiera-eyaml backend error decrypting ENC\[PKCS7,INVALID\] when looking up key_with_invalid_eyaml in .*common\.eyaml\. Error was/)
3150
- end
3151
- end
3152
- context 'and a module using eyaml with different options' do
3153
-
3154
- let(:private_module_key) do
3155
- <<-PKCS7.unindent
3156
- -----BEGIN RSA PRIVATE KEY-----
3157
- MIIEogIBAAKCAQEAuqVpctipK4OMWM+RwKcd/mR4pg6qE3+ItPVC9TlvBrmDaN/y
3158
- YZRjQR+XovXSGuy/CneSQ9Qss0Ff3FKAmEeH0qN0V47a81hgLpjhLCX1n+Ov7r1Q
3159
- DC1ciTpVzHE4krN3rJ/RmDohitIqT1IYYhdcEdaMG9E26HIzn1QIwaDiYU3mfqWM
3160
- 8CZExa0CeIsEzHRLSxuMi/xX0ENImCRUzY9GH88Cu2gUhpKlbVzJmVqGPgp94pJY
3161
- YM+SUb0XP1yRySpJMnVg98oCUrQO2OoE/Gax/djAi6hrJUzejPsEKdZ1yxM6OyJW
3162
- NjWZYs8izAxBqm7pv1hx5+X7AIPqwZTMVrB7TQIDAQABAoIBAHIex13QOYeAlGSM
3163
- 7bpUtBMiTV6DItxvIyA5wen8ZvU+oqmSHDorp5BfB7E9Cm0qChkVSRot9fLYawtk
3164
- anoxakuRY4ZRs3AMvipfkXYT854CckTP/cykQ6soPuOU6plQIEEtKtMf3/hoTjRX
3165
- ps77J3FEtEAh6Kexg/zMPdpeS2xgULhk0P9ZQEg+JhLA5dq0p0nz3SBkuzcxei79
3166
- +Za/Tg1osD0AINOajdvPnKxvlmWJN0+LpGwVjFNhkoUXPeDyvq0z2V/Uqwz4HP2I
3167
- UGv4tz3SbzFc3Ie4lzgUZzCQgUK3u60pq1uyA6BRtxwdEmpn5v++jGXBGJZpWwcW
3168
- UNblESUCgYEA4aTH9+LHsNjLPs2FmSc7hNjwHG1rAHcDXTX2ccySjRcQvH4Z7xBL
3169
- di+SzZ2Tf8gSLycPRgRVCbrgCODpjoV2D5wWnyUHfWm4+GQxHURYa4UDx69tsSKE
3170
- OTRASJo7/Mz0M1a6YzgCzVRM/TO676ucmawzKUY5OUm1oehtODAiZOcCgYEA08GM
3171
- AMBOznys02xREJI5nLR6AveuTbIjF2efEidoxoW+1RrMOkcqaDTrJQ5PLM+oDDwD
3172
- iPzVjnroSbwJzFB71atIg7b7TwltgkXy7wNTedO2cm5u/I0q8tY2Jaa4Mz8JUnbe
3173
- yafvtS0/mY6A5k+8/2UIMFin2rqU9NC9EUPIo6sCgYBhOvAwELibq89osIbxB8bN
3174
- 5+0PUtbYzG/WqnoXb193DIlZr7zdFththPJtR4lXdo7fYqViNluuZahEKyZ5E2lc
3175
- MJZO3VXs5LGf1wyS3/B55EdMtHs/6O+w9qL8pflTZb2UobqPJoOOltTWBoR24iwI
3176
- y/r/vhLKbMini9AEdjlb4QKBgGdYsax4Lr4GCQ8ScSnmQ6ngRyAFo5MV2pyEnRTu
3177
- GOuywKUe9AeJTgAXu5+VMT0Mh9aYv5zu0Ic+IvpBhIKr0RRCCR0Hg/VaA5Et9FeE
3178
- RwxRMFz+2rn1Z72moDyV9pZEMJeHnknK5WmGEOEvtGczCWmX9Hwr+Jf+sc4dxfiU
3179
- HWsLAoGAXWSX73p/6R4eRfF5zU2UFJPvDzhmwObAuvU4zKs9x7PMxZfvyt/eBCO1
3180
- fj2+hIR72RxVuHbLApF1BT6gPVLtNdvaNuCs8YlHcnx/Oi088F0ni7fL/xYBUvaB
3181
- 7wTf188UJxP1ofVMZW00P4I9mR6BrOulv455gCwsmg2X7WtJU48=
3182
- -----END RSA PRIVATE KEY-----
3183
- PKCS7
3184
- end
3185
-
3186
- let(:public_module_key) do
3187
- <<-PKCS7.unindent
3188
- -----BEGIN CERTIFICATE-----
3189
- MIIC2TCCAcGgAwIBAgIBATANBgkqhkiG9w0BAQUFADAAMCAXDTE3MDUzMTE2Mjc0
3190
- M1oYDzIwNjcwNTE5MTYyNzQzWjAAMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
3191
- CgKCAQEAuqVpctipK4OMWM+RwKcd/mR4pg6qE3+ItPVC9TlvBrmDaN/yYZRjQR+X
3192
- ovXSGuy/CneSQ9Qss0Ff3FKAmEeH0qN0V47a81hgLpjhLCX1n+Ov7r1QDC1ciTpV
3193
- zHE4krN3rJ/RmDohitIqT1IYYhdcEdaMG9E26HIzn1QIwaDiYU3mfqWM8CZExa0C
3194
- eIsEzHRLSxuMi/xX0ENImCRUzY9GH88Cu2gUhpKlbVzJmVqGPgp94pJYYM+SUb0X
3195
- P1yRySpJMnVg98oCUrQO2OoE/Gax/djAi6hrJUzejPsEKdZ1yxM6OyJWNjWZYs8i
3196
- zAxBqm7pv1hx5+X7AIPqwZTMVrB7TQIDAQABo1wwWjAPBgNVHRMBAf8EBTADAQH/
3197
- MB0GA1UdDgQWBBQkhoMgOyPzEe7tOOimNH2//PYF2TAoBgNVHSMEITAfgBQkhoMg
3198
- OyPzEe7tOOimNH2//PYF2aEEpAIwAIIBATANBgkqhkiG9w0BAQUFAAOCAQEAhRWc
3199
- Nz3PcUJllao5G/v4AyvjLgwB2JgjJgh6D3ILoOe9TrDSXD7ZV3F30vFae+Eztk86
3200
- pmM8x57E0HsuuY+Owf6/hvELtwbzf9N/lc9ySZSogGFoQeJ8rnCJAQ0FaPjqb7AN
3201
- xTaY9HTzr4dZG1f+sw32RUu2fDe7Deqgf85uMSZ1mtRTt9zvo8lMQxVA2nVOfwz2
3202
- Nxf+qSNYSCtf0/6iwfzHy0qPjaJnywgBCi3Lg2IMSqGUatxzH+9HWrBgD+ZYxmDz
3203
- 2gW+EIU1Y/We/tbjIWaR1PD+IzeRJi5fHq60RKHPSdp7TGtV48bQRvyZXC7sVCRa
3204
- yxfX1IGYhCDzbFRQNg==
3205
- -----END CERTIFICATE-----
3206
- PKCS7
3207
- end
3208
-
3209
- let(:module_keys_dir) do
3210
- keys = tmpdir('keys')
3211
- dir_contained_in(keys, {
3212
- private_key_name => private_module_key,
3213
- public_key_name => public_module_key
3214
- })
3215
- keys
3216
- end
3217
-
3218
- let(:private_module_key_path) { File.join(module_keys_dir, private_key_name) }
3219
- let(:public_module_key_path) { File.join(module_keys_dir, public_key_name) }
3220
-
3221
- let(:mod_a_files) do
3222
- {
3223
- 'mod_a' => {
3224
- 'hiera.yaml' => <<-YAML.unindent,
3225
- version: 5
3226
- hierarchy:
3227
- - name: EYaml
3228
- path: common.eyaml
3229
- lookup_key: eyaml_lookup_key
3230
- options:
3231
- pkcs7_private_key: #{private_module_key_path}
3232
- pkcs7_public_key: #{public_module_key_path}
3233
- YAML
3234
- 'data' => {
3235
- 'common.eyaml' => <<-YAML.unindent
3236
- ---
3237
- # "%{lookup('a')} (from module)"
3238
- mod_a::a: >
3239
- ENC[PKCS7,MIIBiQYJKoZIhvcNAQcDoIIBejCCAXYCAQAxggEhMIIBHQIBADAFMAACAQEw
3240
- DQYJKoZIhvcNAQEBBQAEggEAC+lvda8mX6XkgCBstNw4IQUDyFcS6M0mS9gZ
3241
- ev4VBDeUK4AUNVnzzdbW0Mnj9LbqlpzFx96VGqSxsRBpe7BVD0kVo5jQsEMn
3242
- nbrWOD1lvXYrXZMXBeD9xJbMbH5EiiFhbaXcEKRAVGaLVQKjXDENDQ/On+it
3243
- 1+wmmVwJynDJR0lsCz6dcSKvw6wnxBcv32qFyePvJuIf04CHMhaS4ykedYHK
3244
- vagUn5uVXOv/8G0JPlZnQLyxjE0v0heb0Zj0mvcP2+Y5BSW50AQVrMWJNtdW
3245
- aFEg6H5hpjduQfQh3iWVuDLnWhbP0sY2Grn5dTOxQP8aTDSsiTUcSeIAmjr/
3246
- K8YRCjBMBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBAjL7InlBjRuohLLcBx
3247
- 686ogCDkhCan8bCE7aX2nr75QtLF3q89pFIR4/NGl5+oGEO+qQ==]
3248
- YAML
3249
- }
3250
- }
3251
- }
3252
- end
3253
-
3254
- let(:populated_env_dir) do
3255
- dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files }))
3256
- env_dir
3257
- end
3258
-
3259
- it 'repeatedly finds data in environment and module' do
3260
- expect(lookup(['array_a', 'mod_a::a', 'hash_a'])).to eql([
3261
- ['array_a[0]', 'array_a[1]'],
3262
- "Encrypted value 'a' (from environment) (from module)",
3263
- {'hash_aa'=>{'aaa'=>'Encrypted value hash_a.hash_aa.aaa (from environment)'}}])
3264
- end
3265
- end
3266
-
3267
- it 'finds data in the environment' do
3268
- expect(lookup('a')).to eql("Encrypted value 'a' (from environment)")
3269
- end
3270
-
3271
- it 'evaluates interpolated keys' do
3272
- expect(lookup('hash_a')).to include('hash_aa')
3273
- end
3274
-
3275
- it 'evaluates interpolations in encrypted values' do
3276
- expect(lookup('ref_a')).to eql("A resolved = 'Encrypted value 'a' (from environment)'")
3277
- end
3278
-
3279
- it 'can read encrypted values inside a hash' do
3280
- expect(lookup('hash_a.hash_aa.aaa')).to eql('Encrypted value hash_a.hash_aa.aaa (from environment)')
3281
- end
3282
-
3283
- it 'can read encrypted values inside an array' do
3284
- expect(lookup('array_a')).to eql(['array_a[0]', 'array_a[1]'])
3285
- end
3286
-
3287
- context 'declared in global scope as a Hiera v3 backend', :if => Puppet.features.hiera? do
3288
- let(:environment_files) { {} }
3289
- let(:data_file_content) { <<-YAML.unindent }
3290
- a: >
3291
- ENC[PKCS7,MIIBmQYJKoZIhvcNAQcDoIIBijCCAYYCAQAxggEhMIIBHQIBADAFMAACAQEw
3292
- DQYJKoZIhvcNAQEBBQAEggEAH457bsfL8kYw9O50roE3dcE21nCnmPnQ2XSX
3293
- LYRJ2C78LarbfFonKz0gvDW7tyhsLWASFCFaiU8T1QPBd2b3hoQK8E4B2Ual
3294
- xga/K7r9y3OSgRomTm9tpTltC6re0Ubh3Dy71H61obwxEdNVTqjPe95+m2b8
3295
- 6zWZVnzZzXXsTG1S17yJn1zaB/LXHbWNy4KyLLKCGAml+Gfl6ZMjmaplTmUA
3296
- QIC5rI8abzbPP3TDMmbLOGNkrmLqI+3uS8tSueTMoJmWaMF6c+H/cA7oRxmV
3297
- QCeEUVXjyFvCHcmbA+keS/RK9XF+vc07/XS4XkYSPs/I5hLQji1y9bkkGAs0
3298
- tehxQjBcBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBDHpA6Fcl/R16aIYcow
3299
- oiO4gDAvfFH6jLUwXkcYtagnwdmhkd9TQJtxNWcIwMpvmk036MqIoGwwhQdg
3300
- gV4beiCFtLU=]
3301
- YAML
3302
-
3303
- let(:hiera_yaml) do
3304
- <<-YAML.unindent
3305
- :backends: eyaml
3306
- :eyaml:
3307
- :datadir: #{code_dir}/hieradata
3308
- :pkcs7_private_key: #{private_key_path}
3309
- :pkcs7_public_key: #{public_key_path}
3310
- :hierarchy:
3311
- - common
3312
- YAML
3313
- end
3314
-
3315
- let(:data_files) do
3316
- {
3317
- 'common.eyaml' => data_file_content
3318
- }
3319
- end
3320
-
3321
- let(:code_dir_files) do
3322
- {
3323
- 'hiera.yaml' => hiera_yaml,
3324
- 'hieradata' => data_files
3325
- }
3326
- end
3327
-
3328
- before(:each) do
3329
- Puppet.settings[:hiera_config] = File.join(code_dir, 'hiera.yaml')
3330
- end
3331
-
3332
- it 'finds data in the global layer' do
3333
- expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
3334
- end
3335
-
3336
- it 'delegates configured eyaml backend to eyaml_lookup_key function' do
3337
- expect(explain('a')).to match(/Hierarchy entry "eyaml"\n.*\n.*\n.*"common"\n\s*Found key: "a"/m)
3338
- end
3339
-
3340
- context 'using intepolated paths to the key pair' do
3341
- let(:scope_additions) { { 'priv_path' => private_key_path, 'pub_path' => public_key_path } }
3342
-
3343
- let(:hiera_yaml) do
3344
- <<-YAML.unindent
3345
- :backends: eyaml
3346
- :eyaml:
3347
- :datadir: #{code_dir}/hieradata
3348
- :pkcs7_private_key: "%{priv_path}"
3349
- :pkcs7_public_key: "%{pub_path}"
3350
- :hierarchy:
3351
- - common
3352
- YAML
3353
- end
3354
-
3355
- it 'finds data in the global layer' do
3356
- expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
3357
- end
3358
- end
3359
-
3360
- context 'using options containing intepolated paths to the key pair' do
3361
- let(:scope_additions) { { 'priv_path' => private_key_path, 'pub_path' => public_key_path } }
3362
-
3363
- let(:hiera_yaml) do
3364
- <<-YAML.unindent
3365
- version: 5
3366
- defaults:
3367
- datadir: #{code_dir}/hieradata
3368
- hierarchy:
3369
- - name: "secret data"
3370
- lookup_key: eyaml_lookup_key
3371
- path: common.eyaml
3372
- options:
3373
- pkcs7_private_key: "%{priv_path}"
3374
- pkcs7_public_key: "%{pub_path}"
3375
- YAML
3376
- end
3377
-
3378
- it 'finds data in the global layer' do
3379
- expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
3380
- end
3381
- end
3382
-
3383
- context 'with special extension declared in options' do
3384
- let(:environment_files) { {} }
3385
- let(:hiera_yaml) do
3386
- <<-YAML.unindent
3387
- :backends: eyaml
3388
- :eyaml:
3389
- :extension: xyaml
3390
- :datadir: #{code_dir}/hieradata
3391
- :pkcs7_private_key: #{private_key_path}
3392
- :pkcs7_public_key: #{public_key_path}
3393
- :hierarchy:
3394
- - common
3395
- YAML
3396
- end
3397
-
3398
- let(:data_files) do
3399
- {
3400
- 'common.xyaml' => data_file_content
3401
- }
3402
- end
3403
-
3404
- it 'finds data in the global layer' do
3405
- expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
3406
- end
3407
-
3408
- it 'delegates configured eyaml backend to eyaml_lookup_key function' do
3409
- expect(explain('a')).to match(/Hierarchy entry "eyaml"\n.*\n.*\n.*"common"\n\s*Found key: "a"/m)
3410
- end
3411
- end
3412
- end
3413
- end
3414
- end
3415
- end