puppet 4.8.2-universal-darwin → 4.9.0-universal-darwin

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

Potentially problematic release.


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

Files changed (348) hide show
  1. checksums.yaml +15 -0
  2. data/CONTRIBUTING.md +25 -1
  3. data/Gemfile +6 -0
  4. data/Rakefile +1 -0
  5. data/ext/project_data.yaml +5 -1
  6. data/ext/windows/service/daemon.rb +2 -1
  7. data/install.rb +43 -6
  8. data/lib/hiera/puppet_function.rb +15 -17
  9. data/lib/hiera/scope.rb +12 -14
  10. data/lib/puppet/application/face_base.rb +4 -0
  11. data/lib/puppet/application/lookup.rb +4 -2
  12. data/lib/puppet/application/resource.rb +1 -1
  13. data/lib/puppet/data_providers/data_adapter.rb +6 -0
  14. data/lib/puppet/data_providers/data_function_support.rb +7 -0
  15. data/lib/puppet/data_providers/function_env_data_provider.rb +7 -0
  16. data/lib/puppet/data_providers/function_module_data_provider.rb +6 -0
  17. data/lib/puppet/data_providers/hiera_config.rb +31 -10
  18. data/lib/puppet/data_providers/hiera_env_data_provider.rb +6 -0
  19. data/lib/puppet/data_providers/hiera_interpolate.rb +2 -1
  20. data/lib/puppet/data_providers/hiera_module_data_provider.rb +6 -0
  21. data/lib/puppet/data_providers/hiera_support.rb +6 -0
  22. data/lib/puppet/data_providers/json_data_provider_factory.rb +12 -0
  23. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +12 -0
  24. data/lib/puppet/data_providers.rb +6 -3
  25. data/lib/puppet/defaults.rb +25 -4
  26. data/lib/puppet/face/ca.rb +2 -0
  27. data/lib/puppet/face/certificate_request.rb +2 -0
  28. data/lib/puppet/face/certificate_revocation_list.rb +2 -0
  29. data/lib/puppet/face/file.rb +3 -0
  30. data/lib/puppet/face/help/face.erb +3 -0
  31. data/lib/puppet/face/help.rb +19 -17
  32. data/lib/puppet/face/key.rb +1 -0
  33. data/lib/puppet/face/man.rb +4 -2
  34. data/lib/puppet/face/module/generate.rb +1 -1
  35. data/lib/puppet/face/status.rb +2 -0
  36. data/lib/puppet/feature/base.rb +9 -2
  37. data/lib/puppet/feature/hocon.rb +3 -0
  38. data/lib/puppet/file_system/windows.rb +8 -0
  39. data/lib/puppet/file_system.rb +15 -3
  40. data/lib/puppet/forge/repository.rb +1 -2
  41. data/lib/puppet/forge.rb +6 -6
  42. data/lib/puppet/functions/binary_file.rb +4 -10
  43. data/lib/puppet/functions/hiera_array.rb +1 -1
  44. data/lib/puppet/functions/hiera_include.rb +1 -1
  45. data/lib/puppet/functions/hocon_data.rb +24 -0
  46. data/lib/puppet/functions/json_data.rb +18 -0
  47. data/lib/puppet/functions/yaml_data.rb +21 -0
  48. data/lib/puppet/generate/type.rb +1 -1
  49. data/lib/puppet/graph/simple_graph.rb +4 -2
  50. data/lib/puppet/indirector/file_bucket_file/file.rb +10 -2
  51. data/lib/puppet/indirector/request.rb +5 -1
  52. data/lib/puppet/interface/face_collection.rb +1 -1
  53. data/lib/puppet/interface.rb +14 -2
  54. data/lib/puppet/module.rb +14 -2
  55. data/lib/puppet/module_tool/applications/builder.rb +3 -2
  56. data/lib/puppet/module_tool/applications/installer.rb +14 -14
  57. data/lib/puppet/module_tool/applications/upgrader.rb +13 -13
  58. data/lib/puppet/module_tool/installed_modules.rb +7 -7
  59. data/lib/puppet/module_tool/local_tarball.rb +3 -3
  60. data/lib/puppet/module_tool/metadata.rb +1 -1
  61. data/lib/puppet/module_tool.rb +4 -4
  62. data/lib/puppet/network/http/connection.rb +2 -0
  63. data/lib/puppet/network/http/webrick.rb +2 -1
  64. data/lib/puppet/parser/functions/hiera.rb +14 -0
  65. data/lib/puppet/parser/functions/hiera_array.rb +14 -0
  66. data/lib/puppet/parser/functions/hiera_hash.rb +14 -0
  67. data/lib/puppet/parser/functions/hiera_include.rb +14 -0
  68. data/lib/puppet/parser/scope.rb +14 -20
  69. data/lib/puppet/plugins/data_providers/data_provider.rb +108 -17
  70. data/lib/puppet/plugins/data_providers/registry.rb +2 -36
  71. data/lib/puppet/plugins/data_providers.rb +2 -0
  72. data/lib/puppet/pops/adaptable.rb +0 -3
  73. data/lib/puppet/pops/binder/producers.rb +3 -3
  74. data/lib/puppet/pops/evaluator/access_operator.rb +4 -4
  75. data/lib/puppet/pops/evaluator/closure.rb +1 -1
  76. data/lib/puppet/pops/evaluator/compare_operator.rb +4 -4
  77. data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
  78. data/lib/puppet/pops/issues.rb +4 -0
  79. data/lib/puppet/pops/label_provider.rb +14 -0
  80. data/lib/puppet/pops/loader/loader_paths.rb +3 -1
  81. data/lib/puppet/pops/loader/module_loaders.rb +21 -7
  82. data/lib/puppet/pops/loader/typed_name.rb +0 -2
  83. data/lib/puppet/pops/loaders.rb +31 -12
  84. data/lib/puppet/pops/lookup/configured_data_provider.rb +87 -0
  85. data/lib/puppet/pops/lookup/context.rb +121 -71
  86. data/lib/puppet/pops/lookup/data_adapter.rb +27 -0
  87. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +55 -0
  88. data/lib/puppet/pops/lookup/data_hash_function_provider.rb +111 -0
  89. data/lib/puppet/pops/lookup/data_provider.rb +102 -0
  90. data/lib/puppet/pops/lookup/environment_data_provider.rb +27 -0
  91. data/lib/puppet/pops/lookup/explainer.rb +122 -82
  92. data/lib/puppet/pops/lookup/function_provider.rb +82 -0
  93. data/lib/puppet/pops/lookup/global_data_provider.rb +49 -0
  94. data/lib/puppet/pops/lookup/hiera_config.rb +601 -0
  95. data/lib/puppet/pops/lookup/interpolation.rb +56 -35
  96. data/lib/puppet/pops/lookup/invocation.rb +179 -101
  97. data/lib/puppet/pops/lookup/location_resolver.rb +72 -0
  98. data/lib/puppet/pops/lookup/lookup_adapter.rb +451 -0
  99. data/lib/puppet/pops/lookup/lookup_key.rb +99 -0
  100. data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +119 -0
  101. data/lib/puppet/pops/lookup/module_data_provider.rb +58 -0
  102. data/lib/puppet/pops/lookup/sub_lookup.rb +8 -4
  103. data/lib/puppet/pops/lookup.rb +4 -3
  104. data/lib/puppet/pops/merge_strategy.rb +120 -39
  105. data/lib/puppet/pops/parser/egrammar.ra +2 -0
  106. data/lib/puppet/pops/parser/eparser.rb +816 -808
  107. data/lib/puppet/pops/parser/locator.rb +3 -3
  108. data/lib/puppet/pops/parser/slurp_support.rb +4 -3
  109. data/lib/puppet/pops/pcore.rb +21 -12
  110. data/lib/puppet/pops/serialization/abstract_reader.rb +17 -7
  111. data/lib/puppet/pops/serialization/abstract_writer.rb +27 -12
  112. data/lib/puppet/pops/serialization/deserializer.rb +17 -4
  113. data/lib/puppet/pops/serialization/extension.rb +37 -8
  114. data/lib/puppet/pops/serialization/object.rb +14 -6
  115. data/lib/puppet/pops/serialization/rgen.rb +2 -1
  116. data/lib/puppet/pops/serialization/serializer.rb +30 -7
  117. data/lib/puppet/pops/types/implementation_registry.rb +1 -1
  118. data/lib/puppet/pops/types/p_object_type.rb +55 -12
  119. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +27 -27
  120. data/lib/puppet/pops/types/p_sem_ver_type.rb +12 -12
  121. data/lib/puppet/pops/types/p_timespan_type.rb +6 -6
  122. data/lib/puppet/pops/types/p_timestamp_type.rb +2 -2
  123. data/lib/puppet/pops/types/p_type_set_type.rb +7 -16
  124. data/lib/puppet/pops/types/recursion_guard.rb +64 -20
  125. data/lib/puppet/pops/types/ruby_generator.rb +10 -0
  126. data/lib/puppet/pops/types/type_calculator.rb +23 -13
  127. data/lib/puppet/pops/types/type_factory.rb +20 -9
  128. data/lib/puppet/pops/types/type_formatter.rb +37 -17
  129. data/lib/puppet/pops/types/type_mismatch_describer.rb +7 -6
  130. data/lib/puppet/pops/types/type_parser.rb +6 -0
  131. data/lib/puppet/pops/types/types.rb +225 -132
  132. data/lib/puppet/pops/validation/checker4_0.rb +12 -2
  133. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  134. data/lib/puppet/pops/validation.rb +1 -1
  135. data/lib/puppet/pops/visitor.rb +4 -3
  136. data/lib/puppet/pops.rb +6 -9
  137. data/lib/puppet/provider/mcx/mcxcontent.rb +2 -1
  138. data/lib/puppet/provider/nameservice.rb +15 -0
  139. data/lib/puppet/provider/package/appdmg.rb +1 -1
  140. data/lib/puppet/provider/package/dnf.rb +1 -1
  141. data/lib/puppet/provider/package/pkg.rb +1 -1
  142. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  143. data/lib/puppet/provider/package/pkgng.rb +1 -1
  144. data/lib/puppet/provider/package/rpm.rb +2 -2
  145. data/lib/puppet/provider/service/smf.rb +3 -3
  146. data/lib/puppet/provider/service/systemd.rb +5 -1
  147. data/lib/puppet/provider/user/directoryservice.rb +1 -0
  148. data/lib/puppet/provider/user/user_role_add.rb +15 -0
  149. data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
  150. data/lib/puppet/provider/zone/solaris.rb +4 -1
  151. data/lib/puppet/reference/indirection.rb +1 -1
  152. data/lib/puppet/resource/catalog.rb +12 -4
  153. data/lib/puppet/resource/type.rb +3 -3
  154. data/lib/puppet/resource.rb +2 -3
  155. data/lib/puppet/settings/config_file.rb +2 -1
  156. data/lib/puppet/settings/directory_setting.rb +6 -0
  157. data/lib/puppet/settings/environment_conf.rb +6 -2
  158. data/lib/puppet/settings/file_or_directory_setting.rb +6 -0
  159. data/lib/puppet/settings/file_setting.rb +10 -0
  160. data/lib/puppet/settings.rb +1 -1
  161. data/lib/puppet/ssl/certificate_authority.rb +13 -2
  162. data/lib/puppet/ssl/host.rb +23 -1
  163. data/lib/puppet/transaction/additional_resource_generator.rb +7 -0
  164. data/lib/puppet/type/user.rb +16 -3
  165. data/lib/puppet/util/execution.rb +3 -3
  166. data/lib/puppet/util/filetype.rb +11 -5
  167. data/lib/puppet/util/logging.rb +2 -1
  168. data/lib/puppet/util/network_device/config.rb +1 -1
  169. data/lib/puppet/util/plist.rb +6 -0
  170. data/lib/puppet/util/profiler/aggregate.rb +1 -1
  171. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
  172. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +2 -1
  173. data/lib/puppet/util/windows/adsi.rb +15 -12
  174. data/lib/puppet/util.rb +1 -0
  175. data/lib/puppet/vendor/load_semantic_puppet.rb +1 -0
  176. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +2 -1
  177. data/lib/puppet/vendor/require_vendored.rb +0 -1
  178. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph.rb +2 -2
  179. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph_node.rb +2 -2
  180. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +58 -0
  181. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/source.rb +2 -2
  182. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/unsatisfiable_graph.rb +2 -2
  183. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
  184. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +3 -0
  185. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/locales/config.yaml +21 -0
  186. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version.rb +48 -21
  187. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version_range.rb +15 -17
  188. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +17 -0
  189. data/lib/puppet/version.rb +1 -1
  190. data/lib/puppet.rb +52 -0
  191. data/lib/semver.rb +19 -12
  192. data/locales/config.yaml +29 -0
  193. data/locales/puppet.pot +79 -0
  194. data/man/man5/puppet.conf.5 +1 -1
  195. data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/{data.pp → environment/data.pp} +0 -0
  196. data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +2 -0
  197. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +1 -1
  198. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/hiera.yaml +5 -0
  199. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet/bindings/backend/default.rb +9 -0
  200. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet_x/backend/special_data_provider_factory.rb +23 -0
  201. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/manifests/init.pp +5 -0
  202. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/metadata.json +9 -0
  203. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +1 -0
  204. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +1 -1
  205. data/spec/fixtures/unit/functions/lookup/data/common.yaml +19 -0
  206. data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +19 -0
  207. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/environment.conf +0 -0
  208. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/lib/puppet/functions/environment/data.rb +0 -0
  209. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -0
  210. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -0
  211. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/manifests/init.pp +0 -0
  212. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -0
  213. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +0 -0
  214. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/manifests/init.pp +0 -0
  215. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -0
  216. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -0
  217. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/manifests/init.pp +0 -0
  218. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/data/empty.json +0 -0
  219. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/hiera.yaml +0 -0
  220. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/manifests/init.pp +0 -0
  221. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/metadata.json +0 -0
  222. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/data/empty_key.json +0 -0
  223. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/hiera.yaml +0 -0
  224. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/manifests/init.pp +0 -0
  225. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/metadata.json +0 -0
  226. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/data/empty_key.yaml +0 -0
  227. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/hiera.yaml +0 -0
  228. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/manifests/init.pp +0 -0
  229. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/metadata.json +0 -0
  230. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/data/empty.yaml +0 -0
  231. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/hiera.yaml +0 -0
  232. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/manifests/init.pp +0 -0
  233. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/metadata.json +0 -0
  234. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/data/first.json +0 -0
  235. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/hiera.yaml +0 -0
  236. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/manifests/init.pp +0 -0
  237. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/metadata.json +0 -0
  238. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +0 -0
  239. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/manifests/init.pp +0 -0
  240. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/metadata.json +0 -0
  241. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +0 -0
  242. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +0 -0
  243. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/manifests/init.pp +0 -0
  244. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/metadata.json +0 -0
  245. data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/no_provider/manifests/init.pp +0 -0
  246. data/spec/integration/application/apply_spec.rb +88 -2
  247. data/spec/integration/application/lookup_spec.rb +155 -0
  248. data/spec/integration/data_binding_spec.rb +5 -5
  249. data/spec/integration/defaults_spec.rb +13 -0
  250. data/spec/integration/environments/default_manifest_spec.rb +16 -16
  251. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  252. data/spec/integration/test/test_helper_spec.rb +6 -2
  253. data/spec/integration/transaction_spec.rb +74 -0
  254. data/spec/integration/util/execution_spec.rb +8 -0
  255. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
  256. data/spec/lib/puppet_spec/module_tool/stub_source.rb +1 -1
  257. data/spec/lib/puppet_spec/unindent.rb +2 -2
  258. data/spec/unit/application/face_base_spec.rb +16 -0
  259. data/spec/unit/application/lookup_spec.rb +262 -227
  260. data/spec/unit/data_providers/{sample_data_provider_spec.rb → custom_data_provider_spec.rb} +14 -16
  261. data/spec/unit/data_providers/function_data_provider_spec.rb +2 -2
  262. data/spec/unit/data_providers/hiera_data_provider_spec.rb +60 -97
  263. data/spec/unit/defaults_spec.rb +1 -1
  264. data/spec/unit/face/ca_spec.rb +10 -0
  265. data/spec/unit/face/certificate_request_spec.rb +10 -0
  266. data/spec/unit/face/certificate_revocation_list_spec.rb +10 -0
  267. data/spec/unit/face/file_spec.rb +4 -0
  268. data/spec/unit/face/help_spec.rb +17 -0
  269. data/spec/unit/face/key_spec.rb +10 -0
  270. data/spec/unit/face/status_spec.rb +10 -0
  271. data/spec/unit/file_system_spec.rb +143 -6
  272. data/spec/unit/functions/binary_file_spec.rb +1 -1
  273. data/spec/unit/functions/hiera_spec.rb +257 -47
  274. data/spec/unit/functions/lookup_fixture_spec.rb +693 -0
  275. data/spec/unit/functions/lookup_spec.rb +1319 -608
  276. data/spec/unit/functions/new_spec.rb +3 -3
  277. data/spec/unit/graph/rb_tree_map_spec.rb +1 -1
  278. data/spec/unit/graph/simple_graph_spec.rb +1 -1
  279. data/spec/unit/hiera/scope_spec.rb +4 -4
  280. data/spec/unit/indirector/request_spec.rb +9 -0
  281. data/spec/unit/interface_spec.rb +27 -0
  282. data/spec/unit/man_spec.rb +1 -1
  283. data/spec/unit/module_spec.rb +1 -1
  284. data/spec/unit/module_tool/applications/builder_spec.rb +16 -1
  285. data/spec/unit/module_tool/applications/installer_spec.rb +1 -1
  286. data/spec/unit/module_tool/applications/upgrader_spec.rb +1 -1
  287. data/spec/unit/module_tool/installed_modules_spec.rb +6 -6
  288. data/spec/unit/module_tool_spec.rb +3 -3
  289. data/spec/unit/network/http/connection_spec.rb +10 -0
  290. data/spec/unit/network/http/webrick_spec.rb +1 -1
  291. data/spec/unit/pops/evaluator/access_ops_spec.rb +2 -2
  292. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +9 -9
  293. data/spec/unit/pops/loaders/environment_loader_spec.rb +172 -0
  294. data/spec/unit/pops/lookup/context_spec.rb +45 -16
  295. data/spec/unit/pops/lookup/interpolation_spec.rb +28 -20
  296. data/spec/unit/pops/lookup/lookup_spec.rb +197 -0
  297. data/spec/unit/pops/merge_strategy_spec.rb +18 -0
  298. data/spec/unit/pops/parser/lexer2_spec.rb +16 -1
  299. data/spec/unit/pops/parser/parse_site_spec.rb +4 -0
  300. data/spec/unit/pops/serialization/packer_spec.rb +4 -23
  301. data/spec/unit/pops/serialization/serialization_spec.rb +32 -8
  302. data/spec/unit/pops/types/p_object_type_spec.rb +68 -3
  303. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +4 -4
  304. data/spec/unit/pops/types/p_type_set_type_spec.rb +31 -2
  305. data/spec/unit/pops/types/type_acceptor_spec.rb +18 -17
  306. data/spec/unit/pops/types/type_calculator_spec.rb +39 -40
  307. data/spec/unit/pops/types/type_factory_spec.rb +3 -3
  308. data/spec/unit/pops/types/type_formatter_spec.rb +7 -3
  309. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +13 -2
  310. data/spec/unit/pops/types/types_spec.rb +25 -2
  311. data/spec/unit/pops/validator/validator_spec.rb +60 -4
  312. data/spec/unit/provider/nameservice_spec.rb +42 -0
  313. data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
  314. data/spec/unit/provider/package/pkg_spec.rb +22 -0
  315. data/spec/unit/provider/package/pkgng_spec.rb +12 -0
  316. data/spec/unit/provider/package/rpm_spec.rb +8 -8
  317. data/spec/unit/provider/service/smf_spec.rb +13 -11
  318. data/spec/unit/provider/service/systemd_spec.rb +8 -1
  319. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  320. data/spec/unit/puppet_spec.rb +14 -0
  321. data/spec/unit/resource/catalog_spec.rb +15 -9
  322. data/spec/unit/resource_spec.rb +20 -17
  323. data/spec/unit/semver_spec.rb +14 -0
  324. data/spec/unit/ssl/certificate_authority_spec.rb +12 -1
  325. data/spec/unit/transaction/additional_resource_generator_spec.rb +11 -0
  326. data/spec/unit/type/user_spec.rb +32 -6
  327. data/spec/unit/util/filetype_spec.rb +3 -3
  328. data/spec/unit/util/yaml_spec.rb +1 -1
  329. data/spec/unit/util_spec.rb +10 -2
  330. data/tasks/i18n.rake +20 -0
  331. metadata +2661 -2595
  332. data/lib/puppet/data_providers/lookup_adapter.rb +0 -254
  333. data/lib/puppet/vendor/load_semantic.rb +0 -1
  334. data/lib/puppet/vendor/semantic/Gemfile +0 -20
  335. data/lib/puppet/vendor/semantic/PUPPET_README.md +0 -6
  336. data/lib/puppet/vendor/semantic/Rakefile +0 -69
  337. data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +0 -60
  338. data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -7
  339. data/lib/puppet/vendor/semantic/spec/spec_helper.rb +0 -24
  340. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +0 -141
  341. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +0 -162
  342. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +0 -143
  343. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +0 -5
  344. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +0 -44
  345. data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +0 -383
  346. data/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +0 -307
  347. data/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +0 -608
  348. data/spec/fixtures/unit/data_providers/environments/sample/manifests/site.pp +0 -6
