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
@@ -7,7 +7,7 @@
7
7
 
8
8
 
9
9
  module Puppet
10
- PUPPETVERSION = '4.8.2'
10
+ PUPPETVERSION = '4.9.0'
11
11
 
12
12
  ##
13
13
  # version is a public API method intended to always provide a fast and
data/lib/puppet.rb CHANGED
@@ -4,6 +4,8 @@ if RUBY_VERSION < "1.9.3"
4
4
  raise LoadError, "Puppet #{Puppet.version} requires ruby 1.9.3 or greater."
5
5
  end
6
6
 
7
+ Puppet::OLDEST_RECOMMENDED_RUBY_VERSION = '2.1.0'
8
+
7
9
  # see the bottom of the file for further inclusions
8
10
  # Also see the new Vendor support - towards the end
9
11
  #
@@ -19,6 +21,20 @@ require 'puppet/external/pson/common'
19
21
  require 'puppet/external/pson/version'
20
22
  require 'puppet/external/pson/pure'
21
23
 
24
+ # When running within puppetserver, the gettext-setup gem might not be available, so
25
+ # we need to skip initializing i18n functionality and stub out methods normally
26
+ # supplied by gettext-setup. Can be removed in Puppet 5. See PUP-7116.
27
+ begin
28
+ require 'gettext-setup'
29
+ require 'locale'
30
+ Puppet::GETTEXT_AVAILABLE = true
31
+ rescue LoadError
32
+ def _(msg)
33
+ msg
34
+ end
35
+ Puppet::GETTEXT_AVAILABLE = false
36
+ end
37
+
22
38
  #------------------------------------------------------------
23
39
  # the top-level module
24
40
  #
@@ -36,6 +52,36 @@ module Puppet
36
52
  require 'puppet/environments'
37
53
 
38
54
  class << self
55
+ if Puppet::GETTEXT_AVAILABLE
56
+ # e.g. ~/code/puppet/locales. Also when running as a gem.
57
+ local_locale_path = File.absolute_path('../locales', File.dirname(__FILE__))
58
+ # e.g. /opt/puppetlabs/puppet/share/locale
59
+ posix_system_locale_path = File.absolute_path('../../../share/locale', File.dirname(__FILE__))
60
+ # e.g. C:\Program Files\Puppet Labs\Puppet\puppet\share\locale
61
+ win32_system_locale_path = File.absolute_path('../../../../../puppet/share/locale', File.dirname(__FILE__))
62
+
63
+ if File.exist?(local_locale_path)
64
+ locale_path = local_locale_path
65
+ elsif File.exist?(win32_system_locale_path)
66
+ locale_path = win32_system_locale_path
67
+ elsif File.exist?(posix_system_locale_path)
68
+ locale_path = posix_system_locale_path
69
+ else
70
+ # We couldn't load our locale data.
71
+ locale_path = nil
72
+ end
73
+
74
+ if locale_path
75
+ if Gem.loaded_specs['gettext-setup'].version < Gem::Version.new('0.8')
76
+ # Will load translations from PO files only
77
+ GettextSetup.initialize(locale_path)
78
+ else
79
+ GettextSetup.initialize(locale_path, :file_format => :mo)
80
+ end
81
+ FastGettext.locale = GettextSetup.negotiate_locale(Locale.current.language)
82
+ end
83
+ end
84
+
39
85
  include Puppet::Util
40
86
  attr_reader :features
41
87
  end
@@ -115,6 +161,12 @@ module Puppet
115
161
  # Load all of the settings.
116
162
  require 'puppet/defaults'
117
163
 
164
+ # Now that settings are loaded we have the code loaded to be able to issue
165
+ # deprecation warnings. Warn if we're on a deprecated ruby version.
166
+ if RUBY_VERSION < Puppet::OLDEST_RECOMMENDED_RUBY_VERSION
167
+ Puppet.deprecation_warning("Support for ruby version #{RUBY_VERSION} is deprecated and will be removed in a future release. See https://docs.puppet.com/puppet/latest/system_requirements.html#ruby for a list of supported ruby versions.")
168
+ end
169
+
118
170
  # Initialize puppet's settings. This is intended only for use by external tools that are not
119
171
  # built off of the Faces API or the Puppet::Util::Application class. It may also be used
120
172
  # to initialize state so that a Face may be used programatically, rather than as a stand-alone
data/lib/semver.rb CHANGED
@@ -2,6 +2,8 @@ require 'puppet/util/monkey_patches'
2
2
 
3
3
  # We need to subclass Numeric to force range comparisons not to try to iterate over SemVer
