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,141 +0,0 @@
1
- require 'spec_helper'
2
- require 'semantic/dependency/graph_node'
3
-
4
- describe Semantic::Dependency::GraphNode do
5
- let(:klass) do
6
- Class.new do
7
- include Semantic::Dependency::GraphNode
8
-
9
- attr_accessor :name
10
-
11
- def initialize(name, *satisfying)
12
- @name = name
13
- @satisfying = satisfying
14
- @satisfying.each { |x| add_dependency(x.name) }
15
- end
16
-
17
- # @override
18
- def satisfies_dependency?(node)
19
- @satisfying.include?(node)
20
- end
21
- end
22
- end
23
-
24
- def instance(*args)
25
- name = args.first.name unless args.empty?
26
- klass.new(name || 'unnamed', *args)
27
- end
28
-
29
- context 'dependencies' do
30
- subject { instance() }
31
-
32
- example 'are added by #add_dependency' do
33
- subject.add_dependency('foo')
34
- subject.add_dependency('bar')
35
- subject.add_dependency('baz')
36
- expect(subject.dependency_names).to match_array %w[ foo bar baz ]
37
- end
38
-
39
- example 'are maintained in the #dependencies Hash' do
40
- expect(subject.dependencies).to be_empty
41
- subject.add_dependency('foo')
42
- expect(subject.dependencies).to have_key 'foo'
43
- expect(subject.dependencies).to respond_to :to_a
44
- end
45
- end
46
-
47
- describe '#<<' do
48
- let(:foo) { double('Node', :name => 'foo') }
49
- let(:bar1) { double('Node', :name => 'bar', :'<=>' => 0) }
50
- let(:bar2) { double('Node', :name => 'bar', :'<=>' => 0) }
51
- let(:bar3) { double('Node', :name => 'bar') }
52
- let(:baz) { double('Node', :name => 'baz') }
53
-
54
- subject { instance(foo, bar1, bar2) }
55
-
56
- it 'appends satisfying nodes to the dependencies' do
57
- subject << foo << bar1 << bar2
58
- expect(Array(subject.dependencies['foo'])).to match_array [ foo ]
59
- expect(Array(subject.dependencies['bar'])).to match_array [ bar1, bar2 ]
60
- end
61
-
62
- it 'does not append nodes with unknown names' do
63
- subject << baz
64
- expect(Array(subject.dependencies['baz'])).to be_empty
65
- end
66
-
67
- it 'does not append unsatisfying nodes' do
68
- subject << bar3
69
- expect(Array(subject.dependencies['bar'])).to be_empty
70
- end
71
- end
72
-
73
- describe '#satisfied' do
74
- let(:foo) { double('Node', :name => 'foo') }
75
- let(:bar) { double('Node', :name => 'bar') }
76
-
77
- subject { instance(foo, bar) }
78
-
79
- it 'is unsatisfied when no nodes have been appended' do
80
- expect(subject).to_not be_satisfied
81
- end
82
-
83
- it 'is unsatisfied when any dependencies are missing' do
84
- subject << foo
85
- expect(subject).to_not be_satisfied
86
- end
87
-
88
- it 'is satisfied when all dependencies are fulfilled' do
89
- subject << foo << bar
90
- expect(subject).to be_satisfied
91
- end
92
- end
93
-
94
- describe '#populate_children' do
95
- let(:foo) { double('Node', :name => 'foo') }
96
- let(:bar1) { double('Node', :name => 'bar', :'<=>' => 0) }
97
- let(:bar2) { double('Node', :name => 'bar', :'<=>' => 0) }
98
- let(:baz1) { double('Node', :name => 'baz', :'<=>' => 0) }
99
- let(:baz2) { double('Node', :name => 'baz', :'<=>' => 0) }
100
- let(:quxx) { double('Node', :name => 'quxx') }
101
-
102
- subject do
103
- graph = instance(foo, bar1, bar2, baz1, baz2)
104
- graph << foo << bar1 << bar2 << baz1 << baz2
105
- end
106
-
107
- it 'saves all relevant nodes as its children' do
108
- nodes = [ foo, bar2, baz1, quxx ]
109
- nodes.each do |node|
110
- allow(node).to receive(:populate_children)
111
- end
112
-
113
- subject.populate_children(nodes)
114
-
115
- expected = { 'foo' => foo, 'bar' => bar2, 'baz' => baz1 }
116
- expect(subject.children).to eql expected
117
- end
118
-
119
- it 'accepts a graph solution and populates it across all nodes' do
120
- nodes = [ foo, bar2, baz1 ]
121
- nodes.each do |node|
122
- expect(node).to receive(:populate_children).with(nodes)
123
- end
124
-
125
- subject.populate_children(nodes)
126
- end
127
- end
128
-
129
- describe '#<=>' do
130
- it 'can be compared' do
131
- a = instance(double('Node', :name => 'a'))
132
- b = instance(double('Node', :name => 'b'))
133
-
134
- expect(a).to be < b
135
- expect(b).to be > a
136
- expect([b, a].sort).to eql [a, b]
137
- expect([a, b].sort).to eql [a, b]
138
- end
139
- end
140
-
141
- end
@@ -1,162 +0,0 @@
1
- require 'spec_helper'
2
- require 'semantic/dependency/graph'
3
-
4
- describe Semantic::Dependency::Graph do
5
- Graph = Semantic::Dependency::Graph
6
- GraphNode = Semantic::Dependency::GraphNode
7
- ModuleRelease = Semantic::Dependency::ModuleRelease
8
- Version = Semantic::Version
9
- VersionRange = Semantic::VersionRange
10
-
11
- describe '#initialize' do
12
- it 'can be called without arguments' do
13
- expect { Graph.new }.to_not raise_error
14
- end
15
-
16
- it 'implements the GraphNode protocol' do
17
- expect(Graph.new).to be_a GraphNode
18
- end
19
-
20
- it 'adds constraints for every key in the passed hash' do
21
- graph = Graph.new('foo' => 1, 'bar' => 2, 'baz' => 3)
22
- expect(graph.constraints.keys).to match_array %w[ foo bar baz ]
23
- end
24
-
25
- it 'adds the named dependencies for every key in the passed hash' do
26
- graph = Graph.new('foo' => 1, 'bar' => 2, 'baz' => 3)
27
- expect(graph.dependency_names).to match_array %w[ foo bar baz ]
28
- end
29
- end
30
-
31
- describe '#add_constraint' do
32
- let(:graph) { Graph.new }
33
-
34
- it 'can create a new constraint on a module' do
35
- expect(graph.constraints.keys).to be_empty
36
-
37
- graph.add_constraint('test', 'module-name', 'nil') { }
38
- expect(graph.constraints.keys).to match_array %w[ module-name ]
39
- end
40
-
41
- it 'permits multiple constraints against the same module name' do
42
- expect(graph.constraints.keys).to be_empty
43
-
44
- graph.add_constraint('test', 'module-name', 'nil') { }
45
- graph.add_constraint('test', 'module-name', 'nil') { }
46
-
47
- expect(graph.constraints.keys).to match_array %w[ module-name ]
48
- end
49
- end
50
-
51
- describe '#satisfies_dependency?' do
52
- it 'is not satisfied by modules it does not depend on' do
53
- graph = Graph.new('foo' => VersionRange.parse('1.x'))
54
- release = ModuleRelease.new(nil, 'bar', Version.parse('1.0.0'))
55
-
56
- expect(graph.satisfies_dependency?(release)).to_not be true
57
- end
58
-
59
- it 'is not satisfied by modules that do not fulfill the constraint' do
60
- graph = Graph.new('foo' => VersionRange.parse('1.x'))
61
- release = ModuleRelease.new(nil, 'foo', Version.parse('2.3.1'))
62
-
63
- expect(graph.satisfies_dependency?(release)).to_not be true
64
- end
65
-
66
- it 'is not satisfied by modules that do not fulfill all the constraints' do
67
- graph = Graph.new('foo' => VersionRange.parse('1.x'))
68
- graph.add_constraint('me', 'foo', '1.2.3') do |node|
69
- node.version.to_s == '1.2.3'
70
- end
71
-
72
- release = ModuleRelease.new(nil, 'foo', Version.parse('1.2.1'))
73
-
74
- expect(graph.satisfies_dependency?(release)).to_not be true
75
- end
76
-
77
- it 'is satisfied by modules that do fulfill all the constraints' do
78
- graph = Graph.new('foo' => VersionRange.parse('1.x'))
79
- graph.add_constraint('me', 'foo', '1.2.3') do |node|
80
- node.version.to_s == '1.2.3'
81
- end
82
-
83
- release = ModuleRelease.new(nil, 'foo', Version.parse('1.2.3'))
84
-
85
- expect(graph.satisfies_dependency?(release)).to be true
86
- end
87
- end
88
-
89
- describe '#add_graph_constraint' do
90
- let(:graph) { Graph.new }
91
-
92
- it 'can create a new constraint on a graph' do
93
- expect(graph.constraints.keys).to be_empty
94
-
95
- graph.add_graph_constraint('test') { }
96
- expect(graph.constraints.keys).to match_array [ :graph ]
97
- end
98
-
99
- it 'permits multiple graph constraints' do
100
- expect(graph.constraints.keys).to be_empty
101
-
102
- graph.add_graph_constraint('test') { }
103
- graph.add_graph_constraint('test') { }
104
-
105
- expect(graph.constraints.keys).to match_array [ :graph ]
106
- end
107
- end
108
-
109
- describe '#satisfies_graph?' do
110
- it 'returns false if the solution violates a graph constraint' do
111
- graph = Graph.new
112
- graph.add_graph_constraint('me') do |nodes|
113
- nodes.none? { |node| node.name =~ /z/ }
114
- end
115
-
116
- releases = [
117
- double('Node', :name => 'foo'),
118
- double('Node', :name => 'bar'),
119
- double('Node', :name => 'baz'),
120
- ]
121
-
122
- expect(graph.satisfies_graph?(releases)).to_not be true
123
- end
124
-
125
- it 'returns false if the solution violates any graph constraint' do
126
- graph = Graph.new
127
- graph.add_graph_constraint('me') do |nodes|
128
- nodes.all? { |node| node.name.length < 5 }
129
- end
130
- graph.add_graph_constraint('me') do |nodes|
131
- nodes.none? { |node| node.name =~ /z/ }
132
- end
133
-
134
- releases = [
135
- double('Node', :name => 'foo'),
136
- double('Node', :name => 'bar'),
137
- double('Node', :name => 'bangerang'),
138
- ]
139
-
140
- expect(graph.satisfies_graph?(releases)).to_not be true
141
- end
142
-
143
- it 'returns true if the solution violates no graph constraints' do
144
- graph = Graph.new
145
- graph.add_graph_constraint('me') do |nodes|
146
- nodes.all? { |node| node.name.length < 5 }
147
- end
148
- graph.add_graph_constraint('me') do |nodes|
149
- nodes.none? { |node| node.name =~ /z/ }
150
- end
151
-
152
- releases = [
153
- double('Node', :name => 'foo'),
154
- double('Node', :name => 'bar'),
155
- double('Node', :name => 'boom'),
156
- ]
157
-
158
- expect(graph.satisfies_graph?(releases)).to be true
159
- end
160
- end
161
-
162
- end
@@ -1,143 +0,0 @@
1
- require 'spec_helper'
2
- require 'semantic/dependency/module_release'
3
-
4
- describe Semantic::Dependency::ModuleRelease do
5
- def source
6
- @source ||= Semantic::Dependency::Source.new
7
- end
8
-
9
- def make_release(name, version, deps = {})
10
- source.create_release(name, version, deps)
11
- end
12
-
13
- let(:no_dependencies) do
14
- make_release('module', '1.2.3')
15
- end
16
-
17
- let(:one_dependency) do
18
- make_release('module', '1.2.3', 'foo' => '1.0.0')
19
- end
20
-
21
- let(:three_dependencies) do
22
- dependencies = { 'foo' => '1.0.0', 'bar' => '2.0.0', 'baz' => '3.0.0' }
23
- make_release('module', '1.2.3', dependencies)
24
- end
25
-
26
- describe '#dependency_names' do
27
-
28
- it "lists the names of all the release's dependencies" do
29
- expect(no_dependencies.dependency_names).to match_array %w[]
30
- expect(one_dependency.dependency_names).to match_array %w[foo]
31
- expect(three_dependencies.dependency_names).to match_array %w[foo bar baz]
32
- end
33
-
34
- end
35
-
36
- describe '#to_s' do
37
-
38
- let(:name) { 'foobarbaz' }
39
- let(:version) { '1.2.3' }
40
-
41
- subject { make_release(name, version).to_s }
42
-
43
- it { should =~ /#{name}/ }
44
- it { should =~ /#{version}/ }
45
-
46
- end
47
-
48
- describe '#<<' do
49
-
50
- it 'marks matching dependencies as satisfied' do
51
- one_dependency << make_release('foo', '1.0.0')
52
- expect(one_dependency).to be_satisfied
53
- end
54
-
55
- it 'does not mark mis-matching dependency names as satisfied' do
56
- one_dependency << make_release('WAT', '1.0.0')
57
- expect(one_dependency).to_not be_satisfied
58
- end
59
-
60
- it 'does not mark mis-matching dependency versions as satisfied' do
61
- one_dependency << make_release('foo', '0.0.1')
62
- expect(one_dependency).to_not be_satisfied
63
- end
64
-
65
- end
66
-
67
- describe '#<=>' do
68
-
69
- it 'considers releases with greater version numbers greater' do
70
- expect(make_release('foo', '1.0.0')).to be > make_release('foo', '0.1.0')
71
- end
72
-
73
- it 'considers releases with lesser version numbers lesser' do
74
- expect(make_release('foo', '0.1.0')).to be < make_release('foo', '1.0.0')
75
- end
76
-
77
- it 'orders releases with different names lexographically' do
78
- expect(make_release('bar', '1.0.0')).to be < make_release('foo', '1.0.0')
79
- end
80
-
81
- it 'orders releases by name first' do
82
- expect(make_release('bar', '2.0.0')).to be < make_release('foo', '1.0.0')
83
- end
84
-
85
- end
86
-
87
- describe '#satisfied?' do
88
-
89
- it 'returns true when there are no dependencies to satisfy' do
90
- expect(no_dependencies).to be_satisfied
91
- end
92
-
93
- it 'returns false when no dependencies have been satisified' do
94
- expect(one_dependency).to_not be_satisfied
95
- end
96
-
97
- it 'returns false when not all dependencies have been satisified' do
98
- releases = %w[ 0.9.0 1.0.0 1.0.1 ].map { |ver| make_release('foo', ver) }
99
- three_dependencies << releases
100
-
101
- expect(three_dependencies).to_not be_satisfied
102
- end
103
-
104
- it 'returns false when not all dependency versions have been satisified' do
105
- releases = %w[ 0.9.0 1.0.1 ].map { |ver| make_release('foo', ver) }
106
- one_dependency << releases
107
-
108
- expect(one_dependency).to_not be_satisfied
109
- end
110
-
111
- it 'returns true when all dependencies have been satisified' do
112
- releases = %w[ 0.9.0 1.0.0 1.0.1 ].map { |ver| make_release('foo', ver) }
113
- one_dependency << releases
114
-
115
- expect(one_dependency).to be_satisfied
116
- end
117
-
118
- end
119
-
120
- describe '#satisfies_dependency?' do
121
-
122
- it 'returns false when there are no dependencies to satisfy' do
123
- release = make_release('foo', '1.0.0')
124
- expect(no_dependencies.satisfies_dependency?(release)).to_not be true
125
- end
126
-
127
- it 'returns false when the release does not match the dependency name' do
128
- release = make_release('bar', '1.0.0')
129
- expect(one_dependency.satisfies_dependency?(release)).to_not be true
130
- end
131
-
132
- it 'returns false when the release does not match the dependency version' do
133
- release = make_release('foo', '4.0.0')
134
- expect(one_dependency.satisfies_dependency?(release)).to_not be true
135
- end
136
-
137
- it 'returns true when the release matches the dependency' do
138
- release = make_release('foo', '1.0.0')
139
- expect(one_dependency.satisfies_dependency?(release)).to be true
140
- end
141
-
142
- end
143
- end
@@ -1,5 +0,0 @@
1
- require 'spec_helper'
2
- require 'semantic/dependency/source'
3
-
4
- describe Semantic::Dependency::Source do
5
- end