@@ -4,6 +4,18 @@ require 'puppet/pops/lookup'
4
4
 
5
5
  describe Puppet::Application::Lookup do
6
6
 
7
+ def run_lookup(lookup)
8
+ capture = StringIO.new
9
+ saved_stdout = $stdout
10
+ begin
11
+ $stdout = capture
12
+ expect { lookup.run_command }.to exit_with(0)
13
+ ensure
14
+ $stdout = saved_stdout
15
+ end
16
+ capture.string.strip
17
+ end
18
+
7
19
  context "when running with incorrect command line options" do
8
20
  let (:lookup) { Puppet::Application[:lookup] }
9
21
 
@@ -51,7 +63,7 @@ describe Puppet::Application::Lookup do
51
63
 
52
64
  (Puppet::Pops::Lookup).expects(:lookup).with(['atton', 'kreia'], nil, nil, false, expected_merge, anything).returns('rand')
53
65
 
54
- expect { lookup.run_command }.to output("rand\n").to_stdout
66
+ expect(run_lookup(lookup)).to eql("rand")
55
67
  end
56
68
 
57
69
  %w(first unique hash deep).each do |opt|
@@ -62,7 +74,7 @@ describe Puppet::Application::Lookup do
62
74
  lookup.command_line.stubs(:args).returns(['atton', 'kreia'])
