puppet 4.8.2-x86-mingw32 → 4.9.0-x86-mingw32

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

Potentially problematic release.


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

Files changed (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.rb +52 -0
  11. data/lib/puppet/application/face_base.rb +4 -0
  12. data/lib/puppet/application/lookup.rb +4 -2
  13. data/lib/puppet/application/resource.rb +1 -1
  14. data/lib/puppet/data_providers.rb +6 -3
  15. data/lib/puppet/data_providers/data_adapter.rb +6 -0
  16. data/lib/puppet/data_providers/data_function_support.rb +7 -0
  17. data/lib/puppet/data_providers/function_env_data_provider.rb +7 -0
  18. data/lib/puppet/data_providers/function_module_data_provider.rb +6 -0
  19. data/lib/puppet/data_providers/hiera_config.rb +31 -10
  20. data/lib/puppet/data_providers/hiera_env_data_provider.rb +6 -0
  21. data/lib/puppet/data_providers/hiera_interpolate.rb +2 -1
  22. data/lib/puppet/data_providers/hiera_module_data_provider.rb +6 -0
  23. data/lib/puppet/data_providers/hiera_support.rb +6 -0
  24. data/lib/puppet/data_providers/json_data_provider_factory.rb +12 -0
  25. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +12 -0
  26. data/lib/puppet/defaults.rb +25 -4
  27. data/lib/puppet/face/ca.rb +2 -0
  28. data/lib/puppet/face/certificate_request.rb +2 -0
  29. data/lib/puppet/face/certificate_revocation_list.rb +2 -0
  30. data/lib/puppet/face/file.rb +3 -0
  31. data/lib/puppet/face/help.rb +19 -17
  32. data/lib/puppet/face/help/face.erb +3 -0
  33. data/lib/puppet/face/key.rb +1 -0
  34. data/lib/puppet/face/man.rb +4 -2
  35. data/lib/puppet/face/module/generate.rb +1 -1
  36. data/lib/puppet/face/status.rb +2 -0
  37. data/lib/puppet/feature/base.rb +9 -2
  38. data/lib/puppet/feature/hocon.rb +3 -0
  39. data/lib/puppet/file_system.rb +15 -3
  40. data/lib/puppet/file_system/windows.rb +8 -0
  41. data/lib/puppet/forge.rb +6 -6
  42. data/lib/puppet/forge/repository.rb +1 -2
  43. data/lib/puppet/functions/binary_file.rb +4 -10
  44. data/lib/puppet/functions/hiera_array.rb +1 -1
  45. data/lib/puppet/functions/hiera_include.rb +1 -1
  46. data/lib/puppet/functions/hocon_data.rb +24 -0
  47. data/lib/puppet/functions/json_data.rb +18 -0
  48. data/lib/puppet/functions/yaml_data.rb +21 -0
  49. data/lib/puppet/generate/type.rb +1 -1
  50. data/lib/puppet/graph/simple_graph.rb +4 -2
  51. data/lib/puppet/indirector/file_bucket_file/file.rb +10 -2
  52. data/lib/puppet/indirector/request.rb +5 -1
  53. data/lib/puppet/interface.rb +14 -2
  54. data/lib/puppet/interface/face_collection.rb +1 -1
  55. data/lib/puppet/module.rb +14 -2
  56. data/lib/puppet/module_tool.rb +4 -4
  57. data/lib/puppet/module_tool/applications/builder.rb +3 -2
  58. data/lib/puppet/module_tool/applications/installer.rb +14 -14
  59. data/lib/puppet/module_tool/applications/upgrader.rb +13 -13
  60. data/lib/puppet/module_tool/installed_modules.rb +7 -7
  61. data/lib/puppet/module_tool/local_tarball.rb +3 -3
  62. data/lib/puppet/module_tool/metadata.rb +1 -1
  63. data/lib/puppet/network/http/connection.rb +2 -0
  64. data/lib/puppet/network/http/webrick.rb +2 -1
  65. data/lib/puppet/parser/functions/hiera.rb +14 -0
  66. data/lib/puppet/parser/functions/hiera_array.rb +14 -0
  67. data/lib/puppet/parser/functions/hiera_hash.rb +14 -0
  68. data/lib/puppet/parser/functions/hiera_include.rb +14 -0
  69. data/lib/puppet/parser/scope.rb +14 -20
  70. data/lib/puppet/plugins/data_providers.rb +2 -0
  71. data/lib/puppet/plugins/data_providers/data_provider.rb +108 -17
  72. data/lib/puppet/plugins/data_providers/registry.rb +2 -36
  73. data/lib/puppet/pops.rb +6 -9
  74. data/lib/puppet/pops/adaptable.rb +0 -3
  75. data/lib/puppet/pops/binder/producers.rb +3 -3
  76. data/lib/puppet/pops/evaluator/access_operator.rb +4 -4
  77. data/lib/puppet/pops/evaluator/closure.rb +1 -1
  78. data/lib/puppet/pops/evaluator/compare_operator.rb +4 -4
  79. data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
  80. data/lib/puppet/pops/issues.rb +4 -0
  81. data/lib/puppet/pops/label_provider.rb +14 -0
  82. data/lib/puppet/pops/loader/loader_paths.rb +3 -1
  83. data/lib/puppet/pops/loader/module_loaders.rb +21 -7
  84. data/lib/puppet/pops/loader/typed_name.rb +0 -2
  85. data/lib/puppet/pops/loaders.rb +31 -12
  86. data/lib/puppet/pops/lookup.rb +4 -3
  87. data/lib/puppet/pops/lookup/configured_data_provider.rb +87 -0
  88. data/lib/puppet/pops/lookup/context.rb +121 -71
  89. data/lib/puppet/pops/lookup/data_adapter.rb +27 -0
  90. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +55 -0
  91. data/lib/puppet/pops/lookup/data_hash_function_provider.rb +111 -0
  92. data/lib/puppet/pops/lookup/data_provider.rb +102 -0
  93. data/lib/puppet/pops/lookup/environment_data_provider.rb +27 -0
  94. data/lib/puppet/pops/lookup/explainer.rb +122 -82
  95. data/lib/puppet/pops/lookup/function_provider.rb +82 -0
  96. data/lib/puppet/pops/lookup/global_data_provider.rb +49 -0
  97. data/lib/puppet/pops/lookup/hiera_config.rb +601 -0
  98. data/lib/puppet/pops/lookup/interpolation.rb +56 -35
  99. data/lib/puppet/pops/lookup/invocation.rb +179 -101
  100. data/lib/puppet/pops/lookup/location_resolver.rb +72 -0
  101. data/lib/puppet/pops/lookup/lookup_adapter.rb +451 -0
  102. data/lib/puppet/pops/lookup/lookup_key.rb +99 -0
  103. data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +119 -0
  104. data/lib/puppet/pops/lookup/module_data_provider.rb +58 -0
  105. data/lib/puppet/pops/lookup/sub_lookup.rb +8 -4
  106. data/lib/puppet/pops/merge_strategy.rb +120 -39
  107. data/lib/puppet/pops/parser/egrammar.ra +2 -0
  108. data/lib/puppet/pops/parser/eparser.rb +816 -808
  109. data/lib/puppet/pops/parser/locator.rb +3 -3
  110. data/lib/puppet/pops/parser/slurp_support.rb +4 -3
  111. data/lib/puppet/pops/pcore.rb +21 -12
  112. data/lib/puppet/pops/serialization/abstract_reader.rb +17 -7
  113. data/lib/puppet/pops/serialization/abstract_writer.rb +27 -12
  114. data/lib/puppet/pops/serialization/deserializer.rb +17 -4
  115. data/lib/puppet/pops/serialization/extension.rb +37 -8
  116. data/lib/puppet/pops/serialization/object.rb +14 -6
  117. data/lib/puppet/pops/serialization/rgen.rb +2 -1
  118. data/lib/puppet/pops/serialization/serializer.rb +30 -7
  119. data/lib/puppet/pops/types/implementation_registry.rb +1 -1
  120. data/lib/puppet/pops/types/p_object_type.rb +55 -12
  121. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +27 -27
  122. data/lib/puppet/pops/types/p_sem_ver_type.rb +12 -12
  123. data/lib/puppet/pops/types/p_timespan_type.rb +6 -6
  124. data/lib/puppet/pops/types/p_timestamp_type.rb +2 -2
  125. data/lib/puppet/pops/types/p_type_set_type.rb +7 -16
  126. data/lib/puppet/pops/types/recursion_guard.rb +64 -20
  127. data/lib/puppet/pops/types/ruby_generator.rb +10 -0
  128. data/lib/puppet/pops/types/type_calculator.rb +23 -13
  129. data/lib/puppet/pops/types/type_factory.rb +20 -9
  130. data/lib/puppet/pops/types/type_formatter.rb +37 -17
  131. data/lib/puppet/pops/types/type_mismatch_describer.rb +7 -6
  132. data/lib/puppet/pops/types/type_parser.rb +6 -0
  133. data/lib/puppet/pops/types/types.rb +225 -132
  134. data/lib/puppet/pops/validation.rb +1 -1
  135. data/lib/puppet/pops/validation/checker4_0.rb +12 -2
  136. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  137. data/lib/puppet/pops/visitor.rb +4 -3
  138. data/lib/puppet/provider/mcx/mcxcontent.rb +2 -1
  139. data/lib/puppet/provider/nameservice.rb +15 -0
  140. data/lib/puppet/provider/package/appdmg.rb +1 -1
  141. data/lib/puppet/provider/package/dnf.rb +1 -1
  142. data/lib/puppet/provider/package/pkg.rb +1 -1
  143. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  144. data/lib/puppet/provider/package/pkgng.rb +1 -1
  145. data/lib/puppet/provider/package/rpm.rb +2 -2
  146. data/lib/puppet/provider/service/smf.rb +3 -3
  147. data/lib/puppet/provider/service/systemd.rb +5 -1
  148. data/lib/puppet/provider/user/directoryservice.rb +1 -0
  149. data/lib/puppet/provider/user/user_role_add.rb +15 -0
  150. data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
  151. data/lib/puppet/provider/zone/solaris.rb +4 -1
  152. data/lib/puppet/reference/indirection.rb +1 -1
  153. data/lib/puppet/resource.rb +2 -3
  154. data/lib/puppet/resource/catalog.rb +12 -4
  155. data/lib/puppet/resource/type.rb +3 -3
  156. data/lib/puppet/settings.rb +1 -1
  157. data/lib/puppet/settings/config_file.rb +2 -1
  158. data/lib/puppet/settings/directory_setting.rb +6 -0
  159. data/lib/puppet/settings/environment_conf.rb +6 -2
  160. data/lib/puppet/settings/file_or_directory_setting.rb +6 -0
  161. data/lib/puppet/settings/file_setting.rb +10 -0
  162. data/lib/puppet/ssl/certificate_authority.rb +13 -2
  163. data/lib/puppet/ssl/host.rb +23 -1
  164. data/lib/puppet/transaction/additional_resource_generator.rb +7 -0
  165. data/lib/puppet/type/user.rb +16 -3
  166. data/lib/puppet/util.rb +1 -0
  167. data/lib/puppet/util/execution.rb +3 -3
  168. data/lib/puppet/util/filetype.rb +11 -5
  169. data/lib/puppet/util/logging.rb +2 -1
  170. data/lib/puppet/util/network_device/config.rb +1 -1
  171. data/lib/puppet/util/plist.rb +6 -0
  172. data/lib/puppet/util/profiler/aggregate.rb +1 -1
  173. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
  174. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +2 -1
  175. data/lib/puppet/util/windows/adsi.rb +15 -12
  176. data/lib/puppet/vendor/load_semantic_puppet.rb +1 -0
  177. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +2 -1
  178. data/lib/puppet/vendor/require_vendored.rb +0 -1
  179. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +17 -0
  180. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
  181. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph.rb +2 -2
  182. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph_node.rb +2 -2
  183. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +58 -0
  184. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/source.rb +2 -2
  185. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/unsatisfiable_graph.rb +2 -2
  186. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +3 -0
  187. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/locales/config.yaml +21 -0
  188. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version.rb +48 -21
  189. data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version_range.rb +15 -17
  190. data/lib/puppet/version.rb +1 -1
  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 -2607
  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.rb +0 -7
  338. data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +0 -60
  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
@@ -1,4 +1,7 @@
1
1
  <%# encoding: UTF-8%>
2
+ <% if face.deprecated? -%>
3
+ <%= "Warning: 'puppet #{face.name}' is deprecated and will be removed in a future release." %>
4
+ <% end %>
2
5
  <% if face.synopsis -%>
3
6
  USAGE: <%= face.synopsis %>
4
7
 
@@ -12,4 +12,5 @@ Puppet::Indirector::Face.define(:key, '0.0.1') do
12
12
  subcommand directly.
13
13
  EOT
14
14
 
15
+ deprecate
15
16
  end
@@ -76,11 +76,13 @@ Puppet::Face.define(:man, '0.0.1') do
76
76
  if pager then ENV['PAGER'] = pager end
77
77
 
78
78
  args = "--man --manual='Puppet Manual' --organization='Puppet Labs, LLC'"
79
- IO.popen("#{ronn} #{args}", 'w') do |fh| fh.write text end
79
+ # manual pages could contain UTF-8 text
80
+ IO.popen("#{ronn} #{args}", 'w:UTF-8') do |fh| fh.write text end
80
81
 
81
82
  '' # suppress local output, neh?
82
83
  elsif pager then
83
- IO.popen(pager, 'w') do |fh| fh.write text end
84
+ # manual pages could contain UTF-8 text
85
+ IO.popen(pager, 'w:UTF-8') do |fh| fh.write text end
84
86
  ''
85
87
  else
86
88
  text
@@ -236,7 +236,7 @@ module Puppet::ModuleTool::Generate
236
236
  content = block[path.read, binding]
237
237
 
238
238
  target = path.parent + path.basename(".#{type}")
239
- target.open('w') { |f| f.write(content) }
239
+ target.open('w:UTF-8') { |f| f.write(content) }
240
240
  path.unlink
241
241
  end
242
242
  end
@@ -45,4 +45,6 @@ Puppet::Indirector::Face.define(:status, '0.0.1') do
45
45
 
46
46
  $ puppet status find --terminus rest
47
47
  EOT
48
+
49
+ deprecate
48
50
  end
@@ -17,8 +17,15 @@ end
17
17
  Puppet.features.add(:microsoft_windows) do
18
18
  begin
19
19
  # ruby
20
- require 'Win32API' # case matters in this require!
21
- require 'win32ole'
20
+ require 'Win32API' # case matters in this require!
21
+
22
+ # Note: Setting codepage here globally ensures all strings returned via
23
+ # WIN32OLE (Ruby's late-bound COM support) are encoded in Encoding::UTF_8
24
+ #
25
+ # Also, this does not modify the value of WIN32OLE.locale - which defaults
26
+ # to 2048 (at least on US English Windows) and is not listed in the MS
27
+ # locales table, here: https://msdn.microsoft.com/en-us/library/ms912047(v=winembedded.10).aspx
28
+ require 'win32ole' ; WIN32OLE.codepage = WIN32OLE::CP_UTF8
22
29
  # gems
23
30
  require 'win32/process'
24
31
  require 'win32/dir'
@@ -0,0 +1,3 @@
1
+ require 'puppet/util/feature'
2
+
3
+ Puppet.features.add(:hocon, :libs => ['hocon'])
@@ -32,6 +32,15 @@ module Puppet::FileSystem
32
32
 
33
33
  # Opens the given path with given mode, and options and optionally yields it to the given block.
34
34
  #
35
+ # @param path [String, Pathname] the path to the file to operate on
36
+ # @param mode [Integer] The mode to apply to the file if it is created
37
+ # @param options [String] Extra file operation mode information to use
38
+ # This is the standard mechanism Ruby uses in the IO class, and therefore
39
+ # encoding may be specified explicitly as fmode : encoding or fmode : "BOM|UTF-*"
40
+ # for example, a:ASCII or w+:UTF-8
41
+ # @yield The file handle, in the mode given by options, else read-write mode
42
+ # @return [Void]
43
+ #
35
44
  # @api public
36
45
  #
37
46
  def self.open(path, mode, options, &block)
@@ -98,10 +107,13 @@ module Puppet::FileSystem
98
107
  #
99
108
  # @param path [Pathname] the path to the file to operate on
100
109
  # @param mode [Integer] The mode to apply to the file if it is created
101
- # @param options [Integer] Extra file operation mode information to use
102
- # (defaults to read-only mode)
110
+ # @param options [String] Extra file operation mode information to use
111
+ # (defaults to read-only mode 'r')
112
+ # This is the standard mechanism Ruby uses in the IO class, and therefore
113
+ # encoding may be specified explicitly as fmode : encoding or fmode : "BOM|UTF-*"
114
+ # for example, a:ASCII or w+:UTF-8
103
115
  # @param timeout [Integer] Number of seconds to wait for the lock (defaults to 300)
104
- # @yield The file handle, in read-write mode
116
+ # @yield The file handle, in the mode given by options, else read-write mode
105
117
  # @return [Void]
106
118
  # @raise [Timeout::Error] If the timeout is exceeded while waiting to acquire the lock
107
119
  #
@@ -3,6 +3,14 @@ require 'puppet/util/windows'
3
3
 
4
4
  class Puppet::FileSystem::Windows < Puppet::FileSystem::Posix
5
5
 
6
+ def open(path, mode, options, &block)
7
+ # PUP-6959 mode is explicitly ignored until it can be implemented
8
+ # Ruby on Windows uses mode for setting file attributes like read-only and
9
+ # archived, not for setting permissions like POSIX
10
+ raise TypeError.new('mode must be specified as an Integer') if mode && !mode.is_a?(Numeric)
11
+ ::File.open(path, options, nil, &block)
12
+ end
13
+
6
14
  def expand_path(path, dir_string = nil)
7
15
  # ensure `nil` values behave like underlying File.expand_path
8
16
  string_path = ::File.expand_path(path.nil? ? nil : path_string(path), dir_string)
@@ -6,9 +6,9 @@ require 'tempfile'
6
6
  require 'uri'
7
7
  require 'pathname'
8
8
  require 'json'
9
- require 'semantic'
9
+ require 'semantic_puppet'
10
10
 
11
- class Puppet::Forge < Semantic::Dependency::Source
11
+ class Puppet::Forge < SemanticPuppet::Dependency::Source
12
12
  require 'puppet/forge/cache'
13
13
  require 'puppet/forge/repository'
14
14
  require 'puppet/forge/errors'
@@ -83,9 +83,9 @@ class Puppet::Forge < Semantic::Dependency::Source
83
83
  # Fetches {ModuleRelease} entries for each release of the named module.
84
84
  #
85
85
  # @param input [String] the module name to look up
86
- # @return [Array<Semantic::Dependency::ModuleRelease>] a list of releases for
86
+ # @return [Array<SemanticPuppet::Dependency::ModuleRelease>] a list of releases for
87
87
  # the given name
88
- # @see Semantic::Dependency::Source#fetch
88
+ # @see SemanticPuppet::Dependency::Source#fetch
89
89
  def fetch(input)
90
90
  name = input.tr('/', '-')
91
91
  uri = "/v3/releases?module=#{name}"
@@ -114,7 +114,7 @@ class Puppet::Forge < Semantic::Dependency::Source
114
114
  @repository.make_http_request(*args)
115
115
  end
116
116
 
117
- class ModuleRelease < Semantic::Dependency::ModuleRelease
117
+ class ModuleRelease < SemanticPuppet::Dependency::ModuleRelease
118
118
  attr_reader :install_dir, :metadata
119
119
 
120
120
  def initialize(source, data)
@@ -122,7 +122,7 @@ class Puppet::Forge < Semantic::Dependency::Source
122
122
  @metadata = meta = data['metadata']
123
123
 
124
124
  name = meta['name'].tr('/', '-')
125
- version = Semantic::Version.parse(meta['version'])
125
+ version = SemanticPuppet::Version.parse(meta['version'])
126
126
  release = "#{name}@#{version}"
127
127
 
128
128
  if meta['dependencies']
@@ -147,8 +147,7 @@ class Puppet::Forge
147
147
  def user_agent
148
148
  @user_agent ||= [
149
149
  @agent,
150
- "Puppet/#{Puppet.version}",
151
- "Ruby/#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} (#{RUBY_PLATFORM})",
150
+ Puppet[:http_user_agent]
152
151
  ].join(' ').freeze
153
152
  end
154
153
  end
@@ -10,16 +10,10 @@ Puppet::Functions.create_function(:binary_file, Puppet::Functions::InternalFunct
10
10
  end
11
11
 
12
12
  def binary_file(scope, unresolved_path)
13
- path = nil
14
- found = Puppet::Parser::Files.find_file(unresolved_path, scope.compiler.environment)
15
- if found && Puppet::FileSystem.exist?(found)
16
- path = found
17
- end
18
-
19
- if path
20
- Puppet::Pops::Types::PBinaryType::Binary.from_binary_string(Puppet::FileSystem.binread(path))
21
- else
22
- raise Puppet::ParseError, "binary_file(): The given file '#{path}' does not exist"
13
+ path = Puppet::Parser::Files.find_file(unresolved_path, scope.compiler.environment)
14
+ unless path && Puppet::FileSystem.exist?(path)
15
+ raise Puppet::ParseError, "binary_file(): The given file '#{unresolved_path}' does not exist"
23
16
  end
17
+ Puppet::Pops::Types::PBinaryType::Binary.from_binary_string(Puppet::FileSystem.binread(path))
24
18
  end
25
19
  end
@@ -69,6 +69,6 @@ Puppet::Functions.create_function(:hiera_array, Hiera::PuppetFunction) do
69
69
  init_dispatch
70
70
 
71
71
  def merge_type
72
- :array
72
+ :unique
73
73
  end
74
74
  end
@@ -80,7 +80,7 @@ Puppet::Functions.create_function(:hiera_include, Hiera::PuppetFunction) do
80
80
  init_dispatch
81
81
 
82
82
  def merge_type
83
- :array
83
+ :unique
84
84
  end
85
85
 
86
86
  def post_lookup(scope, key, value)
@@ -0,0 +1,24 @@
1
+ # @since 4.9.0
2
+ #
3
+ Puppet::Functions.create_function(:hocon_data) do
4
+ unless Puppet.features.hocon?
5
+ raise Puppet::DataBinding::LookupError, 'Lookup using Hocon data_hash function is not supported without hocon library'
6
+ end
7
+
8
+ require 'hocon'
9
+ require 'hocon/config_error'
10
+
11
+ dispatch :hocon_data do
12
+ param 'Struct[{path=>String[1]}]', :options
13
+ param 'Puppet::LookupContext', :context
14
+ end
15
+
16
+ def hocon_data(options, context)
17
+ path = options['path']
18
+ begin
19
+ Hocon.parse(Puppet::FileSystem.read(path, :encoding => 'utf-8'))
20
+ rescue Hocon::ConfigError => ex
21
+ raise Puppet::DataBinding::LookupError, "Unable to parse (#{path}): #{ex.message}"
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,18 @@
1
+ # @since 4.8.0
2
+ #
3
+ Puppet::Functions.create_function(:json_data) do
4
+ dispatch :json_data do
5
+ param 'Struct[{path=>String[1]}]', :options
6
+ param 'Puppet::LookupContext', :context
7
+ end
8
+
9
+ def json_data(options, context)
10
+ path = options['path']
11
+ begin
12
+ JSON.parse(Puppet::FileSystem.read(path, :encoding => 'utf-8'))
13
+ rescue JSON::ParserError => ex
14
+ # Filename not included in message, so we add it here.
15
+ raise Puppet::DataBinding::LookupError, "Unable to parse (#{path}): #{ex.message}"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+ # @since 4.8.0
2
+ #
3
+ require 'yaml'
4
+
5
+ Puppet::Functions.create_function(:yaml_data) do
6
+ dispatch :yaml_data do
7
+ param 'Struct[{path=>String[1]}]', :options
8
+ param 'Puppet::LookupContext', :context
9
+ end
10
+
11
+ def yaml_data(options, context)
12
+ begin
13
+ data = YAML.load_file(options['path'])
14
+ Puppet::Pops::Lookup::HieraConfig.symkeys_to_string(data.nil? ? {} : data)
15
+ rescue YAML::SyntaxError => ex
16
+ # Psych errors includes the absolute path to the file, so no need to add that
17
+ # to the message
18
+ raise Puppet::DataBinding::LookupError, "Unable to parse #{ex.message}"
19
+ end
20
+ end
21
+ end
@@ -222,7 +222,7 @@ module Puppet
222
222
  effective_output_path = input.effective_output_path(outputdir)
223
223
  Puppet.notice "Generating '#{effective_output_path}' using '#{input.format}' format."
224
224
  FileUtils.mkdir_p(File.dirname(effective_output_path))
225
- File.open(effective_output_path, 'w') do |file|
225
+ Puppet::FileSystem.open(effective_output_path, nil, 'w:UTF-8') do |file|
226
226
  file.write(result)
227
227
  end
228
228
  rescue Exception => e
@@ -258,7 +258,8 @@ class Puppet::Graph::SimpleGraph
258
258
  graph << '}'
259
259
 
260
260
  filename = File.join(Puppet[:graphdir], "cycles.dot")
261
- File.open(filename, "w") { |f| f.puts graph }
261
+ # DOT files are assumed to be UTF-8 by default - http://www.graphviz.org/doc/info/lang.html
262
+ File.open(filename, "w:UTF-8") { |f| f.puts graph }
262
263
  return filename
263
264
  end
264
265
 
@@ -463,7 +464,8 @@ class Puppet::Graph::SimpleGraph
463
464
  return unless Puppet[:graph]
464
465
 
465
466
  file = File.join(Puppet[:graphdir], "#{name}.dot")
466
- File.open(file, "w") { |f|
467
+ # DOT files are assumed to be UTF-8 by default - http://www.graphviz.org/doc/info/lang.html
468
+ File.open(file, "w:UTF-8") { |f|
467
469
  f.puts to_dot("name" => name.to_s.capitalize)
468
470
  }
469
471
  end
@@ -115,7 +115,11 @@ module Puppet::FileBucketFile
115
115
  # @param files_original_path [String]
116
116
  #
117
117
  def matches(paths_file, files_original_path)
118
- Puppet::FileSystem.open(paths_file, 0640, 'a+') do |f|
118
+ # Puppet will have already written the paths_file in the systems encoding
119
+ # given its possible that request.options[:bucket_path] or Puppet[:bucketdir]
120
+ # contained characters in an encoding that are not represented the
121
+ # same way when the bytes are decoded as UTF-8, continue using system encoding
122
+ Puppet::FileSystem.open(paths_file, 0640, 'a+:external') do |f|
119
123
  path_match(f, files_original_path)
120
124
  end
121
125
  end
@@ -138,7 +142,11 @@ module Puppet::FileBucketFile
138
142
  Puppet::FileSystem.dir_mkpath(paths_file)
139
143
  end
140
144
 
141
- Puppet::FileSystem.exclusive_open(paths_file, 0640, 'a+') do |f|
145
+ # Puppet will have already written the paths_file in the systems encoding
146
+ # given its possible that request.options[:bucket_path] or Puppet[:bucketdir]
147
+ # contained characters in an encoding that are not represented the
148
+ # same way when the bytes are decoded as UTF-8, continue using system encoding
149
+ Puppet::FileSystem.exclusive_open(paths_file, 0640, 'a+:external') do |f|
142
150
  if Puppet::FileSystem.exist?(contents_file)
143
151
  verify_identical_file!(contents_file, bucket_file)
144
152
  Puppet::FileSystem.touch(contents_file)
@@ -243,6 +243,8 @@ class Puppet::Indirector::Request
243
243
  def set_uri_key(key)
244
244
  @uri = key
245
245
  begin
246
+ # calling URI.escape for UTF-8 characters will % escape them
247
+ # and the resulting string components of the URI are now ASCII
246
248
  uri = URI.parse(URI.escape(key))
247
249
  rescue => detail
248
250
  raise ArgumentError, "Could not understand URL #{key}: #{detail}", detail.backtrace
@@ -272,6 +274,8 @@ class Puppet::Indirector::Request
272
274
  @protocol = uri.scheme
273
275
  end
274
276
 
275
- @key = URI.unescape(uri.path.sub(/^\//, ''))
277
+ # The unescaped bytes are correct but in ASCII and must be treated
278
+ # as UTF-8 for the sake of performing string comparisons later
279
+ @key = URI.unescape(uri.path.sub(/^\//, '')).force_encoding(Encoding::UTF_8)
276
280
  end
277
281
  end
@@ -149,12 +149,15 @@ class Puppet::Interface
149
149
 
150
150
  # @api private
151
151
  def initialize(name, version, &block)
152
- unless SemVer.valid?(version)
152
+ unless SemanticPuppet::Version.valid?(version)
153
153
  raise ArgumentError, "Cannot create face #{name.inspect} with invalid version number '#{version}'!"
154
154
  end
155
155
 
156
156
  @name = Puppet::Interface::FaceCollection.underscorize(name)
157
- @version = SemVer.new(version)
157
+
158
+ # SemVer is deprecated but in 4.x we must use it here (the attr_reader is public api). The
159
+ # extra boolean argument suppresses the deprecation warning.
160
+ @version = SemVer.new(version, true)
158
161
 
159
162
  # The few bits of documentation we actually demand. The default license
160
163
  # is a favour to our end users; if you happen to get that in a core face
@@ -180,6 +183,15 @@ class Puppet::Interface
180
183
  "Puppet::Face[#{name.inspect}, #{version.inspect}]"
181
184
  end
182
185
 
186
+ # @return [void]
187
+ def deprecate
188
+ @deprecated = true
189
+ end
190
+
191
+ # @return [Boolean]
192
+ def deprecated?
193
+ @deprecated
194
+ end
183
195
  ########################################################################
184
196
  # Action decoration, whee! You are not expected to care about this code,
185
197
  # which exists to support face building and construction. I marked these
@@ -27,7 +27,7 @@ module Puppet::Interface::FaceCollection
27
27
  # ...we need to search for it bound to an o{lder,ther} version. Since
28
28
  # we load all actions when the face is first references, this will be in
29
29
  # memory in the known set of versions of the face.
30
- (@faces[name].keys - [ :current ]).sort.reverse.each do |vers|
30
+ (@faces[name].keys - [ :current ]).sort.reverse_each do |vers|
31
31
  break if action = @faces[name][vers].get_action(action_name)
32
32
  end
33
33
  end
@@ -206,6 +206,17 @@ class Puppet::Module
206
206
  @metadata_file = File.join(path, "metadata.json")
207
207
  end
208
208
 
209
+ def hiera_conf_file
210
+ unless defined?(@hiera_conf_file)
211
+ @hiera_conf_file = path.nil? ? nil : File.join(path, Puppet::Pops::Lookup::HieraConfig::CONFIG_FILE_NAME)
212
+ end
213
+ @hiera_conf_file
214
+ end
215
+
216
+ def has_hiera_conf?
217
+ hiera_conf_file.nil? ? false : Puppet::FileSystem.exist?(hiera_conf_file)
218
+ end
219
+
209
220
  def modulepath
210
221
  File.dirname(path) if path
211
222
  end
@@ -309,8 +320,9 @@ class Puppet::Module
309
320
 
310
321
  if version_string
311
322
  begin
312
- required_version_semver_range = SemVer[version_string]
313
- actual_version_semver = SemVer.new(dep_mod.version)
323
+ # Suppress deprecation warnings from SemVer in 4.9. In 5.0, this will be SemanticPuppet instead
324
+ required_version_semver_range = SemVer[version_string, true]
325
+ actual_version_semver = SemVer.new(dep_mod.version, true)
314
326
  rescue ArgumentError
315
327
  error_details[:reason] = :non_semantic_version
316
328
  unmet_dependencies << error_details
@@ -157,12 +157,12 @@ module Puppet
157
157
  end
158
158
 
159
159
  # Handles parsing of module dependency expressions into proper
160
- # {Semantic::VersionRange}s, including reasonable error handling.
160
+ # {SemanticPuppet::VersionRange}s, including reasonable error handling.
161
161
  #
162
162
  # @param where [String] a description of the thing we're parsing the
163
163
  # dependency expression for
164
164
  # @param dep [Hash] the dependency description to parse
165
- # @return [Array(String, Semantic::VersionRange, String)] a tuple of the
165
+ # @return [Array(String, SemanticPuppet::VersionRange, String)] a tuple of the
166
166
  # dependent module's name, the version range dependency, and the
167
167
  # unparsed range expression.
168
168
  def self.parse_module_dependency(where, dep)
@@ -170,10 +170,10 @@ module Puppet
170
170
  range = dep['version_requirement'] || '>= 0.0.0'
171
171
 
172
172
  begin
173
- parsed_range = Semantic::VersionRange.parse(range)
173
+ parsed_range = SemanticPuppet::VersionRange.parse(range)
174
174
  rescue ArgumentError => e
175
175
  Puppet.debug "Error in #{where} parsing dependency #{dep_name} (#{e.message}); using empty range."
176
- parsed_range = Semantic::VersionRange::EMPTY_RANGE
176
+ parsed_range = SemanticPuppet::VersionRange::EMPTY_RANGE
177
177
  end
178
178
 
179
179
  [ dep_name, parsed_range, range ]