4
4
  # and instead use numeric comparisons (eg >, <, >=, <=)
5
+ # @api private
6
+ # @deprecated
5
7
  class SemVer < Numeric
6
8
  include Comparable
7
9
 
@@ -20,17 +22,17 @@ class SemVer < Numeric
20
22
  vstring =~ /-/ ? vstring : vstring + '-'
21
23
  end
22
24
 
23
- def self.[](range)
25
+ def self.[](range, suppress_deprecation_warning = false)
24
26
  range.gsub(/([><=])\s+/, '\1').split(/\b\s+(?!-)/).map do |r|
25
27
  case r
26
28
  when SemVer::VERSION
27
- SemVer.new(pre(r)) .. SemVer.new(r)
29
+ SemVer.new(pre(r), suppress_deprecation_warning) .. SemVer.new(r, suppress_deprecation_warning)
28
30
  when SemVer::SIMPLE_RANGE
29
31
  r += ".0" unless SemVer.valid?(r.gsub(/x/i, '0'))
30
- SemVer.new(r.gsub(/x/i, '0'))...SemVer.new(r.gsub(/(\d+)\.x/i) { "#{$1.to_i + 1}.0" } + '-')
32
+ SemVer.new(r.gsub(/x/i, '0'))...SemVer.new(r.gsub(/(\d+)\.x/i) { "#{$1.to_i + 1}.0" } + '-', suppress_deprecation_warning)
31
33
  when /\s+-\s+/
32
34
  a, b = r.split(/\s+-\s+/)
33
- SemVer.new(pre(a)) .. SemVer.new(b)
35
+ SemVer.new(pre(a)) .. SemVer.new(b, suppress_deprecation_warning)
34
36
  when /^~/
35
37
  ver = r.sub(/~/, '').split('.').map(&:to_i)
36
38
  start = (ver + [0] * (3 - ver.length)).join('.')
@@ -39,13 +41,13 @@ class SemVer < Numeric
39
41
  ver[-1] = ver.last + 1
40
42
 
41
43
  finish = (ver + [0] * (3 - ver.length)).join('.')
42
- SemVer.new(pre(start)) ... SemVer.new(pre(finish))
44
+ SemVer.new(pre(start), suppress_deprecation_warning) ... SemVer.new(pre(finish), suppress_deprecation_warning)
43
45
  when /^>=/
44
46
  ver = r.sub(/^>=/, '')
45
- SemVer.new(pre(ver)) .. SemVer::MAX
47
+ SemVer.new(pre(ver), suppress_deprecation_warning) .. SemVer::MAX
46
48
  when /^<=/
47
49
  ver = r.sub(/^<=/, '')
48
- SemVer::MIN .. SemVer.new(ver)
50
+ SemVer::MIN .. SemVer.new(ver, suppress_deprecation_warning)
49
51
  when /^>/
50
52
  if r =~ /-/
51
53
  ver = [r[1..-1]]
@@ -53,10 +55,10 @@ class SemVer < Numeric
53
55
  ver = r.sub(/^>/, '').split('.').map(&:to_i)
54
56
  ver[2] = ver.last + 1
55
57
  end
56
- SemVer.new(ver.join('.') + '-') .. SemVer::MAX
58
+ SemVer.new(ver.join('.') + '-', suppress_deprecation_warning) .. SemVer::MAX
57
59
  when /^</
58
60
  ver = r.sub(/^</, '')
59
- SemVer::MIN ... SemVer.new(pre(ver))
61
+ SemVer::MIN ... SemVer.new(pre(ver), suppress_deprecation_warning)
60
62
  else
61
63
  (1..1)
62
64
  end
@@ -65,7 +67,12 @@ class SemVer < Numeric
65
67
 
66
68
  attr_reader :major, :minor, :tiny, :special
67
69
 
68
- def initialize(ver)
70
+ def initialize(ver, suppress_deprecation_warning = false)
71
+ unless suppress_deprecation_warning || Puppet[:strict] == :off
72
+ Puppet.warn_once(:deprecation, 'Puppet::SemVer',
73
+ "Use of class Puppet::SemVer is deprecated. SemanticPuppet::Version or SemanticPuppet::VersionRange should be used instead")
74
+ end
75
+
69
76
  unless SemVer.valid?(ver)
70
77
  raise ArgumentError.new("Invalid version string '#{ver}'!")
71
78
  end
@@ -130,10 +137,10 @@ class SemVer < Numeric
130
137
  end
131
138
  alias :to_s :inspect
132
139
 