63
75
  lookup.stubs(:generate_scope).yields('scope')
64
76
  Puppet::Pops::Lookup.stubs(:lookup).returns('rand')
65
- expect { lookup.run_command }.to output("--- rand\n...\n").to_stdout
77
+ expect(run_lookup(lookup)).to eql("--- rand\n...")
66
78
  end
67
79
  end
68
80
 
@@ -73,7 +85,7 @@ describe Puppet::Application::Lookup do
73
85
 
74
86
  Puppet::Pops::Lookup.stubs(:lookup).returns('rand')
75
87
 
76
- expect { lookup.run_command }.to output("--- rand\n...\n").to_stdout
88
+ expect(run_lookup(lookup)).to eql("--- rand\n...")
77
89
  end
78
90
  end
79
91
 
@@ -88,69 +100,161 @@ describe Puppet::Application::Lookup do
88
100
 
89
101
  let(:node) { Puppet::Node.new("testnode", :facts => facts, :environment => 'production') }
90
102
 
91
- let(:expected_json_hash) { {
92
- 'type' => 'merge',
93
- 'merge' => 'first',
94
- 'event' => 'result',
95
- 'value' => 'This is A',
96
- 'branches' => [
97
- { 'key' => 'a',
98
- 'event' => 'not_found',
99
- 'type' => 'global',
100
- 'name' => 'hiera'
101
- },
103
+ let(:expected_json_hash) {
102
104
  {
103
- 'type' => 'data_provider',
104
- 'name' => 'Hiera Data Provider, version 4',
105
- 'configuration_path' => "#{environmentpath}/production/hiera.yaml",
106
- 'branches' => [
107
- {
108
- 'name' => 'common',
109
- 'type' => 'data_provider',
110
- 'branches' => [
111
- {
112
- 'key' => 'a',
113
- 'value' => 'This is A',
114
- 'event' => 'found',
115
- 'type' => 'path',
116
- 'original_path' => 'common',
117
- 'path' => "#{environmentpath}/production/data/common.yaml",
118
- }]
119
- }]
120
- }]
121
- } }
122
-
123
- let(:expected_yaml_hash) { {
124
- :type => :merge,
125
- :merge => :first,
126
- :event => :result,
127
- :value => 'This is A',
128
- :branches => [
129
- { :key => 'a',
130
- :event => :not_found,
131
- :type => :global,
132
- :name => :hiera
133
- },
134
- {
135
- :type => :data_provider,
136
- :name => 'Hiera Data Provider, version 4',
137
- :configuration_path => "#{environmentpath}/production/hiera.yaml",
138
- :branches => [
105
+ 'branches' =>
106
+ [
139
107
  {
140
- :type => :data_provider,
141
- :name => 'common',
142
- :branches => [
108
+ 'branches'=>
109
+ [
110
+ {
111
+ 'key'=>'lookup_options',
112
+ 'event'=>'not_found',
113
+ 'type'=>'data_provider',
114
+ 'name'=>'Global Data Provider (hiera configuration version 5)'
115
+ },
116
+ {
117
+ 'branches'=>
118
+ [
119
+ {
120
+ 'branches'=>
121
+ [
122
+ {
123
+ 'key' => 'lookup_options',
124
+ 'value' => {'a'=>'first'},
125
+ 'event'=>'found',
126
+ 'type'=>'path',
127
+ 'original_path'=>'common.yaml',
128
+ 'path'=>"#{environmentpath}/production/data/common.yaml"
129
+ }
130
+ ],
131
+ 'type'=>'data_provider',
132
+ 'name'=>'Hierarchy entry "Common"'
133
+ }
134
+ ],
135
+ 'type'=>'data_provider',
136
+ 'name'=>'Environment Data Provider (hiera configuration version 5)'
137
+ }
138
+ ],
139
+ 'key'=>'lookup_options',
140
+ 'type'=>'root'
141
+ },
142
+ {
143
+ 'branches'=>
144
+ [
145
+ {
146
+ 'key'=>'a',
147
+ 'event'=>'not_found',
148
+ 'type'=>'data_provider',
149
+ 'name'=>'Global Data Provider (hiera configuration version 5)'
150
+ },
151
+ {
152
+ 'branches'=>
153
+ [
154
+ {
155
+ 'branches'=>
156
+ [
157
+ {
158
+ 'key'=>'a',
159
+ 'value'=>'This is A',
160
+ 'event'=>'found',
161
+ 'type'=>'path',
162
+ 'original_path'=>'common.yaml',
163
+ 'path'=>"#{environmentpath}/production/data/common.yaml"
164
+ }
165
+ ],
166
+ 'type'=>'data_provider',
167
+ 'name'=>'Hierarchy entry "Common"'
168
+ }
169
+ ],
170
+ 'type'=>'data_provider',
171
+ 'name'=>'Environment Data Provider (hiera configuration version 5)'
172
+ }
173
+ ],
174
+ 'key'=>'a',
175
+ 'type'=>'root'
176
+ }
177
+ ]
178
+ }
179
+ }
180
+
181
+ let(:expected_yaml_hash) {
182
+ {
183
+ :branches =>
184
+ [
185
+ {
186
+ :branches=>
187
+ [
143
188
  {
144
- :key => 'a',
145
- :value => 'This is A',
146
- :event => :found,
147
- :type => :path,
148
- :original_path => 'common',
149
- :path => "#{environmentpath}/production/data/common.yaml",
150
- }]
151
- }]
152
- }]
153
- } }
189
+ :key=>'lookup_options',
190
+ :event=>:not_found,
191
+ :type=>:data_provider,
192
+ :name=>'Global Data Provider (hiera configuration version 5)'
193
+ },
194
+ {
195
+ :branches=>
196
+ [
197
+ {
198
+ :branches=>
199
+ [
200
+ {
201
+ :key => 'lookup_options',
202
+ :value => {'a'=>'first'},
203
+ :event=>:found,
204
+ :type=>:path,
205
+ :original_path=>'common.yaml',
206
+ :path=>"#{environmentpath}/production/data/common.yaml"
207
+ }
208
+ ],
209
+ :type=>:data_provider,
210
+ :name=>'Hierarchy entry "Common"'
211
+ }
212
+ ],
213
+ :type=>:data_provider,
214
+ :name=>'Environment Data Provider (hiera configuration version 5)'
215
+ }
216
+ ],
217
+ :key=>'lookup_options',
218
+ :type=>:root
219
+ },
220
+ {
221
+ :branches=>
222
+ [
223
+ {
224
+ :key=>'a',
225
+ :event=>:not_found,
226
+ :type=>:data_provider,
227
+ :name=>'Global Data Provider (hiera configuration version 5)'
228
+ },
229
+ {
230
+ :branches=>
231
+ [
232
+ {
233
+ :branches=>
234
+ [
235
+ {
236
+ :key=>'a',
237
+ :value=>'This is A',
238
+ :event=>:found,
239
+ :type=>:path,
240
+ :original_path=>'common.yaml',
241
+ :path=>"#{environmentpath}/production/data/common.yaml"
242
+ }
243
+ ],
244
+ :type=>:data_provider,
245
+ :name=>'Hierarchy entry "Common"'
246
+ }
247
+ ],
248
+ :type=>:data_provider,
249
+ :name=>'Environment Data Provider (hiera configuration version 5)'
250
+ }
251
+ ],
252
+ :key=>'a',
253
+ :type=>:root
254
+ }
255
+ ]
256
+ }
257
+ }
154
258
 
