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
@@ -0,0 +1,155 @@
1
+ require 'spec_helper'
2
+ require 'puppet_spec/files'
3
+ require 'puppet_spec/compiler'
4
+ require 'deep_merge/core'
5
+
6
+ describe 'lookup' do
7
+ include PuppetSpec::Files
8
+
9
+ context 'with an environment' do
10
+ let(:env_name) { 'spec' }
11
+ let(:env_dir) { tmpdir('environments') }
12
+ let(:environment_files) do
13
+ {
14
+ env_name => {
15
+ 'modules' => {},
16
+ 'hiera.yaml' => <<-YAML.unindent,
17
+ ---
18
+ version: 5
19
+ hierarchy:
20
+ - name: "Common"
21
+ data_hash: yaml_data
22
+ path: "common.yaml"
23
+ YAML
24
+ 'data' => {
25
+ 'common.yaml' => <<-YAML.unindent
26
+ ---
27
+ a: value a
28
+ mod_a::a: value mod_a::a (from environment)
29
+ mod_a::hash_a:
30
+ a: value mod_a::hash_a.a (from environment)
31
+ mod_a::hash_b:
32
+ a: value mod_a::hash_b.a (from environment)
33
+ lookup_options:
34
+ mod_a::hash_b:
35
+ merge: hash
36
+ YAML
37
+ }
38
+ },
39
+ 'someother' => {
40
+ }
41
+ }
42
+ end
43
+
44
+ let(:app) { Puppet::Application[:lookup] }
45
+ let(:env) { Puppet::Node::Environment.create(env_name.to_sym, [File.join(populated_env_dir, env_name, 'modules')]) }
46
+ let(:environments) { Puppet::Environments::Directories.new(populated_env_dir, []) }
47
+
48
+ let(:populated_env_dir) do
49
+ dir_contained_in(env_dir, environment_files)
50
+ env_dir
51
+ end
52
+
53
+ def lookup(key, options = {}, explain = false)
54
+ key = [key] unless key.is_a?(Array)
55
+ app.command_line.stubs(:args).returns(key)
56
+ if explain
57
+ app.options[:explain] = true
58
+ app.options[:render_as] = :s
59
+ else
60
+ app.options[:render_as] = :json
61
+ end
62
+ options.each_pair { |k, v| app.options[k] = v }
63
+ capture = StringIO.new
64
+ saved_stdout = $stdout
65
+ begin
66
+ $stdout = capture
67
+ expect { app.run_command }.to exit_with(0)
68
+ ensure
69
+ $stdout = saved_stdout
70
+ end
71
+ out = capture.string.strip
72
+ if explain
73
+ out
74
+ else
75
+ out.empty? ? nil : JSON.parse("[#{out}]")[0]
76
+ end
77
+ end
78
+
79
+ def explain(key, options = {})
80
+ lookup(key, options, true)
81
+ end
82
+
83
+ around(:each) do |example|
84
+ Puppet.override(:environments => environments, :current_environment => env) do
85
+ example.run
86
+ end
87
+ end
88
+
89
+ it 'finds data in the environment' do
90
+ expect(lookup('a')).to eql('value a')
91
+ end
92
+
93
+ context 'configured with the wrong environment' do
94
+ let(:env) { Puppet::Node::Environment.create(env_name.to_sym, [File.join(populated_env_dir, env_name, 'modules')]) }
95
+ it 'does not find data in non-existing environment' do
96
+ Puppet.override(:environments => environments, :current_environment => 'someother') do
97
+ expect(lookup('a', {}, true)).to match(/did not find a value for the name 'a'/)
98
+ end
99
+ end
100
+ end
101
+
102
+ context 'and a module' do
103
+ let(:mod_a_files) do
104
+ {
105
+ 'mod_a' => {
106
+ 'data' => {
107
+ 'common.yaml' => <<-YAML.unindent
108
+ ---
109
+ mod_a::a: value mod_a::a (from mod_a)
110
+ mod_a::b: value mod_a::b (from mod_a)
111
+ mod_a::hash_a:
112
+ a: value mod_a::hash_a.a (from mod_a)
113
+ b: value mod_a::hash_a.b (from mod_a)
114
+ mod_a::hash_b:
115
+ a: value mod_a::hash_b.a (from mod_a)
116
+ b: value mod_a::hash_b.b (from mod_a)
117
+ mod_a::interpolated: "-- %{lookup('mod_a::a')} --"
118
+ mod_a::a_a: "-- %{lookup('mod_a::hash_a.a')} --"
119
+ mod_a::a_b: "-- %{lookup('mod_a::hash_a.b')} --"
120
+ mod_a::b_a: "-- %{lookup('mod_a::hash_b.a')} --"
121
+ mod_a::b_b: "-- %{lookup('mod_a::hash_b.b')} --"
122
+ 'mod_a::a.quoted.key': 'value mod_a::a.quoted.key (from mod_a)'
123
+ YAML
124
+ },
125
+ 'hiera.yaml' => <<-YAML.unindent,
126
+ ---
127
+ version: 5
128
+ hierarchy:
129
+ - name: "Common"
130
+ data_hash: yaml_data
131
+ path: "common.yaml"
132
+ YAML
133
+ }
134
+ }
135
+ end
136
+
137
+ let(:populated_env_dir) do
138
+ dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files }))
139
+ env_dir
140
+ end
141
+
142
+ it 'finds data in the module' do
143
+ expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
144
+ end
145
+
146
+ it 'finds quoted keys in the module' do
147
+ expect(lookup('"mod_a::a.quoted.key"')).to eql('value mod_a::a.quoted.key (from mod_a)')
148
+ end
149
+
150
+ it 'merges hashes from environment and module when merge strategy hash is used' do
151
+ expect(lookup('mod_a::hash_a', :merge => 'hash')).to eql({'a' => 'value mod_a::hash_a.a (from environment)', 'b' => 'value mod_a::hash_a.b (from mod_a)'})
152
+ end
153
+ end
154
+ end
155
+ end
@@ -143,7 +143,7 @@ describe "Data binding" do
143
143
  def configure_hiera_for_one_tier(data)