133
- MIN = SemVer.new('0.0.0-')
140
+ MIN = SemVer.new('0.0.0-', true)
134
141
  MIN.instance_variable_set(:@vstring, 'vMIN')
135
142
 
136
- MAX = SemVer.new('8.0.0')
143
+ MAX = SemVer.new('8.0.0', true)
137
144
  MAX.instance_variable_set(:@major, Float::INFINITY) # => Infinity
138
145
  MAX.instance_variable_set(:@vstring, 'vMAX')
139
146
  end
@@ -0,0 +1,29 @@
1
+ ---
2
+ # This is the project-specific configuration file for setting up
3
+ # fast_gettext for your project.
4
+ gettext:
5
+ # This is used for the name of the .pot and .po files; they will be
6
+ # called <project_name>.pot?
7
+ project_name: 'puppet'
8
+ # This is used in comments in the .pot and .po files to indicate what
9
+ # project the files belong to and should be a little more descriptive than
10
+ # <project_name>
11
+ package_name: Puppet automation framework
12
+ # The locale that the default messages in the .pot file are in
13
+ default_locale: en
14
+ # The address for sending bug reports.
15
+ bugs_address: https://tickets.puppetlabs.com
16
+ # The holder of the copyright.
17
+ copyright_holder: Puppet, Inc.
18
+ # Patterns for +Dir.glob+ used to find all files that might contain
19
+ # translatable content, relative to the project root directory
20
+ source_files:
21
+ - 'lib/**/*.rb'
22
+ # Patterns for +Dir.glob+ used to find all files contained in
23
+ # `source_files` that should be ignored when searching for translatable
24
+ # content, relative to the project root directory
25
+ exclude_files:
26
+ - 'lib/puppet/pops/types/type_formatter.rb'
27
+ # The semantic_puppet gem is temporarily vendored (PUP-7114), and it
28
+ # handles its own translation.
29
+ - 'lib/semantic_puppet/**/*.rb'
@@ -0,0 +1,79 @@
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) 2017 Puppet, Inc.
3
+ # This file is distributed under the same license as the Puppet automation framework package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, 2017.
5
+ #
6
+ #, fuzzy
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: Puppet automation framework 4.8.2-338-g562b302\n"
10
+ "\n"
11
+ "Report-Msgid-Bugs-To: https://tickets.puppetlabs.com\n"
12
+ "POT-Creation-Date: 2017-01-25 09:32-0800\n"
13
+ "PO-Revision-Date: 2017-01-25 09:32-0800\n"
14
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
15
+ "Language-Team: LANGUAGE <LL@li.org>\n"
16
+ "Language: \n"
17
+ "MIME-Version: 1.0\n"
18
+ "Content-Type: text/plain; charset=UTF-8\n"
19
+ "Content-Transfer-Encoding: 8bit\n"
20
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
21
+
22
+ msgid "Apache 2 license; see COPYING"
23
+ msgstr ""
24
+
25
+ msgid "Display Puppet help."
26
+ msgstr ""
27
+
28
+ msgid "Display help about Puppet subcommands and their actions."
29
+ msgstr ""
30
+
31
+ msgid "[<subcommand>] [<action>]"
32
+ msgstr ""
33
+
34
+ msgid "Short help text for the specified subcommand or action."
35
+ msgstr ""
36
+
37
+ msgid ""
38
+ " Get help for an action:\n"
39
+ "\n"
40
+ " $ puppet help\n"
41
+ msgstr ""
42
+
43
+ msgid "--version VERSION"
44
+ msgstr ""
45
+
46
+ msgid "The version of the subcommand for which to show help."
47
+ msgstr ""
48
+
49
+ msgid "Puppet help only takes two (optional) arguments: a subcommand and an action"
50
+ msgstr ""
51
+
52
+ msgid "Version only makes sense when a Faces subcommand is given"
53
+ msgstr ""
54
+
55
+ msgid "Legacy subcommands don't take actions"
56
+ msgstr ""
57
+
58
+ msgid ""
59
+ "Could not load help for the application #{applicationname}.\n"
60
+ "Please check the error logs for more information.\n"
61
+ "\n"
62
+ "Detail: \"#{detail.message}\"\n"
63
+ msgstr ""
64
+
65
+ msgid ""
66
+ "Could not load help for the face #{facename}.\n"
67
+ "Please check the error logs for more information.\n"
68
+ "\n"
69
+ "Detail: \"#{detail.message}\"\n"
70
+ msgstr ""
71
+
72
+ msgid "\"Unable to load action #{actionname} from #{face}\""
73
+ msgstr ""
74
+
75
+ msgid " (Deprecated)"
76
+ msgstr ""
77
+
78
+ msgid "! Subcommand unavailable due to error. Check error logs."
79
+ msgstr ""
@@ -1285,7 +1285,7 @@ Where to retrieve external facts for pluginsync
1285
1285
  What files to ignore when pulling down plugins\.