155
259
  around(:each) do |example|
156
260
  # Initialize settings to get a full compile as close as possible to a real
@@ -167,23 +271,27 @@ describe Puppet::Application::Lookup do
167
271
  lookup.options[:explain] = true
168
272
  lookup.command_line.stubs(:args).returns(['a'])
169
273
  logs = []
170
- begin
171
- Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
172
- expect { lookup.run_command }.to output(<<-EXPLANATION).to_stdout
173
- Merge strategy first
174
- Data Binding "hiera"
274
+ Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
275
+ expect(run_lookup(lookup)).to eql(<<-EXPLANATION.chomp)
276
+ Searching for "lookup_options"
277
+ Global Data Provider (hiera configuration version 5)
278
+ No such key: "lookup_options"
279
+ Environment Data Provider (hiera configuration version 5)
280
+ Hierarchy entry "Common"
281
+ Path "#{environmentpath}/production/data/common.yaml"
282
+ Original path: "common.yaml"
283
+ Found key: "lookup_options" value: {
284
+ "a" => "first"
285
+ }
286
+ Searching for "a"
287
+ Global Data Provider (hiera configuration version 5)
175
288
  No such key: "a"
176
- Data Provider "Hiera Data Provider, version 4"
177
- ConfigurationPath "#{environmentpath}/production/hiera.yaml"
178
- Data Provider "common"
289
+ Environment Data Provider (hiera configuration version 5)
290
+ Hierarchy entry "Common"
179
291
  Path "#{environmentpath}/production/data/common.yaml"