144
144
  hiera_config_file = tmpfile("hiera.yaml")
145
145
 
146
- File.open(hiera_config_file, 'w') do |f|
146
+ File.open(hiera_config_file, 'w:UTF-8') do |f|
147
147
  f.write("---
148
148
  :yaml:
149
149
  :datadir: #{dir}
@@ -154,7 +154,7 @@ describe "Data binding" do
154
154
  end
155
155
 
156
156
  data.each do | file, contents |
157
- File.open(File.join(dir, "#{file}.yaml"), 'w') do |f|
157
+ File.open(File.join(dir, "#{file}.yaml"), 'w:UTF-8') do |f|
158
158
  f.write(YAML.dump(contents))
159
159
  end
160
160
  end
@@ -165,7 +165,7 @@ describe "Data binding" do
165
165
  def configure_hiera_for_two_tier(data)
166
166
  hiera_config_file = tmpfile("hiera.yaml")
167
167
 
168
- File.open(hiera_config_file, 'w') do |f|
168
+ File.open(hiera_config_file, 'w:UTF-8') do |f|
169
169
  f.write("---
170
170
  :yaml:
171
171
  :datadir: #{dir}
@@ -176,7 +176,7 @@ describe "Data binding" do
176
176
  end
177
177
 
178
178
  data.each do | file, contents |
179
- File.open(File.join(dir, "#{file}.yaml"), 'w') do |f|
179
+ File.open(File.join(dir, "#{file}.yaml"), 'w:UTF-8') do |f|
180
180
  f.write(YAML.dump(contents))
181
181
  end
182
182
  end
@@ -188,7 +188,7 @@ describe "Data binding" do
188
188
  module_dir = File.join(dir, module_name, 'manifests')
189
189
  FileUtils.mkdir_p(module_dir)
190
190
 
191
- File.open(File.join(module_dir, name), 'w') do |f|
191
+ File.open(File.join(module_dir, name), 'w:UTF-8') do |f|
192
192
  f.write(manifest)
193
193
  end
194
194
  end
@@ -235,6 +235,19 @@ describe "Puppet defaults" do
235
235
  it "should be set to hiera by default" do
236
236
  expect(Puppet.settings[:data_binding_terminus]).to eq(:hiera)
237
237
  end
238
+
239
+ it "to be neither 'hiera' nor 'none', a deprecation warning is logged" do
240
+ expect(@logs).to eql([])
241
+ Puppet[:data_binding_terminus] = 'magic'
242
+ expect(@logs[0].to_s).to match(/Setting 'data_binding_terminus' is deprecated/)
243
+ end
244
+
245
+ it "to not log a warning if set to 'none' or 'hiera'" do
246
+ expect(@logs).to eql([])
247
+ Puppet[:data_binding_terminus] = 'none'
248
+ Puppet[:data_binding_terminus] = 'hiera'
249
+ expect(@logs).to eql([])
250
+ end
238
251
  end
239
252
 
240
253
  describe "agent_catalog_run_lockfile" do
@@ -18,11 +18,11 @@ describe "default manifests" do
18
18
  manifestsdir = File.join(testingdir, "manifests")
19
19
  FileUtils.mkdir_p(manifestsdir)
20
20
 
21
- File.open(File.join(manifestsdir, "site.pp"), "w") do |f|
21
+ File.open(File.join(manifestsdir, "site.pp"), "w", :encoding => Encoding::UTF_8) do |f|
22
22
  f.puts("notify { 'ManifestFromRelativeDefault': }")
23
23
  end
24
24
 
25
- File.open(File.join(confdir, "puppet.conf"), "w") do |f|
25
+ File.open(File.join(confdir, "puppet.conf"), "w", :encoding => Encoding::UTF_8) do |f|
26
26
  f.puts("environmentpath=#{environmentpath}")
27
27
  end
28
28
 
@@ -43,14 +43,14 @@ describe "default manifests" do
43
43
  manifestsdir = File.expand_path("manifests", confdir)
44
44
  FileUtils.mkdir_p(manifestsdir)
45
45
 
46
- File.open(File.join(confdir, "puppet.conf"), "w") do |f|
46
+ File.open(File.join(confdir, "puppet.conf"), "w", :encoding => Encoding::UTF_8) do |f|
47
47
  f.puts(<<-EOF)
48
48
  environmentpath=#{environmentpath}
49
49
  default_manifest=#{manifestsdir}
50
50
  EOF
51
51
  end
52
52
 
53
- File.open(File.join(manifestsdir, "site.pp"), "w") do |f|
53
+ File.open(File.join(manifestsdir, "site.pp"), "w", :encoding => Encoding::UTF_8) do |f|
54
54
  f.puts("notify { 'ManifestFromAbsoluteDefaultManifest': }")
55
55
  end
56
56
 
@@ -61,7 +61,7 @@ describe "default manifests" do
61
61
 
62
62
  it "reads manifest from directory environment manifest when environment.conf manifest set" do
63
63
  default_manifestsdir = File.expand_path("manifests", confdir)
64
- File.open(File.join(confdir, "puppet.conf"), "w") do |f|
64
+ File.open(File.join(confdir, "puppet.conf"), "w", :encoding => Encoding::UTF_8) do |f|
65
65
  f.puts(<<-EOF)
66
66
  environmentpath=#{environmentpath}
67
67
  default_manifest=#{default_manifestsdir}
@@ -71,11 +71,11 @@ describe "default manifests" do
71
71
  manifestsdir = File.join(testingdir, "special_manifests")
72
72
  FileUtils.mkdir_p(manifestsdir)
73
73
 
74
- File.open(File.join(manifestsdir, "site.pp"), "w") do |f|
74
+ File.open(File.join(manifestsdir, "site.pp"), "w", :encoding => Encoding::UTF_8) do |f|
75
75
  f.puts("notify { 'ManifestFromEnvironmentConfManifest': }")
76
76
  end
77
77
 
78
- File.open(File.join(testingdir, "environment.conf"), "w") do |f|
78
+ File.open(File.join(testingdir, "environment.conf"), "w", :encoding => Encoding::UTF_8) do |f|
79
79
  f.puts("manifest=./special_manifests")
80
80
  end
81
81
 
@@ -89,21 +89,21 @@ describe "default manifests" do
89
89
  default_manifestsdir = File.expand_path("manifests", confdir)
90
90
  FileUtils.mkdir_p(default_manifestsdir)
91
91
 
92
- File.open(File.join(confdir, "puppet.conf"), "w") do |f|
92
+ File.open(File.join(confdir, "puppet.conf"), "w", :encoding => Encoding::UTF_8) do |f|
93
93
  f.puts(<<-EOF)
94
94
  environmentpath=#{environmentpath}
95
95
  default_manifest=#{default_manifestsdir}
96
96
  EOF
97
97
  end
98
98
 
99
- File.open(File.join(default_manifestsdir, "site.pp"), "w") do |f|
99
+ File.open(File.join(default_manifestsdir, "site.pp"), "w", :encoding => Encoding::UTF_8) do |f|
100
100
  f.puts("notify { 'ManifestFromAbsoluteDefaultManifest': }")
101
101
  end
102
102
 
103
103
  implicit_manifestsdir = File.join(testingdir, "manifests")
104
104
  FileUtils.mkdir_p(implicit_manifestsdir)
105
105
 
106
- File.open(File.join(implicit_manifestsdir, "site.pp"), "w") do |f|
106
+ File.open(File.join(implicit_manifestsdir, "site.pp"), "w", :encoding => Encoding::UTF_8) do |f|
107
107
  f.puts("notify { 'ManifestFromImplicitRelativeEnvironmentManifestDirectory': }")
108
108
  end
109
109
 
@@ -125,7 +125,7 @@ describe "default manifests" do
125
125
  before(:each) do
126
126
  FileUtils.mkdir_p(manifestsdir)
127
127
 
128
- File.open(File.join(confdir, "puppet.conf"), "w") do |f|
128
+ File.open(File.join(confdir, "puppet.conf"), "w", :encoding => Encoding::UTF_8) do |f|
129
129
  f.puts(<<-EOF)
130
130
  environmentpath=#{environmentpath}
131
131
  default_manifest=#{manifestsdir}
@@ -133,7 +133,7 @@ describe "default manifests" do
133
133
  EOF
134
134
  end
135
135
 
136
- File.open(File.join(manifestsdir, "site.pp"), "w") do |f|
136
+ File.open(File.join(manifestsdir, "site.pp"), "w", :encoding => Encoding::UTF_8) do |f|
137
137
  f.puts("notify { 'ManifestFromAbsoluteDefaultManifest': }")
138
138
  end
139
139
  end
@@ -145,7 +145,7 @@ describe "default manifests" do
145
145
  end
146
146
 
147
147
  it "refuses to compile if environment.conf specifies a different manifest" do
148
- File.open(File.join(testingdir, "environment.conf"), "w") do |f|
148
+ File.open(File.join(testingdir, "environment.conf"), "w", :encoding => Encoding::UTF_8) do |f|
149
149
  f.puts("manifest=./special_manifests")
150
150
  end
151
151
 
@@ -155,7 +155,7 @@ describe "default manifests" do
155
155
  end
156
156
 
157
157
  it "reads manifest from default_manifest setting when environment.conf has manifest set if setting equals default_manifest setting" do
158
- File.open(File.join(testingdir, "environment.conf"), "w") do |f|
158
+ File.open(File.join(testingdir, "environment.conf"), "w", :encoding => Encoding::UTF_8) do |f|
159
159
  f.puts("manifest=#{manifestsdir}")
160
160
  end
161
161
 
@@ -165,7 +165,7 @@ describe "default manifests" do
165
165
  end
166
166
 
167
167
  it "logs errors if environment.conf specifies a different manifest" do
168
- File.open(File.join(testingdir, "environment.conf"), "w") do |f|
168
+ File.open(File.join(testingdir, "environment.conf"), "w", :encoding => Encoding::UTF_8) do |f|
169
169
  f.puts("manifest=./special_manifests")
170
170
  end
171
171
 
@@ -177,7 +177,7 @@ describe "default manifests" do
177
177
  end
178
178
 
179
179
  it "raises an error if default_manifest is not absolute" do
180
- File.open(File.join(confdir, "puppet.conf"), "w") do |f|
180
+ File.open(File.join(confdir, "puppet.conf"), "w", :encoding => Encoding::UTF_8) do |f|
181
181
  f.puts(<<-EOF)
182
182
  environmentpath=#{environmentpath}
183
183
  default_manifest=./relative
@@ -14,7 +14,7 @@ describe "setting hooks" do
14
14
  it "accesses correct directory environment settings after initializing a setting with an on_write hook" do
15
15
  expect(Puppet.settings.setting(:certname).call_hook).to eq(:on_write_only)
16
16
 
17
- File.open(File.join(confdir, "puppet.conf"), "w") do |f|
17
+ File.open(File.join(confdir, "puppet.conf"), "w:UTF-8") do |f|
18
18
  f.puts("environmentpath=#{environmentpath}")
19
19
  f.puts("certname=something")
20
20
  end
@@ -7,12 +7,16 @@ describe "Windows UTF8 environment variables", :if => Puppet.features.microsoft_
7
7
  # Do not use before and after hooks in these tests as it may have unintended consequences
8
8
 
9
9
  before(:all) {
10
- @varname = 'test-helper-foo'
10
+ @varname = 'test_helper_spec-test_variable'
11
11
  @rune_utf8 = "\u16A0\u16C7\u16BB\u16EB\u16D2\u16E6\u16A6\u16EB\u16A0\u16B1\u16A9\u16A0\u16A2\u16B1\u16EB\u16A0\u16C1\u16B1\u16AA\u16EB\u16B7\u16D6\u16BB\u16B9\u16E6\u16DA\u16B3\u16A2\u16D7"
12
12
 
13
13
  Puppet::Util::Windows::Process.set_environment_variable(@varname, @rune_utf8)
14
14
  }
15
-
15
+ after(:all) {
16
+ # Need to cleanup this environment variable otherwise it contaminates any subsequent tests
17
+ Puppet::Util::Windows::Process.set_environment_variable(@varname, nil)
18
+ }
19
+
16
20
  it "#after_each_test should preserve UTF8 environment variables" do
17
21
  envhash = Puppet::Util::Windows::Process.get_environment_strings
18
22
  expect(envhash[@varname]).to eq(@rune_utf8)
@@ -266,6 +266,80 @@ describe Puppet::Transaction do
266
266
  expect(Puppet::FileSystem.exist?(newfile)).to be_truthy
267
267
  end
268
268
 
269
+ # Ensure when resources have been generated with eval_generate that event
270
+ # propagation still works when filtering with tags
271
+ context "when filtering with tags" do
272
+ context "when resources are dependent on dynamically generated resources" do
273
+ it "should trigger (only) appropriately tagged dependent resources" do
274
+ source = dir_containing('sourcedir', {'foo' => 'bar'})
275
+ target = tmpdir('targetdir')
276
+ file1 = tmpfile("file1")
277
+ file2 = tmpfile("file2")
278
+
279
+ file = Puppet::Type.type(:file).new(
280
+ :path => target,
281
+ :source => source,
282
+ :ensure => :present,
283
+ :recurse => true,
284
+ :tag => "foo_tag",
285
+ )
286
+
287
+ exec1 = Puppet::Type.type(:exec).new(
288
+ :path => ENV["PATH"],
289
+ :command => touch(file1),
290
+ :refreshonly => true,
291
+ :subscribe => file,
292
+ :tag => "foo_tag",
293
+ )
294
+
295
+ exec2 = Puppet::Type.type(:exec).new(
296
+ :path => ENV["PATH"],
297
+ :command => touch(file2),
298
+ :refreshonly => true,
299
+ :subscribe => file,
300
+ )
301
+
302
+ Puppet[:tags] = "foo_tag"
303
+ catalog = mk_catalog(file, exec1, exec2)
304
+ catalog.apply
305
+ expect(Puppet::FileSystem.exist?(file1)).to be_truthy
306
+ expect(Puppet::FileSystem.exist?(file2)).to be_falsey
307
+ end
308
+
309
+ it "should trigger implicitly tagged dependent resources, ie via type name" do
310
+ file1 = tmpfile("file1")
311
+ file2 = tmpfile("file2")
312
+
313
+ exec1 = Puppet::Type.type(:exec).new(
314
+ :name => "exec1",
315
+ :path => ENV["PATH"],
316
+ :command => touch(file1),
317
+ )
318
+
319
+ exec1.stubs(:eval_generate).returns(
320
+ [ (Puppet::Type.type(:notify).new :name => "eval1_notify")]
321
+ )
322
+
323
+ exec2 = Puppet::Type.type(:exec).new(
324
+ :name => "exec2",
325
+ :path => ENV["PATH"],
326
+ :command => touch(file2),
327
+ :refreshonly => true,
328
+ :subscribe => exec1,
329
+ )
330
+ exec2.stubs(:eval_generate).returns(
331
+ [ (Puppet::Type.type(:notify).new :name => "eval2_notify")]
332
+ )
333
+
334
+ Puppet[:tags] = "exec"
335
+ catalog = mk_catalog(exec1, exec2)
336
+ catalog.apply
337
+ expect(Puppet::FileSystem.exist?(file1)).to be_truthy
338
+ expect(Puppet::FileSystem.exist?(file2)).to be_truthy
339
+ end
340
+ end
341
+ end
342
+
269
343
  describe "skipping resources" do
270
344
  let(:fname) { tmpfile("exec") }
271
345
 
@@ -17,6 +17,14 @@ describe Puppet::Util::Execution do
17
17
  end
18
18
  end
19
19
 
20
+ describe "#execute (non-Windows)", :if => !Puppet.features.microsoft_windows? do
21
+ it "should execute basic shell command" do
22
+ result = Puppet::Util::Execution.execute("ls /tmp", :failonfail => true)
23
+ expect(result.exitstatus).to eq(0)
24
+ expect(result.to_s).to_not be_nil
25
+ end
26
+ end
27
+
20
28
  describe "#execute (Windows)", :if => Puppet.features.microsoft_windows? do
21
29
  let(:utf8text) do
22
30
  # Japanese Lorem Ipsum snippet
@@ -31,7 +31,7 @@ module PuppetSpec
31
31
  if options.nil?
32
32
  expect(release).to be_nil
33
33
  else
34
- from = options.keys.find { |k| k.nil? || k.is_a?(Semantic::Version) }
34
+ from = options.keys.find { |k| k.nil? || k.is_a?(SemanticPuppet::Version) }
35
35
  to = options.delete(from)
36
36
 
37
37
  if to or from
@@ -49,7 +49,7 @@ module PuppetSpec
49
49
  end
50
50
 
51
51
  def v(str)
52
- Semantic::Version.parse(str)
52
+ SemanticPuppet::Version.parse(str)
53
53
  end
54
54
  end
55
55
  end
@@ -1,6 +1,6 @@
1
1
  module PuppetSpec
2
2
  module ModuleTool
3
- class StubSource < Semantic::Dependency::Source
3
+ class StubSource < SemanticPuppet::Dependency::Source
4
4
  def inspect; "Stub Source"; end
5
5
  def host
6
6
  "http://nowhe.re"
@@ -1,5 +1,5 @@
1
1
  class String
2
- def unindent
3
- gsub(/^#{scan(/^\s*/).min_by{ |l| l.length }}/, '')
2
+ def unindent(left_padding = '')
3
+ gsub(/^#{scan(/^\s*/).min_by{ |l| l.length }}/, left_padding)
4
4
  end
5
5
  end
@@ -267,6 +267,22 @@ describe Puppet::Application::FaceBase do
267
267
  app.expects(:render).with(app.arguments.length + 1, ["myname", "myarg"])
268
268
  expect { app.main }.to exit_with(0)
269
269
  end
270
+
271
+ it "should issue a deprecation warning if the face is deprecated" do
272
+ # since app is shared across examples, stub to avoid affecting shared context
273
+ app.face.stubs(:deprecated?).returns(true)
274
+ app.face.expects(:foo).with(*app.arguments)
275
+ Puppet.expects(:deprecation_warning).with(regexp_matches(/'puppet basetest' is deprecated/))
276
+ expect { app.main }.to exit_with(0)
277
+ end
278
+
279
+ it "should not issue a deprecation warning if the face is not deprecated" do
280
+ Puppet.expects(:deprecation_warning).never
281
+ # since app is shared across examples, stub to avoid affecting shared context
282
+ app.face.stubs(:deprecated?).returns(false)
283
+ app.face.expects(:foo).with(*app.arguments)
284
+ expect { app.main }.to exit_with(0)
285
+ end
270
286
  end
271
287
 
272
288
  describe "error reporting" do