puppet 4.4.0 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (745) hide show
  1. data/CONTRIBUTING.md +5 -5
  2. data/Gemfile +2 -2
  3. data/LICENSE +2 -2
  4. data/README.md +5 -0
  5. data/conf/puppet.conf +1 -1
  6. data/ext/project_data.yaml +2 -0
  7. data/ext/redhat/puppet.spec.erb +0 -9
  8. data/ext/upload_facts.rb +1 -1
  9. data/lib/hiera_puppet.rb +6 -14
  10. data/lib/puppet/application/agent.rb +3 -4
  11. data/lib/puppet/application/apply.rb +1 -1
  12. data/lib/puppet/application/ca.rb +1 -0
  13. data/lib/puppet/application/cert.rb +1 -1
  14. data/lib/puppet/application/filebucket.rb +1 -1
  15. data/lib/puppet/application/inspect.rb +2 -2
  16. data/lib/puppet/application/lookup.rb +8 -20
  17. data/lib/puppet/application/master.rb +1 -1
  18. data/lib/puppet/application/resource.rb +1 -5
  19. data/lib/puppet/data_providers/hiera_config.rb +2 -4
  20. data/lib/puppet/data_providers/hiera_interpolate.rb +12 -105
  21. data/lib/puppet/data_providers/json_data_provider_factory.rb +1 -8
  22. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -8
  23. data/lib/puppet/defaults.rb +104 -25
  24. data/lib/puppet/face/config.rb +1 -1
  25. data/lib/puppet/face/help/man.erb +1 -1
  26. data/lib/puppet/file_system/uniquefile.rb +2 -2
  27. data/lib/puppet/file_system/windows.rb +1 -15
  28. data/lib/puppet/functions/assert_type.rb +1 -1
  29. data/lib/puppet/functions/dig.rb +39 -0
  30. data/lib/puppet/functions/hiera_include.rb +2 -2
  31. data/lib/puppet/functions/inline_epp.rb +1 -1
  32. data/lib/puppet/functions/lest.rb +53 -0
  33. data/lib/puppet/functions/lookup.rb +40 -30
  34. data/lib/puppet/functions/new.rb +502 -0
  35. data/lib/puppet/functions/regsubst.rb +11 -10
  36. data/lib/puppet/functions/then.rb +74 -0
  37. data/lib/puppet/functions/type.rb +4 -4
  38. data/lib/puppet/functions/with.rb +1 -1
  39. data/lib/puppet/functions.rb +69 -0
  40. data/lib/puppet/indirector/catalog/compiler.rb +4 -1
  41. data/lib/puppet/indirector/msgpack.rb +1 -1
  42. data/lib/puppet/indirector/resource_type/parser.rb +5 -0
  43. data/lib/puppet/indirector/rest.rb +5 -1
  44. data/lib/puppet/indirector/terminus.rb +4 -4
  45. data/lib/puppet/loaders.rb +2 -0
  46. data/lib/puppet/metatype/manager.rb +19 -2
  47. data/lib/puppet/module.rb +3 -3
  48. data/lib/puppet/module_tool/applications/application.rb +1 -1
  49. data/lib/puppet/module_tool/applications/builder.rb +2 -2
  50. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +6 -2
  51. data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +19 -4
  52. data/lib/puppet/module_tool/skeleton/templates/generator/{tests → examples}/init.pp.erb +1 -1
  53. data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +0 -1
  54. data/lib/puppet/network/auth_config_parser.rb +1 -1
  55. data/lib/puppet/network/http/api/indirected_routes.rb +0 -2
  56. data/lib/puppet/network/http/api/master/v3/environment.rb +6 -2
  57. data/lib/puppet/network/http/rack/rest.rb +10 -1
  58. data/lib/puppet/parser/ast/pops_bridge.rb +20 -3
  59. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +24 -2
  60. data/lib/puppet/parser/e4_parser_adapter.rb +13 -12
  61. data/lib/puppet/parser/environment_compiler.rb +2 -2
  62. data/lib/puppet/parser/functions/hiera_include.rb +2 -2
  63. data/lib/puppet/parser/functions/inline_epp.rb +1 -1
  64. data/lib/puppet/parser/functions/lookup.rb +0 -3
  65. data/lib/puppet/parser/resource.rb +14 -5
  66. data/lib/puppet/parser/scope.rb +18 -15
  67. data/lib/puppet/plugins/data_providers/data_provider.rb +19 -8
  68. data/lib/puppet/pops/adapters.rb +5 -1
  69. data/lib/puppet/pops/evaluator/access_operator.rb +77 -15
  70. data/lib/puppet/pops/evaluator/closure.rb +10 -5
  71. data/lib/puppet/pops/evaluator/compare_operator.rb +34 -4
  72. data/lib/puppet/pops/evaluator/evaluator_impl.rb +75 -22
  73. data/lib/puppet/pops/evaluator/literal_evaluator.rb +7 -6
  74. data/lib/puppet/pops/evaluator/runtime3_converter.rb +13 -1
  75. data/lib/puppet/pops/evaluator/runtime3_support.rb +14 -4
  76. data/lib/puppet/pops/functions/dispatcher.rb +1 -1
  77. data/lib/puppet/pops/issues.rb +18 -2
  78. data/lib/puppet/pops/loader/base_loader.rb +48 -7
  79. data/lib/puppet/pops/loader/dependency_loader.rb +27 -2
  80. data/lib/puppet/pops/loader/loader.rb +12 -0
  81. data/lib/puppet/pops/loader/predefined_loader.rb +29 -0
  82. data/lib/puppet/pops/loader/runtime3_type_loader.rb +57 -0
  83. data/lib/puppet/pops/loader/static_loader.rb +92 -5
  84. data/lib/puppet/pops/loader/type_definition_instantiator.rb +25 -3
  85. data/lib/puppet/pops/loaders.rb +84 -14
  86. data/lib/puppet/pops/lookup/explainer.rb +38 -1
  87. data/lib/puppet/pops/lookup/interpolation.rb +115 -0
  88. data/lib/puppet/pops/lookup/sub_lookup.rb +86 -0
  89. data/lib/puppet/pops/merge_strategy.rb +0 -10
  90. data/lib/puppet/pops/model/ast_transformer.rb +8 -1
  91. data/lib/puppet/pops/model/factory.rb +31 -8
  92. data/lib/puppet/pops/model/model.rb +8 -0
  93. data/lib/puppet/pops/model/model_label_provider.rb +1 -0
  94. data/lib/puppet/pops/model/model_meta.rb +7 -1
  95. data/lib/puppet/pops/model/model_tree_dumper.rb +4 -0
  96. data/lib/puppet/pops/parser/egrammar.ra +24 -7
  97. data/lib/puppet/pops/parser/eparser.rb +863 -798
  98. data/lib/puppet/pops/parser/evaluating_parser.rb +4 -0
  99. data/lib/puppet/pops/parser/locator.rb +8 -4
  100. data/lib/puppet/pops/pcore.rb +30 -0
  101. data/lib/puppet/pops/types/class_loader.rb +2 -4
  102. data/lib/puppet/pops/types/implementation_registry.rb +146 -0
  103. data/lib/puppet/pops/types/iterable.rb +4 -4
  104. data/lib/puppet/pops/types/p_object_type.rb +846 -0
  105. data/lib/puppet/pops/types/p_runtime_type.rb +102 -0
  106. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +164 -0
  107. data/lib/puppet/pops/types/p_sem_ver_type.rb +113 -0
  108. data/lib/puppet/pops/types/puppet_object.rb +21 -0
  109. data/lib/puppet/pops/types/recursion_guard.rb +10 -0
  110. data/lib/puppet/pops/types/ruby_generator.rb +258 -0
  111. data/lib/puppet/pops/types/string_converter.rb +922 -0
  112. data/lib/puppet/pops/types/type_asserter.rb +2 -2
  113. data/lib/puppet/pops/types/type_calculator.rb +30 -6
  114. data/lib/puppet/pops/types/type_conversion_error.rb +15 -0
  115. data/lib/puppet/pops/types/type_factory.rb +49 -16
  116. data/lib/puppet/pops/types/type_formatter.rb +341 -106
  117. data/lib/puppet/pops/types/type_mismatch_describer.rb +132 -41
  118. data/lib/puppet/pops/types/type_parser.rb +205 -197
  119. data/lib/puppet/pops/types/types.rb +722 -202
  120. data/lib/puppet/pops/validation/checker4_0.rb +66 -4
  121. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  122. data/lib/puppet/pops/validation.rb +1 -1
  123. data/lib/puppet/pops/visitor.rb +3 -1
  124. data/lib/puppet/pops.rb +6 -0
  125. data/lib/puppet/property.rb +1 -1
  126. data/lib/puppet/provider/augeas/augeas.rb +1 -1
  127. data/lib/puppet/provider/package/pip.rb +64 -20
  128. data/lib/puppet/provider/package/pip3.rb +2 -0
  129. data/lib/puppet/provider/package/puppet_gem.rb +0 -0
  130. data/lib/puppet/provider/package/rpm.rb +112 -0
  131. data/lib/puppet/provider/package/yum.rb +7 -68
  132. data/lib/puppet/provider/service/daemontools.rb +3 -3
  133. data/lib/puppet/provider/service/init.rb +4 -2
  134. data/lib/puppet/provider/service/runit.rb +3 -3
  135. data/lib/puppet/provider/service/smf.rb +6 -3
  136. data/lib/puppet/provider/service/systemd.rb +59 -73
  137. data/lib/puppet/provider/user/user_role_add.rb +3 -1
  138. data/lib/puppet/reference/providers.rb +2 -3
  139. data/lib/puppet/resource/catalog.rb +34 -30
  140. data/lib/puppet/resource/type_collection.rb +23 -8
  141. data/lib/puppet/resource.rb +54 -37
  142. data/lib/puppet/settings/base_setting.rb +9 -3
  143. data/lib/puppet/settings/symbolic_enum_setting.rb +17 -0
  144. data/lib/puppet/settings.rb +5 -3
  145. data/lib/puppet/ssl/oids.rb +24 -2
  146. data/lib/puppet/test/test_helper.rb +0 -1
  147. data/lib/puppet/transaction.rb +0 -24
  148. data/lib/puppet/type/exec.rb +17 -17
  149. data/lib/puppet/type/file/content.rb +8 -8
  150. data/lib/puppet/type/file/ensure.rb +4 -4
  151. data/lib/puppet/type/file/source.rb +4 -4
  152. data/lib/puppet/type/file/target.rb +2 -2
  153. data/lib/puppet/type/file.rb +15 -5
  154. data/lib/puppet/type/filebucket.rb +1 -1
  155. data/lib/puppet/type/mount.rb +18 -1
  156. data/lib/puppet/type/package.rb +3 -3
  157. data/lib/puppet/type/schedule.rb +5 -5
  158. data/lib/puppet/type/service.rb +15 -0
  159. data/lib/puppet/type/sshkey.rb +5 -3
  160. data/lib/puppet/type/stage.rb +1 -1
  161. data/lib/puppet/type/tidy.rb +3 -3
  162. data/lib/puppet/type/zone.rb +5 -5
  163. data/lib/puppet/type.rb +13 -7
  164. data/lib/puppet/util/feature.rb +1 -1
  165. data/lib/puppet/util/monkey_patches.rb +18 -5
  166. data/lib/puppet/util/network_device/cisco/device.rb +16 -6
  167. data/lib/puppet/util/network_device/cisco/interface.rb +5 -6
  168. data/lib/puppet/util/plist.rb +3 -3
  169. data/lib/puppet/util/windows/file.rb +40 -10
  170. data/lib/puppet/util/windows.rb +1 -0
  171. data/lib/puppet/version.rb +1 -1
  172. data/spec/fixtures/unit/application/environments/production/data/common.yaml +13 -0
  173. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/third_utf8.json +3 -0
  174. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/utf8.yaml +3 -0
  175. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +5 -1
  176. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +2 -2
  177. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +2 -1
  178. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/manifests/init.pp +2 -1
  179. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/data/empty_key.json +1 -0
  180. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/hiera.yaml +5 -0
  181. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/manifests/init.pp +2 -0
  182. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/metadata.json +9 -0
  183. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/data/empty_key.yaml +1 -0
  184. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/hiera.yaml +5 -0
  185. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/manifests/init.pp +2 -0
  186. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/metadata.json +9 -0
  187. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
  188. data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +0 -0
  189. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/type/usee_type.rb +5 -0
  190. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +6 -0
  191. data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +0 -0
  192. data/spec/fixtures/unit/provider/service/smf/svcs.out +4 -3
  193. data/spec/integration/agent/logging_spec.rb +0 -0
  194. data/spec/integration/application/apply_spec.rb +0 -0
  195. data/spec/integration/application/doc_spec.rb +0 -0
  196. data/spec/integration/configurer_spec.rb +0 -0
  197. data/spec/integration/data_binding_spec.rb +0 -34
  198. data/spec/integration/defaults_spec.rb +0 -0
  199. data/spec/integration/faces/ca_spec.rb +0 -0
  200. data/spec/integration/faces/documentation_spec.rb +0 -0
  201. data/spec/integration/file_serving/fileset_spec.rb +0 -0
  202. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -0
  203. data/spec/integration/indirector/catalog/compiler_spec.rb +0 -0
  204. data/spec/integration/indirector/direct_file_server_spec.rb +0 -0
  205. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -0
  206. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -0
  207. data/spec/integration/indirector/node/ldap_spec.rb +0 -0
  208. data/spec/integration/module_tool/tar/mini_spec.rb +27 -27
  209. data/spec/integration/network/formats_spec.rb +0 -0
  210. data/spec/integration/node/environment_spec.rb +0 -0
  211. data/spec/integration/node/facts_spec.rb +0 -0
  212. data/spec/integration/node_spec.rb +0 -0
  213. data/spec/integration/parser/catalog_spec.rb +14 -2
  214. data/spec/integration/parser/collection_spec.rb +0 -0
  215. data/spec/integration/parser/compiler_spec.rb +94 -3
  216. data/spec/integration/parser/functions/require_spec.rb +0 -0
  217. data/spec/integration/parser/parameter_defaults_spec.rb +19 -1
  218. data/spec/integration/parser/resource_expressions_spec.rb +1 -1
  219. data/spec/integration/provider/mailalias/aliases_spec.rb +0 -0
  220. data/spec/integration/provider/mount_spec.rb +0 -0
  221. data/spec/integration/provider/service/init_spec.rb +0 -0
  222. data/spec/integration/provider/ssh_authorized_key_spec.rb +0 -0
  223. data/spec/integration/reference/providers_spec.rb +0 -0
  224. data/spec/integration/reports_spec.rb +0 -0
  225. data/spec/integration/resource/catalog_spec.rb +0 -0
  226. data/spec/integration/resource/type_collection_spec.rb +8 -0
  227. data/spec/integration/ssl/certificate_authority_spec.rb +0 -0
  228. data/spec/integration/ssl/certificate_request_spec.rb +0 -0
  229. data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -0
  230. data/spec/integration/ssl/host_spec.rb +0 -0
  231. data/spec/integration/transaction/report_spec.rb +0 -0
  232. data/spec/integration/transaction_spec.rb +0 -0
  233. data/spec/integration/type/exec_spec.rb +0 -0
  234. data/spec/integration/type/file_spec.rb +0 -0
  235. data/spec/integration/type/package_spec.rb +0 -0
  236. data/spec/integration/type/tidy_spec.rb +0 -0
  237. data/spec/integration/type_spec.rb +0 -0
  238. data/spec/integration/util/autoload_spec.rb +0 -0
  239. data/spec/integration/util/rdoc/parser_spec.rb +0 -0
  240. data/spec/integration/util/settings_spec.rb +26 -0
  241. data/spec/integration/util/windows/registry_spec.rb +0 -0
  242. data/spec/integration/util/windows/security_spec.rb +0 -0
  243. data/spec/integration/util/windows/user_spec.rb +0 -0
  244. data/spec/integration/util_spec.rb +0 -0
  245. data/spec/lib/puppet/face/1.0.0/huzzah.rb +0 -0
  246. data/spec/lib/puppet/face/basetest.rb +0 -0
  247. data/spec/lib/puppet/face/huzzah.rb +0 -0
  248. data/spec/lib/puppet_spec/compiler.rb +11 -4
  249. data/spec/lib/puppet_spec/files.rb +0 -0
  250. data/spec/lib/puppet_spec/fixtures.rb +0 -0
  251. data/spec/lib/puppet_spec/verbose.rb +0 -0
  252. data/spec/shared_behaviours/all_parsedfile_providers.rb +0 -0
  253. data/spec/shared_behaviours/file_server_terminus.rb +0 -0
  254. data/spec/shared_behaviours/file_serving.rb +0 -0
  255. data/spec/shared_behaviours/memory_terminus.rb +0 -0
  256. data/spec/shared_behaviours/path_parameters.rb +0 -0
  257. data/spec/shared_behaviours/things_that_declare_options.rb +0 -0
  258. data/spec/shared_contexts/types_setup.rb +4 -0
  259. data/spec/spec_helper.rb +0 -0
  260. data/spec/unit/agent/locker_spec.rb +0 -0
  261. data/spec/unit/agent_spec.rb +0 -0
  262. data/spec/unit/application/agent_spec.rb +0 -0
  263. data/spec/unit/application/apply_spec.rb +0 -0
  264. data/spec/unit/application/cert_spec.rb +0 -0
  265. data/spec/unit/application/certificate_spec.rb +0 -0
  266. data/spec/unit/application/config_spec.rb +0 -0
  267. data/spec/unit/application/describe_spec.rb +0 -0
  268. data/spec/unit/application/device_spec.rb +0 -0
  269. data/spec/unit/application/doc_spec.rb +0 -0
  270. data/spec/unit/application/face_base_spec.rb +0 -0
  271. data/spec/unit/application/facts_spec.rb +0 -0
  272. data/spec/unit/application/filebucket_spec.rb +0 -0
  273. data/spec/unit/application/indirection_base_spec.rb +0 -0
  274. data/spec/unit/application/inspect_spec.rb +19 -8
  275. data/spec/unit/application/lookup_spec.rb +92 -10
  276. data/spec/unit/application/master_spec.rb +0 -0
  277. data/spec/unit/application/resource_spec.rb +0 -0
  278. data/spec/unit/application_spec.rb +0 -0
  279. data/spec/unit/appmgmt_spec.rb +44 -35
  280. data/spec/unit/capability_spec.rb +33 -53
  281. data/spec/unit/configurer/downloader_factory_spec.rb +0 -0
  282. data/spec/unit/configurer/downloader_spec.rb +0 -0
  283. data/spec/unit/configurer/fact_handler_spec.rb +0 -0
  284. data/spec/unit/configurer/plugin_handler_spec.rb +0 -0
  285. data/spec/unit/configurer_spec.rb +0 -0
  286. data/spec/unit/confine/exists_spec.rb +0 -0
  287. data/spec/unit/confine/false_spec.rb +0 -0
  288. data/spec/unit/confine/feature_spec.rb +0 -0
  289. data/spec/unit/confine/true_spec.rb +0 -0
  290. data/spec/unit/confine/variable_spec.rb +0 -0
  291. data/spec/unit/confine_collection_spec.rb +0 -0
  292. data/spec/unit/confine_spec.rb +0 -0
  293. data/spec/unit/confiner_spec.rb +0 -0
  294. data/spec/unit/daemon_spec.rb +0 -0
  295. data/spec/unit/data_providers/function_data_provider_spec.rb +19 -1
  296. data/spec/unit/data_providers/hiera_data_provider_spec.rb +2 -2
  297. data/spec/unit/defaults_spec.rb +18 -0
  298. data/spec/unit/external/pson_spec.rb +0 -0
  299. data/spec/unit/face/catalog_spec.rb +0 -0
  300. data/spec/unit/face/certificate_spec.rb +0 -0
  301. data/spec/unit/face/config_spec.rb +0 -0
  302. data/spec/unit/face/facts_spec.rb +0 -0
  303. data/spec/unit/face/file_spec.rb +0 -0
  304. data/spec/unit/face/help_spec.rb +0 -0
  305. data/spec/unit/face/node_spec.rb +0 -0
  306. data/spec/unit/face/plugin_spec.rb +0 -0
  307. data/spec/unit/face_spec.rb +0 -0
  308. data/spec/unit/file_bucket/dipper_spec.rb +0 -0
  309. data/spec/unit/file_bucket/file_spec.rb +0 -0
  310. data/spec/unit/file_serving/base_spec.rb +0 -0
  311. data/spec/unit/file_serving/configuration/parser_spec.rb +0 -0
  312. data/spec/unit/file_serving/configuration_spec.rb +0 -0
  313. data/spec/unit/file_serving/content_spec.rb +0 -0
  314. data/spec/unit/file_serving/fileset_spec.rb +0 -0
  315. data/spec/unit/file_serving/metadata_spec.rb +0 -0
  316. data/spec/unit/file_serving/mount/file_spec.rb +0 -0
  317. data/spec/unit/file_serving/mount/modules_spec.rb +0 -0
  318. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +0 -0
  319. data/spec/unit/file_serving/mount/plugins_spec.rb +0 -0
  320. data/spec/unit/file_serving/mount_spec.rb +0 -0
  321. data/spec/unit/file_serving/terminus_helper_spec.rb +0 -0
  322. data/spec/unit/file_serving/terminus_selector_spec.rb +0 -0
  323. data/spec/unit/file_system/uniquefile_spec.rb +20 -0
  324. data/spec/unit/file_system_spec.rb +61 -0
  325. data/spec/unit/functions/assert_type_spec.rb +8 -0
  326. data/spec/unit/functions/defined_spec.rb +0 -0
  327. data/spec/unit/functions/dig_spec.rb +58 -0
  328. data/spec/unit/functions/hiera_spec.rb +0 -0
  329. data/spec/unit/functions/lest_spec.rb +34 -0
  330. data/spec/unit/functions/lookup_spec.rb +109 -3
  331. data/spec/unit/functions/new_spec.rb +543 -0
  332. data/spec/unit/functions/regsubst_spec.rb +8 -0
  333. data/spec/unit/functions/split_spec.rb +0 -0
  334. data/spec/unit/functions/then_spec.rb +40 -0
  335. data/spec/unit/functions/versioncmp_spec.rb +0 -0
  336. data/spec/unit/functions4_spec.rb +78 -10
  337. data/spec/unit/graph/relationship_graph_spec.rb +0 -0
  338. data/spec/unit/graph/simple_graph_spec.rb +0 -0
  339. data/spec/unit/hiera_puppet_spec.rb +49 -8
  340. data/spec/unit/indirector/catalog/compiler_spec.rb +7 -0
  341. data/spec/unit/indirector/catalog/json_spec.rb +0 -0
  342. data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -0
  343. data/spec/unit/indirector/catalog/rest_spec.rb +0 -0
  344. data/spec/unit/indirector/catalog/static_compiler_spec.rb +0 -0
  345. data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -0
  346. data/spec/unit/indirector/catalog/yaml_spec.rb +0 -0
  347. data/spec/unit/indirector/certificate/ca_spec.rb +0 -0
  348. data/spec/unit/indirector/certificate/disabled_ca_spec.rb +0 -0
  349. data/spec/unit/indirector/certificate/file_spec.rb +0 -0
  350. data/spec/unit/indirector/certificate/rest_spec.rb +0 -0
  351. data/spec/unit/indirector/certificate_request/ca_spec.rb +0 -0
  352. data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +0 -0
  353. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -0
  354. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -0
  355. data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +0 -0
  356. data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +0 -0
  357. data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +0 -0
  358. data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +0 -0
  359. data/spec/unit/indirector/certificate_status/file_spec.rb +0 -0
  360. data/spec/unit/indirector/certificate_status/rest_spec.rb +0 -0
  361. data/spec/unit/indirector/code_spec.rb +0 -0
  362. data/spec/unit/indirector/direct_file_server_spec.rb +0 -0
  363. data/spec/unit/indirector/envelope_spec.rb +0 -0
  364. data/spec/unit/indirector/exec_spec.rb +0 -0
  365. data/spec/unit/indirector/face_spec.rb +0 -0
  366. data/spec/unit/indirector/facts/facter_spec.rb +0 -0
  367. data/spec/unit/indirector/facts/network_device_spec.rb +0 -0
  368. data/spec/unit/indirector/facts/store_configs_spec.rb +0 -0
  369. data/spec/unit/indirector/facts/yaml_spec.rb +0 -0
  370. data/spec/unit/indirector/file_bucket_file/file_spec.rb +0 -0
  371. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +0 -0
  372. data/spec/unit/indirector/file_content/file_server_spec.rb +0 -0
  373. data/spec/unit/indirector/file_content/file_spec.rb +0 -0
  374. data/spec/unit/indirector/file_content/rest_spec.rb +0 -0
  375. data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -0
  376. data/spec/unit/indirector/file_metadata/file_spec.rb +0 -0
  377. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -0
  378. data/spec/unit/indirector/file_server_spec.rb +0 -0
  379. data/spec/unit/indirector/indirection_spec.rb +0 -0
  380. data/spec/unit/indirector/json_spec.rb +0 -0
  381. data/spec/unit/indirector/key/ca_spec.rb +0 -0
  382. data/spec/unit/indirector/key/disabled_ca_spec.rb +0 -0
  383. data/spec/unit/indirector/key/file_spec.rb +0 -0
  384. data/spec/unit/indirector/ldap_spec.rb +0 -0
  385. data/spec/unit/indirector/memory_spec.rb +0 -0
  386. data/spec/unit/indirector/msgpack_spec.rb +11 -1
  387. data/spec/unit/indirector/node/exec_spec.rb +0 -0
  388. data/spec/unit/indirector/node/ldap_spec.rb +0 -0
  389. data/spec/unit/indirector/node/memory_spec.rb +0 -0
  390. data/spec/unit/indirector/node/msgpack_spec.rb +0 -0
  391. data/spec/unit/indirector/node/plain_spec.rb +0 -0
  392. data/spec/unit/indirector/node/rest_spec.rb +0 -0
  393. data/spec/unit/indirector/node/store_configs_spec.rb +0 -0
  394. data/spec/unit/indirector/node/yaml_spec.rb +0 -0
  395. data/spec/unit/indirector/plain_spec.rb +0 -0
  396. data/spec/unit/indirector/report/msgpack_spec.rb +0 -0
  397. data/spec/unit/indirector/report/processor_spec.rb +0 -0
  398. data/spec/unit/indirector/report/rest_spec.rb +0 -0
  399. data/spec/unit/indirector/report/yaml_spec.rb +0 -0
  400. data/spec/unit/indirector/request_spec.rb +0 -0
  401. data/spec/unit/indirector/resource/ral_spec.rb +0 -0
  402. data/spec/unit/indirector/resource/store_configs_spec.rb +0 -0
  403. data/spec/unit/indirector/resource_type/parser_spec.rb +5 -0
  404. data/spec/unit/indirector/resource_type/rest_spec.rb +0 -0
  405. data/spec/unit/indirector/rest_spec.rb +12 -0
  406. data/spec/unit/indirector/ssl_file_spec.rb +0 -0
  407. data/spec/unit/indirector/status/rest_spec.rb +0 -0
  408. data/spec/unit/indirector/store_configs_spec.rb +0 -0
  409. data/spec/unit/indirector/terminus_spec.rb +0 -0
  410. data/spec/unit/indirector/yaml_spec.rb +0 -0
  411. data/spec/unit/indirector_spec.rb +0 -0
  412. data/spec/unit/interface/action_builder_spec.rb +0 -0
  413. data/spec/unit/interface/action_manager_spec.rb +0 -0
  414. data/spec/unit/interface/action_spec.rb +0 -0
  415. data/spec/unit/interface/documentation_spec.rb +0 -0
  416. data/spec/unit/interface/face_collection_spec.rb +0 -0
  417. data/spec/unit/interface/option_builder_spec.rb +0 -0
  418. data/spec/unit/interface/option_spec.rb +0 -0
  419. data/spec/unit/interface_spec.rb +0 -0
  420. data/spec/unit/man_spec.rb +0 -0
  421. data/spec/unit/module_spec.rb +30 -6
  422. data/spec/unit/module_tool/applications/builder_spec.rb +23 -3
  423. data/spec/unit/module_tool_spec.rb +0 -0
  424. data/spec/unit/network/auth_config_parser_spec.rb +16 -0
  425. data/spec/unit/network/authconfig_spec.rb +0 -0
  426. data/spec/unit/network/authstore_spec.rb +0 -0
  427. data/spec/unit/network/format_handler_spec.rb +0 -0
  428. data/spec/unit/network/format_spec.rb +0 -0
  429. data/spec/unit/network/formats_spec.rb +0 -0
  430. data/spec/unit/network/http/api/indirected_routes_spec.rb +21 -13
  431. data/spec/unit/network/http/api/master/v3/environment_spec.rb +60 -0
  432. data/spec/unit/network/http/api/master/v3_spec.rb +0 -0
  433. data/spec/unit/network/http/compression_spec.rb +0 -0
  434. data/spec/unit/network/http/connection_spec.rb +0 -0
  435. data/spec/unit/network/http/factory_spec.rb +0 -0
  436. data/spec/unit/network/http/handler_spec.rb +0 -0
  437. data/spec/unit/network/http/nocache_pool_spec.rb +0 -0
  438. data/spec/unit/network/http/pool_spec.rb +0 -0
  439. data/spec/unit/network/http/rack/rest_spec.rb +7 -0
  440. data/spec/unit/network/http/rack_spec.rb +0 -0
  441. data/spec/unit/network/http/session_spec.rb +0 -0
  442. data/spec/unit/network/http/site_spec.rb +0 -0
  443. data/spec/unit/network/http/webrick/rest_spec.rb +0 -0
  444. data/spec/unit/network/http/webrick_spec.rb +0 -0
  445. data/spec/unit/network/http_pool_spec.rb +0 -0
  446. data/spec/unit/network/http_spec.rb +0 -0
  447. data/spec/unit/network/resolver_spec.rb +0 -0
  448. data/spec/unit/network/rights_spec.rb +0 -0
  449. data/spec/unit/network/server_spec.rb +0 -0
  450. data/spec/unit/node/environment_spec.rb +10 -0
  451. data/spec/unit/node/facts_spec.rb +0 -0
  452. data/spec/unit/node_spec.rb +0 -0
  453. data/spec/unit/other/selinux_spec.rb +0 -0
  454. data/spec/unit/parameter/path_spec.rb +0 -0
  455. data/spec/unit/parameter/value_collection_spec.rb +0 -0
  456. data/spec/unit/parameter/value_spec.rb +0 -0
  457. data/spec/unit/parameter_spec.rb +0 -0
  458. data/spec/unit/parser/ast/leaf_spec.rb +0 -0
  459. data/spec/unit/parser/compiler_spec.rb +20 -1
  460. data/spec/unit/parser/files_spec.rb +0 -0
  461. data/spec/unit/parser/functions/create_resources_spec.rb +2 -2
  462. data/spec/unit/parser/functions/defined_spec.rb +0 -0
  463. data/spec/unit/parser/functions/digest_spec.rb +0 -0
  464. data/spec/unit/parser/functions/fail_spec.rb +0 -0
  465. data/spec/unit/parser/functions/file_spec.rb +0 -0
  466. data/spec/unit/parser/functions/fqdn_rand_spec.rb +0 -0
  467. data/spec/unit/parser/functions/generate_spec.rb +0 -0
  468. data/spec/unit/parser/functions/hiera_spec.rb +0 -0
  469. data/spec/unit/parser/functions/include_spec.rb +0 -0
  470. data/spec/unit/parser/functions/inline_template_spec.rb +0 -0
  471. data/spec/unit/parser/functions/realize_spec.rb +0 -0
  472. data/spec/unit/parser/functions/regsubst_spec.rb +0 -0
  473. data/spec/unit/parser/functions/require_spec.rb +0 -0
  474. data/spec/unit/parser/functions/scanf_spec.rb +0 -0
  475. data/spec/unit/parser/functions/shared.rb +1 -1
  476. data/spec/unit/parser/functions/shellquote_spec.rb +0 -0
  477. data/spec/unit/parser/functions/split_spec.rb +0 -0
  478. data/spec/unit/parser/functions/sprintf_spec.rb +0 -0
  479. data/spec/unit/parser/functions/tag_spec.rb +0 -0
  480. data/spec/unit/parser/functions/template_spec.rb +0 -0
  481. data/spec/unit/parser/functions/versioncmp_spec.rb +0 -0
  482. data/spec/unit/parser/functions_spec.rb +0 -0
  483. data/spec/unit/parser/relationship_spec.rb +0 -0
  484. data/spec/unit/parser/resource/param_spec.rb +0 -0
  485. data/spec/unit/parser/resource_spec.rb +8 -1
  486. data/spec/unit/parser/scope_spec.rb +45 -0
  487. data/spec/unit/parser/templatewrapper_spec.rb +0 -0
  488. data/spec/unit/parser/type_loader_spec.rb +0 -0
  489. data/spec/unit/pops/evaluator/access_ops_spec.rb +14 -0
  490. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +13 -5
  491. data/spec/unit/pops/loaders/loaders_spec.rb +8 -8
  492. data/spec/unit/pops/loaders/static_loader_spec.rb +92 -1
  493. data/spec/unit/pops/lookup/interpolation_spec.rb +313 -0
  494. data/spec/unit/pops/parser/lexer2_spec.rb +2 -9
  495. data/spec/unit/pops/parser/parse_application_spec.rb +3 -8
  496. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +19 -0
  497. data/spec/unit/pops/parser/parse_capabilities_spec.rb +3 -10
  498. data/spec/unit/pops/parser/parse_site_spec.rb +19 -10
  499. data/spec/unit/pops/parser/parser_rspec_helper.rb +0 -4
  500. data/spec/unit/pops/types/enumeration_spec.rb +13 -12
  501. data/spec/unit/pops/types/iterable_spec.rb +2 -2
  502. data/spec/unit/pops/types/p_object_type_spec.rb +1060 -0
  503. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +285 -0
  504. data/spec/unit/pops/types/recursion_guard_spec.rb +19 -17
  505. data/spec/unit/pops/types/ruby_generator_spec.rb +261 -0
  506. data/spec/unit/pops/types/string_converter_spec.rb +904 -0
  507. data/spec/unit/pops/types/type_asserter_spec.rb +3 -3
  508. data/spec/unit/pops/types/type_calculator_spec.rb +462 -412
  509. data/spec/unit/pops/types/type_factory_spec.rb +129 -88
  510. data/spec/unit/pops/types/type_formatter_spec.rb +80 -8
  511. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +27 -2
  512. data/spec/unit/pops/types/type_parser_spec.rb +55 -16
  513. data/spec/unit/pops/types/types_spec.rb +320 -0
  514. data/spec/unit/pops/validator/validator_spec.rb +84 -10
  515. data/spec/unit/property/ensure_spec.rb +0 -0
  516. data/spec/unit/property/keyvalue_spec.rb +0 -0
  517. data/spec/unit/property/list_spec.rb +0 -0
  518. data/spec/unit/property/ordered_list_spec.rb +0 -0
  519. data/spec/unit/property_spec.rb +0 -0
  520. data/spec/unit/provider/augeas/augeas_spec.rb +0 -0
  521. data/spec/unit/provider/cisco_spec.rb +0 -0
  522. data/spec/unit/provider/command_spec.rb +0 -0
  523. data/spec/unit/provider/cron/crontab_spec.rb +0 -0
  524. data/spec/unit/provider/exec/posix_spec.rb +0 -0
  525. data/spec/unit/provider/exec/shell_spec.rb +0 -0
  526. data/spec/unit/provider/exec/windows_spec.rb +0 -0
  527. data/spec/unit/provider/exec_spec.rb +0 -0
  528. data/spec/unit/provider/file/posix_spec.rb +0 -0
  529. data/spec/unit/provider/file/windows_spec.rb +0 -0
  530. data/spec/unit/provider/group/groupadd_spec.rb +0 -0
  531. data/spec/unit/provider/group/ldap_spec.rb +0 -0
  532. data/spec/unit/provider/group/pw_spec.rb +0 -0
  533. data/spec/unit/provider/group/windows_adsi_spec.rb +0 -0
  534. data/spec/unit/provider/host/parsed_spec.rb +0 -0
  535. data/spec/unit/provider/interface/cisco_spec.rb +0 -0
  536. data/spec/unit/provider/ldap_spec.rb +0 -0
  537. data/spec/unit/provider/macauthorization_spec.rb +0 -0
  538. data/spec/unit/provider/mcx/mcxcontent_spec.rb +0 -0
  539. data/spec/unit/provider/mount/parsed_spec.rb +0 -0
  540. data/spec/unit/provider/mount_spec.rb +0 -0
  541. data/spec/unit/provider/naginator_spec.rb +0 -0
  542. data/spec/unit/provider/nameservice/directoryservice_spec.rb +0 -0
  543. data/spec/unit/provider/nameservice_spec.rb +0 -0
  544. data/spec/unit/provider/network_device_spec.rb +0 -0
  545. data/spec/unit/provider/package/aix_spec.rb +0 -0
  546. data/spec/unit/provider/package/appdmg_spec.rb +0 -0
  547. data/spec/unit/provider/package/apt_spec.rb +0 -0
  548. data/spec/unit/provider/package/aptitude_spec.rb +0 -0
  549. data/spec/unit/provider/package/aptrpm_spec.rb +0 -0
  550. data/spec/unit/provider/package/dpkg_spec.rb +0 -0
  551. data/spec/unit/provider/package/freebsd_spec.rb +0 -0
  552. data/spec/unit/provider/package/gem_spec.rb +0 -0
  553. data/spec/unit/provider/package/hpux_spec.rb +0 -0
  554. data/spec/unit/provider/package/macports_spec.rb +0 -0
  555. data/spec/unit/provider/package/nim_spec.rb +0 -0
  556. data/spec/unit/provider/package/openbsd_spec.rb +0 -0
  557. data/spec/unit/provider/package/opkg_spec.rb +0 -0
  558. data/spec/unit/provider/package/pacman_spec.rb +0 -0
  559. data/spec/unit/provider/package/pip3_spec.rb +9 -262
  560. data/spec/unit/provider/package/pip_spec.rb +85 -22
  561. data/spec/unit/provider/package/pkg_spec.rb +0 -0
  562. data/spec/unit/provider/package/pkgutil_spec.rb +0 -0
  563. data/spec/unit/provider/package/puppet_gem_spec.rb +0 -0
  564. data/spec/unit/provider/package/rpm_spec.rb +160 -3
  565. data/spec/unit/provider/package/sun_spec.rb +0 -0
  566. data/spec/unit/provider/package/windows/package_spec.rb +0 -0
  567. data/spec/unit/provider/package/windows_spec.rb +0 -0
  568. data/spec/unit/provider/package/yum_spec.rb +23 -134
  569. data/spec/unit/provider/package/zypper_spec.rb +0 -0
  570. data/spec/unit/provider/parsedfile_spec.rb +0 -0
  571. data/spec/unit/provider/selboolean_spec.rb +0 -0
  572. data/spec/unit/provider/selmodule_spec.rb +0 -0
  573. data/spec/unit/provider/service/base_spec.rb +0 -0
  574. data/spec/unit/provider/service/bsd_spec.rb +0 -0
  575. data/spec/unit/provider/service/daemontools_spec.rb +0 -0
  576. data/spec/unit/provider/service/debian_spec.rb +0 -0
  577. data/spec/unit/provider/service/freebsd_spec.rb +0 -0
  578. data/spec/unit/provider/service/gentoo_spec.rb +0 -0
  579. data/spec/unit/provider/service/init_spec.rb +0 -0
  580. data/spec/unit/provider/service/launchd_spec.rb +0 -0
  581. data/spec/unit/provider/service/openbsd_spec.rb +0 -0
  582. data/spec/unit/provider/service/openrc_spec.rb +0 -0
  583. data/spec/unit/provider/service/openwrt_spec.rb +0 -0
  584. data/spec/unit/provider/service/rcng_spec.rb +0 -0
  585. data/spec/unit/provider/service/redhat_spec.rb +0 -0
  586. data/spec/unit/provider/service/runit_spec.rb +0 -0
  587. data/spec/unit/provider/service/smf_spec.rb +14 -2
  588. data/spec/unit/provider/service/src_spec.rb +0 -0
  589. data/spec/unit/provider/service/systemd_spec.rb +34 -42
  590. data/spec/unit/provider/service/upstart_spec.rb +0 -0
  591. data/spec/unit/provider/service/windows_spec.rb +0 -0
  592. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -0
  593. data/spec/unit/provider/sshkey/parsed_spec.rb +0 -0
  594. data/spec/unit/provider/user/directoryservice_spec.rb +0 -0
  595. data/spec/unit/provider/user/hpux_spec.rb +0 -0
  596. data/spec/unit/provider/user/ldap_spec.rb +0 -0
  597. data/spec/unit/provider/user/openbsd_spec.rb +0 -0
  598. data/spec/unit/provider/user/pw_spec.rb +0 -0
  599. data/spec/unit/provider/user/user_role_add_spec.rb +0 -0
  600. data/spec/unit/provider/user/useradd_spec.rb +0 -0
  601. data/spec/unit/provider/user/windows_adsi_spec.rb +0 -0
  602. data/spec/unit/provider/vlan/cisco_spec.rb +0 -0
  603. data/spec/unit/provider/zfs/zfs_spec.rb +0 -0
  604. data/spec/unit/provider/zone/solaris_spec.rb +0 -0
  605. data/spec/unit/provider/zpool/zpool_spec.rb +0 -0
  606. data/spec/unit/provider_spec.rb +0 -0
  607. data/spec/unit/puppet_spec.rb +0 -0
  608. data/spec/unit/relationship_spec.rb +0 -0
  609. data/spec/unit/reports/http_spec.rb +0 -0
  610. data/spec/unit/reports/store_spec.rb +0 -0
  611. data/spec/unit/reports_spec.rb +0 -0
  612. data/spec/unit/resource/capability_finder_spec.rb +10 -2
  613. data/spec/unit/resource/catalog_spec.rb +27 -0
  614. data/spec/unit/resource/status_spec.rb +0 -0
  615. data/spec/unit/resource/type_collection_helper_spec.rb +0 -0
  616. data/spec/unit/resource/type_collection_spec.rb +0 -0
  617. data/spec/unit/resource/type_spec.rb +0 -0
  618. data/spec/unit/resource_spec.rb +0 -0
  619. data/spec/unit/settings/directory_setting_spec.rb +0 -0
  620. data/spec/unit/settings/duration_setting_spec.rb +0 -0
  621. data/spec/unit/settings/file_setting_spec.rb +6 -0
  622. data/spec/unit/settings/path_setting_spec.rb +0 -0
  623. data/spec/unit/settings/priority_setting_spec.rb +0 -0
  624. data/spec/unit/settings_spec.rb +1 -1
  625. data/spec/unit/ssl/base_spec.rb +0 -0
  626. data/spec/unit/ssl/certificate_authority/interface_spec.rb +0 -0
  627. data/spec/unit/ssl/certificate_authority_spec.rb +0 -0
  628. data/spec/unit/ssl/certificate_factory_spec.rb +0 -0
  629. data/spec/unit/ssl/certificate_request_spec.rb +0 -0
  630. data/spec/unit/ssl/certificate_revocation_list_spec.rb +0 -0
  631. data/spec/unit/ssl/certificate_spec.rb +0 -0
  632. data/spec/unit/ssl/configuration_spec.rb +0 -0
  633. data/spec/unit/ssl/host_spec.rb +0 -0
  634. data/spec/unit/ssl/inventory_spec.rb +0 -0
  635. data/spec/unit/ssl/key_spec.rb +0 -0
  636. data/spec/unit/status_spec.rb +0 -0
  637. data/spec/unit/transaction/additional_resource_generator_spec.rb +80 -65
  638. data/spec/unit/transaction/event_manager_spec.rb +0 -0
  639. data/spec/unit/transaction/event_spec.rb +0 -0
  640. data/spec/unit/transaction/report_spec.rb +0 -0
  641. data/spec/unit/transaction/resource_harness_spec.rb +0 -0
  642. data/spec/unit/transaction_spec.rb +0 -0
  643. data/spec/unit/type/augeas_spec.rb +0 -0
  644. data/spec/unit/type/component_spec.rb +0 -0
  645. data/spec/unit/type/computer_spec.rb +0 -0
  646. data/spec/unit/type/cron_spec.rb +0 -0
  647. data/spec/unit/type/exec_spec.rb +0 -0
  648. data/spec/unit/type/file/checksum_spec.rb +0 -0
  649. data/spec/unit/type/file/checksum_value_spec.rb +0 -0
  650. data/spec/unit/type/file/content_spec.rb +0 -0
  651. data/spec/unit/type/file/ctime_spec.rb +0 -0
  652. data/spec/unit/type/file/ensure_spec.rb +0 -0
  653. data/spec/unit/type/file/group_spec.rb +0 -0
  654. data/spec/unit/type/file/mode_spec.rb +0 -0
  655. data/spec/unit/type/file/mtime_spec.rb +0 -0
  656. data/spec/unit/type/file/owner_spec.rb +0 -0
  657. data/spec/unit/type/file/selinux_spec.rb +0 -0
  658. data/spec/unit/type/file/source_spec.rb +0 -0
  659. data/spec/unit/type/file/type_spec.rb +0 -0
  660. data/spec/unit/type/file_spec.rb +0 -0
  661. data/spec/unit/type/filebucket_spec.rb +0 -0
  662. data/spec/unit/type/group_spec.rb +0 -0
  663. data/spec/unit/type/host_spec.rb +0 -0
  664. data/spec/unit/type/interface_spec.rb +0 -0
  665. data/spec/unit/type/k5login_spec.rb +0 -0
  666. data/spec/unit/type/macauthorization_spec.rb +0 -0
  667. data/spec/unit/type/mailalias_spec.rb +0 -0
  668. data/spec/unit/type/maillist_spec.rb +0 -0
  669. data/spec/unit/type/mcx_spec.rb +0 -0
  670. data/spec/unit/type/mount_spec.rb +51 -10
  671. data/spec/unit/type/nagios_spec.rb +0 -0
  672. data/spec/unit/type/noop_metaparam_spec.rb +0 -0
  673. data/spec/unit/type/package/package_settings_spec.rb +0 -0
  674. data/spec/unit/type/package_spec.rb +0 -0
  675. data/spec/unit/type/resources_spec.rb +0 -0
  676. data/spec/unit/type/schedule_spec.rb +0 -0
  677. data/spec/unit/type/selboolean_spec.rb +0 -0
  678. data/spec/unit/type/selmodule_spec.rb +0 -0
  679. data/spec/unit/type/service_spec.rb +16 -0
  680. data/spec/unit/type/ssh_authorized_key_spec.rb +0 -0
  681. data/spec/unit/type/sshkey_spec.rb +0 -0
  682. data/spec/unit/type/stage_spec.rb +0 -0
  683. data/spec/unit/type/tidy_spec.rb +0 -0
  684. data/spec/unit/type/user_spec.rb +0 -0
  685. data/spec/unit/type/vlan_spec.rb +0 -0
  686. data/spec/unit/type/whit_spec.rb +0 -0
  687. data/spec/unit/type/yumrepo_spec.rb +0 -0
  688. data/spec/unit/type/zfs_spec.rb +0 -0
  689. data/spec/unit/type/zone_spec.rb +0 -0
  690. data/spec/unit/type/zpool_spec.rb +0 -0
  691. data/spec/unit/type_spec.rb +14 -0
  692. data/spec/unit/util/autoload_spec.rb +0 -0
  693. data/spec/unit/util/backups_spec.rb +0 -0
  694. data/spec/unit/util/checksums_spec.rb +0 -0
  695. data/spec/unit/util/colors_spec.rb +0 -0
  696. data/spec/unit/util/command_line_spec.rb +0 -0
  697. data/spec/unit/util/constant_inflector_spec.rb +0 -0
  698. data/spec/unit/util/diff_spec.rb +0 -0
  699. data/spec/unit/util/errors_spec.rb +0 -0
  700. data/spec/unit/util/execution_spec.rb +0 -0
  701. data/spec/unit/util/execution_stub_spec.rb +0 -0
  702. data/spec/unit/util/feature_spec.rb +1 -1
  703. data/spec/unit/util/filetype_spec.rb +0 -0
  704. data/spec/unit/util/ldap/connection_spec.rb +0 -0
  705. data/spec/unit/util/ldap/generator_spec.rb +0 -0
  706. data/spec/unit/util/ldap/manager_spec.rb +0 -0
  707. data/spec/unit/util/log/destinations_spec.rb +0 -0
  708. data/spec/unit/util/log_spec.rb +0 -0
  709. data/spec/unit/util/logging_spec.rb +0 -0
  710. data/spec/unit/util/metric_spec.rb +0 -0
  711. data/spec/unit/util/monkey_patches_spec.rb +79 -3
  712. data/spec/unit/util/nagios_maker_spec.rb +0 -0
  713. data/spec/unit/util/network_device/cisco/device_spec.rb +1 -1
  714. data/spec/unit/util/network_device/cisco/facts_spec.rb +0 -0
  715. data/spec/unit/util/network_device/cisco/interface_spec.rb +0 -0
  716. data/spec/unit/util/network_device/config_spec.rb +0 -0
  717. data/spec/unit/util/network_device/ipcalc_spec.rb +0 -0
  718. data/spec/unit/util/network_device/transport/base_spec.rb +0 -0
  719. data/spec/unit/util/network_device/transport/ssh_spec.rb +0 -0
  720. data/spec/unit/util/network_device/transport/telnet_spec.rb +0 -0
  721. data/spec/unit/util/package_spec.rb +0 -0
  722. data/spec/unit/util/posix_spec.rb +0 -0
  723. data/spec/unit/util/rdoc_spec.rb +0 -0
  724. data/spec/unit/util/resource_template_spec.rb +0 -0
  725. data/spec/unit/util/retry_action_spec.rb +0 -0
  726. data/spec/unit/util/run_mode_spec.rb +0 -0
  727. data/spec/unit/util/selinux_spec.rb +0 -0
  728. data/spec/unit/util/storage_spec.rb +0 -0
  729. data/spec/unit/util/suidmanager_spec.rb +0 -0
  730. data/spec/unit/util/symbolic_file_mode_spec.rb +0 -0
  731. data/spec/unit/util/tagging_spec.rb +0 -0
  732. data/spec/unit/util/user_attr_spec.rb +0 -0
  733. data/spec/unit/util/warnings_spec.rb +0 -0
  734. data/spec/unit/util/windows/adsi_spec.rb +0 -0
  735. data/spec/unit/util/windows/file_spec.rb +34 -0
  736. data/spec/unit/util/windows/root_certs_spec.rb +0 -0
  737. data/spec/unit/util/windows/sid_spec.rb +0 -0
  738. data/spec/unit/util_spec.rb +0 -0
  739. data/spec/watchr.rb +0 -0
  740. metadata +3402 -3337
  741. checksums.yaml +0 -7
  742. data/ext/puppet-nm-dispatcher +0 -13
  743. data/lib/puppet/pops/types/types_meta.rb +0 -0
  744. data/spec/integration/provider/package_spec.rb +0 -35
  745. data/spec/unit/data_providers/hiera_interpolation_spec.rb +0 -57