180
- Original path: "common"
292
+ Original path: "common.yaml"
181
293
  Found key: "a" value: "This is A"
182
- Merged result: "This is A"
183
294
  EXPLANATION
184
- end
185
- rescue SystemExit => e
186
- expect(e.status).to eq(0)
187
295
  end
188
296
  expect(logs.any? { |log| log.level == :debug }).to be_falsey
189
297
  end
@@ -213,63 +321,70 @@ Merge strategy first
213
321
  lookup.command_line.stubs(:args).returns(['a'])
214
322
  Puppet.debug = true
215
323
  logs = []
216
- begin
217
- Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
218
- expect { lookup.run_command }.to output(<<-EXPLANATION).to_stdout
219
- Merge strategy first
220
- Data Binding "hiera"
324
+ Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
325
+ expect(run_lookup(lookup)).to eql(<<-EXPLANATION.chomp)
326
+ Searching for "lookup_options"
327
+ Global Data Provider (hiera configuration version 5)
328
+ No such key: "lookup_options"
329
+ Environment Data Provider (hiera configuration version 5)
330
+ Hierarchy entry "Common"
331
+ Path "#{environmentpath}/production/data/common.yaml"
332
+ Original path: "common.yaml"
333
+ Found key: "lookup_options" value: {
334
+ "a" => "first"
335
+ }
336
+ Searching for "a"
337
+ Global Data Provider (hiera configuration version 5)
221
338
  No such key: "a"