1286
1286
  .
1287
1287
  .IP "\(bu" 4
1288
- \fIDefault\fR: \.svn CVS \.git
1288
+ \fIDefault\fR: \.svn CVS \.git \.hg
1289
1289
  .
1290
1290
  .IP "" 0
1291
1291
  .
@@ -44,3 +44,5 @@ recursive: '%{r1}'
44
44
  km_qualified: "Value from qualified interpolation OS = %{os.name}"
45
45
 
46
46
  km_multi: "cluster/%{literal('%')}{::cluster}/%{literal('%')}{role}"
47
+
48
+ domain: "-- %{domain} --"
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  lookup_options:
3
- roles::devco::packages:
3
+ two::arg:
4
4
  merge: unique
@@ -0,0 +1,5 @@
1
+ ---
2
+ :version: 4
3
+ :hierarchy:
4
+ - :name: "Other"
5
+ :backend: special
@@ -0,0 +1,9 @@
1
+ Puppet::Bindings.newbindings('backend::default') do
2
+ # In the default bindings for this module
3
+ bind {
4
+ # bind its name to the 'puppet' environment data provider
5
+ name 'special'
6
+ in_multibind "puppet::path_based_data_provider_factories"
7
+ to_instance "PuppetX::Backend::SpecialDataProviderFactory"
8
+ }
9
+ end
@@ -0,0 +1,23 @@
1
+ module PuppetX::Backend
2
+ class SpecialDataProviderFactory < Puppet::Plugins::DataProviders::PathBasedDataProviderFactory
3
+ def create(name, paths, parent_data_provider)
4
+ SpecialDataProvider.new(name, paths)
5
+ end
6
+
7
+ def resolve_paths(datadir, declared_paths, paths, lookup_invocation)
8
+ paths
9
+ end
10
+ end
11
+
12
+ class SpecialDataProvider < Puppet::Plugins::DataProviders::PathBasedDataProvider
13
+ def unchecked_lookup(key, lookup_invocation, merge)
14
+ value = {
15
+ 'backend::test::param_a' => 'module data param_a is 1000',
16
+ 'backend::test::param_b' => 'module data param_b is 2000',
17
+ }[key]
18
+ throw :no_such_key if value.nil?
19
+ value
20
+ end
21
+ end
22
+ end
23
+
@@ -0,0 +1,5 @@
1
+ class backend {
2
+ class test($param_a = 1, $param_b = 2, $param_c = 3) {
3
+ notice("$param_a, $param_b, $param_c")
4
+ }
5
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "example/one",
3
+ "version": "0.0.2",
4
+ "source": "git@github.com/example/example-one.git",
5
+ "dependencies": [],
6
+ "author": "Bob the Builder",
7
+ "license": "Apache-2.0",
8
+ "data_provider": "hiera"
9
+ }
@@ -19,6 +19,7 @@ module PuppetX::Helindbe
19
19
  'test::param_a' => 'env data param_a is 10',
20
20
  'test::param_b' => 'env data param_b is 20',
21
21
  # demo: this overrides a parameter for a class in the dataprovider module
22
+ 'backend::test::param_c' => 'env data param_c is 3000',
22
23
  'dataprovider::test::param_c' => 'env data param_c is 300',
23
24
  }
24
25
  end
@@ -1,5 +1,5 @@
1
1
  class dataprovider {
2
2
  class test($param_a = 1, $param_b = 2, $param_c = 3) {
3
- notify { "$param_a, $param_b, $param_c": }
3
+ notice("$param_a, $param_b, $param_c")
4
4
  }
5
5
  }
@@ -0,0 +1,19 @@
1
+ ---
2
+ abc::a: global_a
3
+ abc::c:
4
+ - global_c
5
+
6
+ abc::e:
7
+ k1: global_e1
8
+
9
+ abc::f:
10
+ k1:
11
+ s1: global_f11
12
+ k2:
13
+ s3: global_f23
14
+
15
+ bca::e:
16
+ k1: global_e1
17
+
18
+ no_provider::e:
19
+ k1: global_e1
@@ -0,0 +1,19 @@
1
+ ---
2
+ abc::a: global_a
3
+ abc::c:
4
+ - global_c
5
+
6
+ abc::e:
7
+ k1: global_e1
8
+
9
+ abc::f:
10
+ k1:
11
+ s1: global_f11
12
+ k2:
13
+ s3: global_f23
14
+
15
+ bca::e:
16
+ k1: global_e1
17
+
18
+ no_provider::e:
19
+ k1: global_e1
@@ -134,6 +134,92 @@ end
134
134
  end