@@ -1,34 +1,33 @@
1
1
  #! /usr/bin/env ruby
2
2
  require 'spec_helper'
3
3
  require 'puppet_spec/compiler'
4
- require_relative 'pops/parser/parser_rspec_helper'
5
4
  require 'puppet/parser/environment_compiler'
6
5
 
7
6
  describe "Application instantiation" do
8
7
  include PuppetSpec::Compiler
9
- # We pull this in because we need access to with_app_management; and
10
- # since that has to root around in the guts of the Pops parser, there's
11
- # no really elegant way to do this
12
- include ParserRspecHelper
13
8
 
14
- def compile_to_env_catalog(string)
9
+ let(:env) { Puppet::Node::Environment.create(:testing, []) }
10
+ let(:node) { Puppet::Node.new('test', :environment => env) }
11
+ let(:loaders) { Puppet::Pops::Loaders.new(env) }
12
+
13
+ def compile_to_env_catalog(string, code_id=nil)
15
14
  Puppet[:code] = string
16
- env = Puppet::Node::Environment.create("test", ["/dev/null"])
17
- Puppet::Parser::EnvironmentCompiler.compile(env).filter { |r| r.virtual? }
15
+ Puppet::Parser::EnvironmentCompiler.compile(env, code_id).filter { |r| r.virtual? }
18
16
  end