222
- Data Provider "Hiera Data Provider, version 4"
223
- ConfigurationPath "#{environmentpath}/production/hiera.yaml"
224
- Data Provider "common"
339
+ Environment Data Provider (hiera configuration version 5)
340
+ Hierarchy entry "Common"
225
341
  Path "#{environmentpath}/production/data/common.yaml"
226
- Original path: "common"
342
+ Original path: "common.yaml"
227
343
  Found key: "a" value: "This is A"
228
- Merged result: "This is A"
229
- EXPLANATION
230
- end
231
- rescue SystemExit => e
232
- expect(e.status).to eq(0)
344
+ EXPLANATION
233
345
  end
234
346
  logs = logs.select { |log| log.level == :debug }.map { |log| log.message }
235
347
  expect(logs).to include(<<-EXPLANATION.chomp)
236
348
  Lookup of 'a'
237
- Merge strategy first
238
- Data Binding "hiera"
349
+ Searching for "lookup_options"
350
+ Global Data Provider (hiera configuration version 5)
351
+ No such key: "lookup_options"
352
+ Environment Data Provider (hiera configuration version 5)
353
+ Hierarchy entry "Common"
354
+ Path "#{environmentpath}/production/data/common.yaml"
355
+ Original path: "common.yaml"
356
+ Found key: "lookup_options" value: {
357
+ "a" => "first"
358
+ }
359
+ Searching for "a"
360
+ Global Data Provider (hiera configuration version 5)
239
361
  No such key: "a"
240
- Data Provider "Hiera Data Provider, version 4"
241
- ConfigurationPath "#{environmentpath}/production/hiera.yaml"
242
- Data Provider "common"
362
+ Environment Data Provider (hiera configuration version 5)
363
+ Hierarchy entry "Common"
243
364
  Path "#{environmentpath}/production/data/common.yaml"
244
- Original path: "common"
365
+ Original path: "common.yaml"
245
366
  Found key: "a" value: "This is A"
246
- Merged result: "This is A"
247
367
  EXPLANATION
248
368
  end