135
135
  end
136
136
 
137
+ context 'from environment with pcore object types' do
138
+ include PuppetSpec::Compiler
139
+
140
+ let!(:envdir) { Puppet[:environmentpath] }
141
+ let(:env_name) { 'spec' }
142
+ let(:dir_structure) {
143
+ {
144
+ 'environment.conf' => <<-CONF,
145
+ rich_data = true
146
+ CONF
147
+ 'modules' => {
148
+ 'mod' => {
149
+ 'types' => {
150
+ 'streetaddress.pp' => <<-PUPPET,
151
+ type Mod::StreetAddress = Object[{
152
+ attributes => {
153
+ 'street' => String,
154
+ 'zipcode' => String,
155
+ 'city' => String,
156
+ }
157
+ }]
158
+ PUPPET
159
+ 'address.pp' => <<-PUPPET,
160
+ type Mod::Address = Object[{
161
+ parent => Mod::StreetAddress,
162
+ attributes => {
163
+ 'state' => String
164
+ }
165
+ }]
166
+ PUPPET
167
+ 'contact.pp' => <<-PUPPET,
168
+ type Mod::Contact = Object[{
169
+ attributes => {
170
+ 'address' => Mod::Address,
171
+ 'email' => String
172
+ }
173
+ }]
174
+ PUPPET
175
+ },
176
+ 'manifests' => {
177
+ 'init.pp' => <<-PUPPET,
178
+ define mod::person(Mod::Contact $contact) {
179
+ notify { $title: }
180
+ notify { $contact.address.street: }
181
+ notify { $contact.address.zipcode: }
182
+ notify { $contact.address.city: }
183
+ notify { $contact.address.state: }
184
+ }
185
+
186
+ class mod {
187
+ mod::person { 'Test Person':
188
+ contact => Mod::Contact(
189
+ Mod::Address('The Street 23', '12345', 'Some City', 'A State'),
190
+ 'test@example.com')
191
+ }
192
+ }
193
+ PUPPET
194
+ }
195
+ }
196
+ }
197
+ }
198
+ }
199
+
200
+ let(:env) { Puppet::Node::Environment.create(env_name.to_sym, [File.join(envdir, env_name, 'modules')]) }
201
+ let(:node) { Puppet::Node.new('test', :environment => env) }
202
+
203
+ before(:each) do
204
+ dir_contained_in(envdir, env_name => dir_structure)
205
+ PuppetSpec::Files.record_tmp(File.join(envdir, env_name))
206
+ end
207
+
208
+ it 'can compile the catalog' do
209
+ compile_to_catalog('include mod', node)
210
+ end
211
+
212
+ it 'can apply the catalog' do
213
+ catalog = compile_to_catalog('include mod', node)
214
+
215
+ Puppet[:environment] = env_name
216
+ apply = Puppet::Application[:apply]
217
+ apply.options[:catalog] = file_containing('manifest', catalog.to_pson)
218
+ expect { apply.run_command; exit(0) }.to exit_with(0)
219
+ expect(@logs.map(&:to_s)).to include('The Street 23')
220
+ end
221
+ end
222
+
137
223
  it "applies a given file even when a directory environment is specified" do
138
224
  manifest = file_containing("manifest.pp", "notice('it was applied')")
139
225
 
@@ -414,8 +500,8 @@ class amod::bad_type {
414
500
  apply.expects(:apply_catalog).with do |catalog|
415
501
  catalog.resource(:notify, 'rx')['message'].is_a?(Regexp)
416
502
  catalog.resource(:notify, 'bin')['message'].is_a?(Puppet::Pops::Types::PBinaryType::Binary)
417
- catalog.resource(:notify, 'ver')['message'].is_a?(Semantic::Version)
418
- catalog.resource(:notify, 'vrange')['message'].is_a?(Semantic::VersionRange)
503
+ catalog.resource(:notify, 'ver')['message'].is_a?(SemanticPuppet::Version)
504
+ catalog.resource(:notify, 'vrange')['message'].is_a?(SemanticPuppet::VersionRange)
419
505
  catalog.resource(:notify, 'tspan')['message'].is_a?(Puppet::Pops::Time::Timespan)
420
506
  catalog.resource(:notify, 'tstamp')['message'].is_a?(Puppet::Pops::Time::Timestamp)
421
507
  end