19
17
 
20
-
21
- before :each do
22
- with_app_management(true)
23
- Puppet::Type.newtype :cap, :is_capability => true do
24
- newparam :name
25
- newparam :host
18
+ around :each do |example|
19
+ Puppet[:app_management] = true
20
+ Puppet::Parser::Compiler.any_instance.stubs(:loaders).returns(loaders)
21
+ Puppet::Parser::EnvironmentCompiler.any_instance.stubs(:loaders).returns(loaders)
22
+ Puppet.override(:loaders => loaders, :current_environment => env) do
23
+ Puppet::Type.newtype :cap, :is_capability => true do
24
+ newparam :name
25
+ newparam :host
26
+ end
27
+ example.run
28
+ Puppet::Type.rmtype(:cap)
26
29
  end
27
- end
28
-
29
- after :each do
30
- Puppet::Type.rmtype(:cap)
31
- with_app_management(false)
30
+ Puppet[:app_management] = false
32
31
  end
33
32
 
34
33
  MANIFEST = <<-EOS
@@ -318,29 +317,29 @@ MANIFEST_WITH_CLASS = <<-EOS
318
317
  EOS
319
318
 
320
319
 
321
- describe "a node catalog" do
320
+ context 'a node catalog' do
322
321
  it "is unaffected for a non-participating node" do