249
369
 
250
370
  it '--explain-options produces human readable text of a hash merge' do
251
371
  lookup.options[:node] = node
252
372
  lookup.options[:explain_options] = true
253
- begin
254
- expect { lookup.run_command }.to output(<<-EXPLANATION).to_stdout
373
+ expect(run_lookup(lookup)).to eql(<<-EXPLANATION.chomp)
255
374
  Merge strategy hash
256
- Data Binding "hiera"
375
+ Global Data Provider (hiera configuration version 5)
257
376
  No such key: "lookup_options"
258
- Data Provider "Hiera Data Provider, version 4"
259
- ConfigurationPath "#{environmentpath}/production/hiera.yaml"
260
- Data Provider "common"
377
+ Environment Data Provider (hiera configuration version 5)
378
+ Hierarchy entry "Common"
261
379
  Path "#{environmentpath}/production/data/common.yaml"
262
- Original path: "common"
380
+ Original path: "common.yaml"
263
381
  Found key: "lookup_options" value: {
264
382
  "a" => "first"
265
383
  }
266
384
  Merged result: {
267
385
  "a" => "first"
268
386
  }
269
- EXPLANATION
270
- rescue SystemExit => e
271
- expect(e.status).to eq(0)
272
- end
387
+ EXPLANATION
273
388
  end
274
389
 
275
390
  it '--explain-options produces human readable text of a hash merge and --debug produces the same output to debug logger' do
@@ -277,17 +392,15 @@ Merge strategy hash
277
392
  lookup.options[:explain_options] = true
278
393
  Puppet.debug = true
279
394
  logs = []
280
- begin
281
- Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
282
- expect { lookup.run_command }.to output(<<-EXPLANATION).to_stdout
395
+ Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
396
+ expect(run_lookup(lookup)).to eql(<<-EXPLANATION.chomp)
283
397
  Merge strategy hash
284
- Data Binding "hiera"
398
+ Global Data Provider (hiera configuration version 5)
285
399
  No such key: "lookup_options"
286
- Data Provider "Hiera Data Provider, version 4"
287
- ConfigurationPath "#{environmentpath}/production/hiera.yaml"
288
- Data Provider "common"
400
+ Environment Data Provider (hiera configuration version 5)
401
+ Hierarchy entry "Common"
289
402
  Path "#{environmentpath}/production/data/common.yaml"
290
- Original path: "common"
403
+ Original path: "common.yaml"
291
404
  Found key: "lookup_options" value: {
292
405
  "a" => "first"
293
406
  }
@@ -295,28 +408,24 @@ Merge strategy hash
295
408
  "a" => "first"
296
409
  }
297
410
  EXPLANATION
298
- end
299
- rescue SystemExit => e
300
- expect(e.status).to eq(0)
301
- end
302
411
  logs = logs.select { |log| log.level == :debug }.map { |log| log.message }
303
412
  expect(logs).to include(<<-EXPLANATION.chomp)
304
413
  Lookup of '__global__'
305
414
  Merge strategy hash
306
- Data Binding "hiera"
415
+ Global Data Provider (hiera configuration version 5)
307
416
  No such key: "lookup_options"
308
- Data Provider "Hiera Data Provider, version 4"
309
- ConfigurationPath "#{environmentpath}/production/hiera.yaml"
310
- Data Provider "common"
417
+ Environment Data Provider (hiera configuration version 5)
418
+ Hierarchy entry "Common"
311
419
  Path "#{environmentpath}/production/data/common.yaml"
312
- Original path: "common"
420
+ Original path: "common.yaml"
313
421
  Found key: "lookup_options" value: {
314
422
  "a" => "first"
315
423
  }
316
424
  Merged result: {
317
425
  "a" => "first"
318
426
  }
319
- EXPLANATION
427
+ EXPLANATION
428
+ end
320
429
  end
321
430
 
322
431
  it '--explain produces human readable text of a hash merge when using both --explain and --explain-options' do
@@ -324,38 +433,26 @@ Lookup of '__global__'
324
433
  lookup.options[:explain] = true
325
434
  lookup.options[:explain_options] = true
326
435
  lookup.command_line.stubs(:args).returns(['a'])
327
- begin
328
- expect { lookup.run_command }.to output(<<-EXPLANATION).to_stdout
436
+ expect(run_lookup(lookup)).to eql(<<-EXPLANATION.chomp)
329
437
  Searching for "lookup_options"
330
- Merge strategy hash
331
- Data Binding "hiera"
332
- No such key: "lookup_options"
333
- Data Provider "Hiera Data Provider, version 4"
334
- ConfigurationPath "#{environmentpath}/production/hiera.yaml"
335
- Data Provider "common"
336
- Path "#{environmentpath}/production/data/common.yaml"
337
- Original path: "common"
338
- Found key: "lookup_options" value: {
339
- "a" => "first"
340
- }
341
- Merged result: {
342
- "a" => "first"
343
- }
438
+ Global Data Provider (hiera configuration version 5)
439
+ No such key: "lookup_options"
440
+ Environment Data Provider (hiera configuration version 5)
441
+ Hierarchy entry "Common"
442
+ Path "#{environmentpath}/production/data/common.yaml"
443
+ Original path: "common.yaml"
444
+ Found key: "lookup_options" value: {
445
+ "a" => "first"
446
+ }
344
447
  Searching for "a"
345
- Merge strategy first
346
- Data Binding "hiera"
347
- No such key: "a"
348
- Data Provider "Hiera Data Provider, version 4"
349
- ConfigurationPath "#{environmentpath}/production/hiera.yaml"
350
- Data Provider "common"
351
- Path "#{environmentpath}/production/data/common.yaml"
352
- Original path: "common"
353
- Found key: "a" value: "This is A"
354
- Merged result: "This is A"
355
- EXPLANATION
356
- rescue SystemExit => e
357
- expect(e.status).to eq(0)
358
- end
448
+ Global Data Provider (hiera configuration version 5)
449
+ No such key: "a"
450
+ Environment Data Provider (hiera configuration version 5)
451
+ Hierarchy entry "Common"
452
+ Path "#{environmentpath}/production/data/common.yaml"
453
+ Original path: "common.yaml"
454
+ Found key: "a" value: "This is A"
455
+ EXPLANATION
359
456
  end
360
457
 
361
458
  it 'can produce a yaml explanation' do
@@ -363,17 +460,7 @@ Searching for "a"
363
460
  lookup.options[:explain] = true
364
461
  lookup.options[:render_as] = :yaml
365
462
  lookup.command_line.stubs(:args).returns(['a'])
366
- save_stdout = $stdout
367
- output = nil
368
- begin
369
- $stdout = StringIO.new
370
- lookup.run_command
371
- output = $stdout.string
372
- rescue SystemExit => e
373
- expect(e.status).to eq(0)
374
- ensure
375
- $stdout = save_stdout
376
- end
463
+ output = run_lookup(lookup)
377
464
  expect(YAML.load(output)).to eq(expected_yaml_hash)
378
465
  end
379
466
 
@@ -382,17 +469,7 @@ Searching for "a"
382
469
  lookup.options[:explain] = true
383
470
  lookup.options[:render_as] = :json
384
471
  lookup.command_line.stubs(:args).returns(['a'])
385
- save_stdout = $stdout
386
- output = nil
387
- begin
388
- $stdout = StringIO.new
389
- lookup.run_command
390
- output = $stdout.string
391
- rescue SystemExit => e
392
- expect(e.status).to eq(0)
393
- ensure
394
- $stdout = save_stdout
395
- end
472
+ output = run_lookup(lookup)
396
473
  expect(JSON.parse(output)).to eq(expected_json_hash)
397
474
  end
398
475
 
@@ -400,17 +477,7 @@ Searching for "a"
400
477
  lookup.options[:node] = node
401
478
  lookup.options[:render_as] = :json
402
479
  lookup.command_line.stubs(:args).returns(['d.one.two.three'])
403
- save_stdout = $stdout
404
- output = nil
405
- begin
406
- $stdout = StringIO.new
407
- lookup.run_command
408
- output = $stdout.string
409
- rescue SystemExit => e
410
- expect(e.status).to eq(0)
411
- ensure
412
- $stdout = save_stdout
413
- end
480
+ output = run_lookup(lookup)
414
481
  expect(JSON.parse("[#{output}]")).to eq(['the value'])
415
482
  end
416
483
 
@@ -418,17 +485,7 @@ Searching for "a"
418
485
  lookup.options[:node] = node
419
486
  lookup.options[:render_as] = :json
420
487
  lookup.command_line.stubs(:args).returns(['"e.one.two.three"'])
421
- save_stdout = $stdout
422
- output = nil
423
- begin
424
- $stdout = StringIO.new
425
- lookup.run_command
426
- output = $stdout.string
427
- rescue SystemExit => e
428
- expect(e.status).to eq(0)
429
- ensure
430
- $stdout = save_stdout
431
- end
488
+ output = run_lookup(lookup)
432
489
  expect(JSON.parse("[#{output}]")).to eq(['the value'])
433
490
  end
434
491
 
@@ -436,17 +493,7 @@ Searching for "a"
436
493
  lookup.options[:node] = node
437
494
  lookup.options[:render_as] = :json
438
495
  lookup.command_line.stubs(:args).returns(['"f.one"."two.three".1'])
439
- save_stdout = $stdout
440
- output = nil
441
- begin
442
- $stdout = StringIO.new
443
- lookup.run_command
444
- output = $stdout.string
445
- rescue SystemExit => e
446
- expect(e.status).to eq(0)
447
- ensure
448
- $stdout = save_stdout
449
- end
496
+ output = run_lookup(lookup)
450
497
  expect(JSON.parse("[#{output}]")).to eq(['second value'])
451
498
  end
452
499
 
@@ -454,18 +501,14 @@ Searching for "a"
454
501
  it "is unaffected by global variables unless '--compile' is used" do
455
502
  lookup.options[:node] = node
456
503
  lookup.command_line.stubs(:args).returns(['c'])
457
- expect { lookup.run_command }.to output("--- This is\n...\n").to_stdout
504
+ expect(run_lookup(lookup)).to eql("--- This is\n...")
458
505
  end
459
506
 
460
507
  it "is affected by global variables when '--compile' is used" do
461
508
  lookup.options[:node] = node
462
509
  lookup.options[:compile] = true
463
510
  lookup.command_line.stubs(:args).returns(['c'])
464
- begin
465
- expect { lookup.run_command }.to output("--- This is C from site.pp\n...\n").to_stdout
466
- rescue SystemExit => e
467
- expect(e.status).to eq(0)
468
- end
511
+ expect(run_lookup(lookup)).to eql("--- This is C from site.pp\n...")
469
512
  end
470
513
  end
471
514
 
@@ -475,22 +518,14 @@ Searching for "a"
475
518
  it "works OK in the absense of '--compile'" do
476
519
  lookup.options[:node] = node
477
520
  lookup.command_line.stubs(:args).returns(['c'])
478
- begin
479
- expect { lookup.run_command }.to output("--- This is C from data.pp\n...\n").to_stdout
480
- rescue SystemExit => e
481
- expect(e.status).to eq(0)
482
- end
521
+ expect(run_lookup(lookup)).to eql("--- This is C from data.pp\n...")
483
522
  end
484
523
 
485
524
  it "global scope is affected by global variables when '--compile' is used" do
486
525
  lookup.options[:node] = node
487
526
  lookup.options[:compile] = true
488
527
  lookup.command_line.stubs(:args).returns(['c'])
489
- begin
490
- expect { lookup.run_command }.to output("--- This is C from site.pp\n...\n").to_stdout
491
- rescue SystemExit => e
492
- expect(e.status).to eq(0)
493
- end
528
+ expect(run_lookup(lookup)).to eql("--- This is C from site.pp\n...")
494
529
  end
495
530
  end
496
531
  end