323
- catalog = compile_to_catalog(MANIFEST, Puppet::Node.new('other'))
322
+ catalog = compile_to_catalog(MANIFEST, Puppet::Node.new('other', :environment => env))
324
323
  types = catalog.resource_keys.map { |type, _| type }.uniq.sort
325
324
  expect(types).to eq(["Class", "Stage"])
326
325
  end
327
326
 
328
327
  it "an application instance must be contained in a site" do
329
- expect { compile_to_catalog(FAULTY_MANIFEST, Puppet::Node.new('first'))
328
+ expect { compile_to_catalog(FAULTY_MANIFEST, Puppet::Node.new('first', :environment => env))
330
329
  }.to raise_error(/Application instances .* can only be contained within a Site/)
331
330
  end
332
331
 
333
332
  it "does not raise an error when node mappings are not provided" do
334
- expect { compile_to_catalog(MANIFEST_WO_NODE) }.to_not raise_error
333
+ expect { compile_to_catalog(MANIFEST_WO_NODE, node) }.to_not raise_error
335
334
  end
336
335
 
337
336
  it "raises an error if node mapping is a string" do
338
- expect { compile_to_catalog(MANIFEST_WITH_STRING_NODES)
337
+ expect { compile_to_catalog(MANIFEST_WITH_STRING_NODES, node)
339
338
  }.to raise_error(/Invalid node mapping in .*: Mapping must be a hash/)
340
339
  end
341
340
 
342
341
  it "raises an error if node mapping is false" do
343
- expect { compile_to_catalog(MANIFEST_WITH_FALSE_NODES)
342
+ expect { compile_to_catalog(MANIFEST_WITH_FALSE_NODES, node)
344
343
  }.to raise_error(/Invalid node mapping in .*: Mapping must be a hash/)
345
344
  end
346
345
 
@@ -360,7 +359,7 @@ EOS
360
359
  end
361
360
 
362
361
  context "for producing node" do
363
- let(:compiled_node) { Puppet::Node.new('first') }
362
+ let(:compiled_node) { Puppet::Node.new('first', :environment => env) }
364
363
  let(:compiled_catalog) { compile_to_catalog(MANIFEST, compiled_node)}
365
364
 
366
365
  { "App[anapp]" => 'application instance',
@@ -379,7 +378,7 @@ EOS
379
378
  end
380
379
 
381
380
  context "for consuming node" do
382
- let(:compiled_node) { Puppet::Node.new('second') }
381
+ let(:compiled_node) { Puppet::Node.new('second', :environment => env) }
383
382
  let(:compiled_catalog) { compile_to_catalog(MANIFEST, compiled_node)}
384
383
  let(:cap) {
385
384
  the_cap = Puppet::Resource.new("Cap", "cap")
@@ -407,7 +406,7 @@ EOS
407
406
  end
408
407
 
409
408
  context "for node with class producer" do
410
- let(:compiled_node) { Puppet::Node.new('first') }
409
+ let(:compiled_node) { Puppet::Node.new('first', :environment => env) }
411
410
  let(:compiled_catalog) { compile_to_catalog(MANIFEST_WITH_CLASS, compiled_node)}
412
411
 
413
412
  { "App[anapp]" => 'application instance',
@@ -427,7 +426,7 @@ EOS
427
426
  end
428
427
 
429
428
  context "for node with class consumer" do
430
- let(:compiled_node) { Puppet::Node.new('second') }
429
+ let(:compiled_node) { Puppet::Node.new('second', :environment => env) }
431
430
  let(:compiled_catalog) { compile_to_catalog(MANIFEST_WITH_CLASS, compiled_node)}
432
431
  let(:cap) {
433
432
  the_cap = Puppet::Resource.new("Cap", "cap")
@@ -460,7 +459,7 @@ EOS
460
459
  # that are used to instantiate an application. The application instances are needed.
461
460
  #
462
461
  it "the node expressions is evaluated" do
463
- catalog = compile_to_catalog(MANIFEST_WITH_SITE, Puppet::Node.new('other'))
462
+ catalog = compile_to_catalog(MANIFEST_WITH_SITE, Puppet::Node.new('other', :environment => env))
464
463
  types = catalog.resource_keys.map { |type, _| type }.uniq.sort
465
464
  expect(types).to eq(["Class", "Node", "Notify", "Stage"])
466
465
  expect(catalog.resource("Notify[on a node]")).to_not be_nil
@@ -471,7 +470,7 @@ EOS
471
470
 
472
471
  context "when using a site expression" do
473
472
  it "the site expression is not evaluated in a node compilation" do
474
- catalog = compile_to_catalog(MANIFEST_WITH_SITE, Puppet::Node.new('other'))
473
+ catalog = compile_to_catalog(MANIFEST_WITH_SITE, Puppet::Node.new('other', :environment => env))
475
474
  types = catalog.resource_keys.map { |type, _| type }.uniq.sort
476
475
  expect(types).to eq(["Class", "Node", "Notify", "Stage"])
477
476
  expect(catalog.resource("Notify[on a node]")).to_not be_nil
@@ -574,12 +573,22 @@ EOS
574
573
  }.to raise_error(/Only application components can appear inside a site - Notify\[fail me\] is not allowed at line 20/)
575
574
  end
576
575
  end
576
+
577
+ it "includes code_id if specified" do
578
+ catalog = compile_to_env_catalog(MANIFEST_WITH_SITE, "12345")
579
+ expect(catalog.code_id).to eq("12345")
580
+ end
581
+
582
+ it "omits code_id if unspecified" do
583
+ catalog = compile_to_env_catalog(MANIFEST_WITH_SITE)
584
+ expect(catalog.code_id).to be_nil
585
+ end
577
586
  end
578
587
 
579
588
 
580
589
  describe "when validation of nodes" do
581
590
  it 'validates that the key of a node mapping is a Node' do
582
- expect { compile_to_catalog(<<-EOS, Puppet::Node.new('other'))
591
+ expect { compile_to_catalog(<<-EOS, Puppet::Node.new('other', :environment => env))
583
592
  application app {
584
593
  }
585
594
 
@@ -595,7 +604,7 @@ EOS
595
604
  end
596
605
 
597
606
  it 'validates that the value of a node mapping is a resource' do
598
- expect { compile_to_catalog(<<-EOS, Puppet::Node.new('other'))
607
+ expect { compile_to_catalog(<<-EOS, Puppet::Node.new('other', :environment => env))
599
608
  application app {
600
609
  }
601
610
 
@@ -611,7 +620,7 @@ EOS
611
620
  end
612
621
 
613
622
  it 'validates that the value can be an array or resources' do
614
- expect { compile_to_catalog(<<-EOS, Puppet::Node.new('other'))
623
+ expect { compile_to_catalog(<<-EOS, Puppet::Node.new('other', :environment => env))
615
624
  define p {
616
625
  notify {$title:}
617
626
  }
@@ -633,7 +642,7 @@ EOS
633
642
  end
634
643
 
635
644
  it 'validates that the is bound to exactly one node' do
636
- expect { compile_to_catalog(<<-EOS, Puppet::Node.new('first'))
645
+ expect { compile_to_catalog(<<-EOS, Puppet::Node.new('first', :environment => env))
637
646
  define p {
638
647
  notify {$title:}
639
648
  }
@@ -1,33 +1,30 @@
1
1
  #! /usr/bin/env ruby
2
2
  require 'spec_helper'
3
3
  require 'puppet_spec/compiler'
4
- require_relative 'pops/parser/parser_rspec_helper'
5
4
 
6
- describe "Capability types" do
5
+ describe 'Capability types' do
7
6
  include PuppetSpec::Compiler
8
- # We pull this in because we need access to with_app_management; and
9
- # since that has to root around in the guts of the Pops parser, there's
10
- # no really elegant way to do this
11
- include ParserRspecHelper
12
-
13
- def make_cap_type
14
- Puppet::Type.newtype :cap, :is_capability => true do
15
- newparam :name
16
- newparam :host
7
+ let(:env) { Puppet::Node::Environment.create(:testing, []) }
8
+ let(:node) { Puppet::Node.new('test', :environment => env) }
9
+ let(:loaders) { Puppet::Pops::Loaders.new(env) }
10
+
11
+ around :each do |example|
12
+ Puppet[:app_management] = true
13
+ Puppet::Parser::Compiler.any_instance.stubs(:loaders).returns(loaders)
14
+ Puppet.override(:loaders => loaders, :current_environment => env) do
15
+ Puppet::Type.newtype :cap, :is_capability => true do
16
+ newparam :name
17
+ newparam :host
18
+ end
19
+ example.run
20
+ Puppet::Type.rmtype(:cap)
17
21
  end
22
+ Puppet[:app_management] = false
18
23
  end
19
24
 
20
- before :each do
21
- with_app_management(true)
22
- end
23
-
24
- after :each do
25
- with_app_management(false)
26
- end
27
-
28
- describe "annotations" do
25
+ context 'annotations' do
29
26
  it "adds a blueprint for a produced resource" do
30
- catalog = compile_to_catalog(<<-MANIFEST)
27
+ catalog = compile_to_catalog(<<-MANIFEST, node)
31
28
  define test($hostname) {
32
29
  notify { "hostname ${hostname}":}
33
30
  }
@@ -49,7 +46,7 @@ describe "Capability types" do
49
46
  end
50
47
 
51
48
  it "adds a blueprint for a consumed resource" do
52
- catalog = compile_to_catalog(<<-MANIFEST)
49
+ catalog = compile_to_catalog(<<-MANIFEST, node)
53
50
  define test($hostname) {
54
51
  notify { "hostname ${hostname}":}
55
52
  }
@@ -136,7 +133,7 @@ describe "Capability types" do
136
133
  end
137
134
  it "does not allow operator '+>' in a mapping" do
138
135
  expect do
139
- compile_to_catalog(<<-MANIFEST)
136
+ compile_to_catalog(<<-MANIFEST, node)
140
137
  define test($hostname) {
141
138
  notify { "hostname ${hostname}":}
142
139
  }
@@ -150,7 +147,7 @@ describe "Capability types" do
150
147
 
151
148
  it "does not allow operator '*=>' in a mapping" do
152
149
  expect do
153
- compile_to_catalog(<<-MANIFEST)
150
+ compile_to_catalog(<<-MANIFEST, node)
154
151
  define test($hostname) {
155
152
  notify { "hostname ${hostname}":}
156
153
  }
@@ -163,9 +160,8 @@ describe "Capability types" do
163
160
  end
164
161
 
165
162
  it "does not allow 'before' relationship to capability mapping" do
166
- make_cap_type
167
163
  expect do
168
- compile_to_catalog(<<-MANIFEST)
164
+ compile_to_catalog(<<-MANIFEST, node)
169
165
  define test() {
170
166
  notify { "hello":}
171
167
  }
@@ -186,22 +182,14 @@ describe "Capability types" do
186
182
  MANIFEST
187
183
 
188
184
  expect {
189
- compile_to_catalog(manifest)
185
+ compile_to_catalog(manifest, node)
190
186
  }.to raise_error(Puppet::Error,
191
187
  /#{kw} clause references nonexistent type Test/)
192
188
  end
193
189
  end
194
190
  end
195
191
 
196
- describe "exporting a capability" do
197
- before(:each) do
198
- make_cap_type
199
- end
200
-
201
- after :each do
202
- Puppet::Type.rmtype(:cap)
203
- end
204
-
192
+ context 'exporting a capability' do
205
193
  it "does not add produced resources that are not exported" do
206
194
  manifest = <<-MANIFEST
207
195
  define test($hostname) {
@@ -214,7 +202,7 @@ Test produces Cap {
214
202
 
215
203
  test { one: hostname => "ahost" }
216
204
  MANIFEST
217
- catalog = compile_to_catalog(manifest)
205
+ catalog = compile_to_catalog(manifest, node)
218
206
  expect(catalog.resource("Test[one]")).to be_instance_of(Puppet::Resource)
219
207
  expect(catalog.resource_keys.find { |type, _| type == "Cap" }).to be_nil
220
208
  end
@@ -236,7 +224,7 @@ Test produces Cap {
236
224
 
237
225
  test { one: hostname => "ahost", export => Cap[two] }
238
226
  MANIFEST
239
- catalog = compile_to_catalog(manifest)
227
+ catalog = compile_to_catalog(manifest, node)
240
228
  expect(catalog.resource("Test[one]")).to be_instance_of(Puppet::Resource)
241
229
 
242
230
  caps = catalog.resource_keys.select { |type, _| type == "Cap" }
@@ -247,19 +235,11 @@ test { one: hostname => "ahost", export => Cap[two] }
247
235
  expect(cap["require"]).to eq("Test[one]")
248
236
  expect(cap["host"]).to eq("ahost")
249
237
  expect(cap.resource_type).to eq(Puppet::Type::Cap)
250
- expect(cap.tags.any? { |t| t == "producer:production" }).to eq(true)
238
+ expect(cap.tags.any? { |t| t == 'producer:testing' }).to eq(true)
251
239
  end
252
240
  end
253
241
 
254
- describe "consuming a capability" do
255
- before(:each) do
256
- make_cap_type
257
- end
258
-
259
- after :each do
260
- Puppet::Type.rmtype(:cap)
261
- end
262
-
242
+ context 'consuming a capability' do
263
243
  def make_catalog(instance)
264
244
  manifest = <<-MANIFEST
265
245
  define test($hostname = nohost) {
@@ -270,7 +250,7 @@ test { one: hostname => "ahost", export => Cap[two] }
270
250
  hostname => $host
271
251
  }
272
252
  MANIFEST
273
- compile_to_catalog(manifest + instance)
253
+ compile_to_catalog(manifest + instance, node)
274
254
  end
275
255
 
276
256
  def mock_cap_finding
@@ -322,10 +302,10 @@ test { one: hostname => "ahost", export => Cap[two] }
322
302
  end
323
303
  end
324
304
 
325
- describe 'producing/consuming resources' do
305
+ context 'producing/consuming resources' do
326
306
 
327
307
  let(:ral) do
328
- compile_to_ral(<<-MANIFEST)
308
+ compile_to_ral(<<-MANIFEST, node)
329
309
  define producer() {
330
310
  notify { "producer":}
331
311
  }
@@ -365,10 +345,10 @@ test { one: hostname => "ahost", export => Cap[two] }
365
345
  end
366
346
  end
367
347
 
368
- describe 'producing/consuming resources to/from classes' do
348
+ context 'producing/consuming resources to/from classes' do
369
349
 
370
350
  let(:ral) do
371
- compile_to_ral(<<-MANIFEST)
351
+ compile_to_ral(<<-MANIFEST, node)
372
352
  define test($hostname) {
373
353
  notify { $hostname:}
374
354
  }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -43,7 +43,7 @@ describe "when using function data provider" do
43
43
  node = Puppet::Node.new("testnode", :facts => Puppet::Node::Facts.new("facts", {}), :environment => 'production')
44
44
  compiler = Puppet::Parser::Compiler.new(node)
45
45
  catalog = compiler.compile()
46
- resources_created_in_fixture = ["Notify[env_test1]", "Notify[env_test2]", "Notify[module_test3]"]
46
+ resources_created_in_fixture = ["Notify[env_test1]", "Notify[env_test2]", "Notify[module_test3]", "Notify[env_test2-ipl]"]
47
47
  expect(resources_in(catalog)).to include(*resources_created_in_fixture)
48
48
  end
49
49
 
@@ -56,6 +56,24 @@ describe "when using function data provider" do
56
56
  expect(resources_in(catalog)).to include(*resources_created_in_fixture)
57
57
  end
58
58
 
59
+ it 'gets data from puppet function delivering environment data' do
60
+ Puppet[:code] = <<-CODE
61
+ function environment::data() {
62
+ { 'cls::test1' => 'env_puppet1',
63
+ 'cls::test2' => 'env_puppet2'
64
+ }
65
+ }
66
+ class cls ($test1, $test2) {
67
+ notify { $test1: }
68
+ notify { $test2: }
69
+ }
70
+ include cls
71
+ CODE
72
+ node = Puppet::Node.new('testnode', :facts => Puppet::Node::Facts.new('facts', {}), :environment => 'production')
73
+ catalog = Puppet::Parser::Compiler.new(node).compile
74
+ expect(resources_in(catalog)).to include('Notify[env_puppet1]', 'Notify[env_puppet2]')
75
+ end
76
+
59
77
  it 'raises an error if the environment data function does not return a hash' do
60
78
  Puppet[:code] = 'include abc'
61
79
  # find the loaders to patch with faulty function
@@ -45,7 +45,7 @@ describe "when using a hiera data provider" do
45
45
 
46
46
  it 'reads hiera.yaml in environment root and configures multiple json and yaml providers' do
47
47
  resources = compile_and_get_notifications('hiera_env_config')
48
- expect(resources).to include('env data param_a is 10, env data param_b is 20, env data param_c is 30, env data param_d is 40, env data param_e is 50')
48
+ expect(resources).to include("env data param_a is 10, env data param_b is 20, env data param_c is 30, env data param_d is 40, env data param_e is 50, env data param_yaml_utf8 is \u16EB\u16D2\u16E6, env data param_json_utf8 is \u16A0\u16C7\u16BB")
49
49
  end
50
50
 
51
51
  it 'reads hiera.yaml in module root and configures multiple json and yaml providers' do
@@ -186,7 +186,7 @@ Merge strategy first
186
186
  Path "#{environmentpath}/hiera_misc/data/common.yaml"
187
187
  Original path: "common"
188
188
  Interpolation on "Value from interpolation %{scope("target_scope")}"
189
- Global Scope"
189
+ Global Scope
190
190
  Found key: "target_scope" value: "with scope"
191
191
  Found key: "km_scope" value: "Value from interpolation with scope"
192
192
  Merged result: "Value from interpolation with scope"
@@ -72,6 +72,24 @@ describe "Defaults" do
72
72
 
73
73
  end
74
74
 
75
+ describe 'strict' do
76
+ it 'should accept the valid value :off' do
77
+ expect {Puppet.settings[:strict] = 'off'}.to_not raise_exception
78
+ end
79
+
80
+ it 'should accept the valid value :warning' do
81
+ expect {Puppet.settings[:strict] = 'warning'}.to_not raise_exception
82
+ end
83
+
84
+ it 'should accept the valid value :error' do
85
+ expect {Puppet.settings[:strict] = 'error'}.to_not raise_exception
86
+ end
87
+
88
+ it 'should fail if given an invalid value' do
89
+ expect {Puppet.settings[:strict] = 'ignore'}.to raise_exception(/Invalid value 'ignore' for parameter strict\./)
90
+ end
91
+ end
92
+
75
93
  describe 'supported_checksum_types' do
76
94
  it 'should default to md5,sha256' do
77
95
  expect(Puppet.settings[:supported_checksum_types]).to eq(['md5', 'sha256'])
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -46,6 +46,26 @@ describe Puppet::FileSystem::Uniquefile do
46
46
  expect(Puppet::FileSystem.exist?(filename)).to be_falsey
47
47
  end
48
48
 
49
+ it "propagates lock creation failures" do
50
+ # use an arbitrary exception so as not accidentally collide
51
+ # with the ENOENT that occurs when trying to call rmdir
52
+ Puppet::FileSystem::Uniquefile.stubs(:mkdir).raises 'arbitrary failure'
53
+ Puppet::FileSystem::Uniquefile.expects(:rmdir).never
54
+
55
+ expect {
56
+ Puppet::FileSystem::Uniquefile.open_tmp('foo') { |tmp| }
57
+ }.to raise_error('arbitrary failure')
58
+ end
59
+
60
+ it "only removes lock files that exist" do
61
+ # prevent the .lock directory from being created
62
+ Puppet::FileSystem::Uniquefile.stubs(:mkdir) { }
63
+
64
+ # and expect cleanup to be skipped
65
+ Puppet::FileSystem::Uniquefile.expects(:rmdir).never
66
+
67
+ Puppet::FileSystem::Uniquefile.open_tmp('foo') { |tmp| }
68
+ end
49
69
 
50
70
  context "Ruby 1.9.3 Tempfile tests" do
51
71
  # the remaining tests in this file are ported directly from the ruby 1.9.3 source,
@@ -243,6 +243,67 @@ describe "Puppet::FileSystem" do
243
243
  end
244
244
  end
245
245
 
246
+ it "should return false for exist? when resolving a cyclic symlink chain" do
247
+ # point symlink -> file
248
+ symlink = tmpfile("somefile_link")
249
+ Puppet::FileSystem.symlink(file, symlink)
250
+
251
+ # point symlink2 -> symlink
252
+ symlink2 = tmpfile("somefile_link2")
253
+ Puppet::FileSystem.symlink(symlink, symlink2)
254
+
255
+ # point symlink3 -> symlink2
256
+ symlink3 = tmpfile("somefile_link3")
257
+ Puppet::FileSystem.symlink(symlink2, symlink3)
258
+
259
+ # yank file, temporarily dangle
260
+ ::File.delete(file)
261
+
262
+ # and trash it so that we can recreate it OK on windows
263
+ Puppet::FileSystem.unlink(symlink)
264
+
265
+ # point symlink -> symlink3 to create a cycle
266
+ Puppet::FileSystem.symlink(symlink3, symlink)
267
+
268
+ expect(Puppet::FileSystem.exist?(symlink3)).to be_falsey
269
+ end
270
+
271
+ it "should return true for exist? when resolving a symlink chain pointing to a file" do
272
+ # point symlink -> file
273
+ symlink = tmpfile("somefile_link")
274
+ Puppet::FileSystem.symlink(file, symlink)
275
+
276
+ # point symlink2 -> symlink
277
+ symlink2 = tmpfile("somefile_link2")
278
+ Puppet::FileSystem.symlink(symlink, symlink2)
279
+
280
+ # point symlink3 -> symlink2
281
+ symlink3 = tmpfile("somefile_link3")
282
+ Puppet::FileSystem.symlink(symlink2, symlink3)
283
+
284
+ expect(Puppet::FileSystem.exist?(symlink3)).to be_truthy
285
+ end
286
+
287
+ it "should return false for exist? when resolving a symlink chain that dangles" do
288
+ # point symlink -> file
289
+ symlink = tmpfile("somefile_link")
290
+ Puppet::FileSystem.symlink(file, symlink)
291
+
292
+ # point symlink2 -> symlink
293
+ symlink2 = tmpfile("somefile_link2")
294
+ Puppet::FileSystem.symlink(symlink, symlink2)
295
+
296
+ # point symlink3 -> symlink2
297
+ symlink3 = tmpfile("somefile_link3")
298
+ Puppet::FileSystem.symlink(symlink2, symlink3)
299
+
300
+ # yank file, and make symlink dangle
301
+ ::File.delete(file)
302
+
303
+ # symlink3 is now indirectly dangled
304
+ expect(Puppet::FileSystem.exist?(symlink3)).to be_falsey
305
+ end
306
+
246
307
  it "should not create a symlink when the :noop option is specified" do
247
308
  [file, dir].each do |target|
248
309
  symlink = tmpfile("#{Puppet::FileSystem.basename(target)}_link")