puppet 4.5.3-universal-darwin → 4.6.1-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 (422) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +10 -1
  3. data/ext/debian/control +2 -4
  4. data/ext/project_data.yaml +4 -4
  5. data/install.rb +6 -2
  6. data/lib/puppet.rb +3 -1
  7. data/lib/puppet/agent/locker.rb +1 -1
  8. data/lib/puppet/application.rb +6 -4
  9. data/lib/puppet/application/agent.rb +2 -1
  10. data/lib/puppet/application/cert.rb +35 -2
  11. data/lib/puppet/application/device.rb +1 -1
  12. data/lib/puppet/application/generate.rb +5 -0
  13. data/lib/puppet/application/lookup.rb +3 -3
  14. data/lib/puppet/application_support.rb +1 -1
  15. data/lib/puppet/compilable_resource_type.rb +15 -0
  16. data/lib/puppet/configurer.rb +67 -10
  17. data/lib/puppet/configurer/plugin_handler.rb +2 -4
  18. data/lib/puppet/data_providers/hiera_config.rb +1 -1
  19. data/lib/puppet/defaults.rb +34 -7
  20. data/lib/puppet/environments.rb +4 -2
  21. data/lib/puppet/error.rb +1 -1
  22. data/lib/puppet/external/dot.rb +1 -1
  23. data/lib/puppet/face/ca.rb +4 -1
  24. data/lib/puppet/face/certificate.rb +7 -1
  25. data/lib/puppet/face/epp.rb +5 -5
  26. data/lib/puppet/face/generate.rb +64 -0
  27. data/lib/puppet/face/help.rb +19 -13
  28. data/lib/puppet/face/man.rb +1 -1
  29. data/lib/puppet/feature/external_facts.rb +1 -1
  30. data/lib/puppet/file_system.rb +16 -0
  31. data/lib/puppet/file_system/file_impl.rb +5 -0
  32. data/lib/puppet/file_system/memory_impl.rb +4 -0
  33. data/lib/puppet/file_system/path_pattern.rb +1 -0
  34. data/lib/puppet/file_system/windows.rb +19 -0
  35. data/lib/puppet/functions.rb +3 -5
  36. data/lib/puppet/functions/assert_type.rb +1 -1
  37. data/lib/puppet/functions/defined.rb +7 -5
  38. data/lib/puppet/functions/dig.rb +2 -18
  39. data/lib/puppet/functions/hiera.rb +1 -1
  40. data/lib/puppet/functions/lest.rb +1 -37
  41. data/lib/puppet/functions/new.rb +2 -473
  42. data/lib/puppet/functions/reverse_each.rb +2 -59
  43. data/lib/puppet/functions/scanf.rb +4 -4
  44. data/lib/puppet/functions/step.rb +1 -63
  45. data/lib/puppet/functions/then.rb +1 -61
  46. data/lib/puppet/functions/type.rb +1 -40
  47. data/lib/puppet/functions/unwrap.rb +40 -0
  48. data/lib/puppet/generate/models/type/property.rb +70 -0
  49. data/lib/puppet/generate/models/type/type.rb +57 -0
  50. data/lib/puppet/generate/templates/type/pcore.erb +41 -0
  51. data/lib/puppet/generate/type.rb +239 -0
  52. data/lib/puppet/graph/simple_graph.rb +2 -6
  53. data/lib/puppet/indirector/catalog/static_compiler.rb +5 -2
  54. data/lib/puppet/indirector/facts/facter.rb +1 -1
  55. data/lib/puppet/indirector/key/ca.rb +2 -2
  56. data/lib/puppet/indirector/request.rb +25 -4
  57. data/lib/puppet/indirector/rest.rb +73 -3
  58. data/lib/puppet/info_service/class_information_service.rb +1 -2
  59. data/lib/puppet/interface/documentation.rb +1 -1
  60. data/lib/puppet/loaders.rb +2 -0
  61. data/lib/puppet/metatype/manager.rb +6 -6
  62. data/lib/puppet/module.rb +8 -1
  63. data/lib/puppet/module_tool.rb +2 -2
  64. data/lib/puppet/module_tool/checksums.rb +1 -1
  65. data/lib/puppet/module_tool/errors/installer.rb +2 -2
  66. data/lib/puppet/module_tool/metadata.rb +1 -1
  67. data/lib/puppet/network/http/api/indirected_routes.rb +23 -32
  68. data/lib/puppet/network/http/rack/rest.rb +15 -1
  69. data/lib/puppet/network/rights.rb +1 -11
  70. data/lib/puppet/node/environment.rb +7 -3
  71. data/lib/puppet/node/facts.rb +1 -1
  72. data/lib/puppet/parameter.rb +23 -3
  73. data/lib/puppet/parameter/boolean.rb +1 -1
  74. data/lib/puppet/parameter/value.rb +1 -1
  75. data/lib/puppet/parser.rb +0 -1
  76. data/lib/puppet/parser/ast/pops_bridge.rb +1 -1
  77. data/lib/puppet/parser/ast/resource.rb +5 -0
  78. data/lib/puppet/parser/ast/resource_instance.rb +5 -1
  79. data/lib/puppet/parser/ast/resourceparam.rb +5 -0
  80. data/lib/puppet/parser/compiler.rb +14 -17
  81. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +1 -1
  82. data/lib/puppet/parser/environment_compiler.rb +10 -0
  83. data/lib/puppet/parser/functions/create_resources.rb +39 -24
  84. data/lib/puppet/parser/functions/defined.rb +2 -26
  85. data/lib/puppet/parser/functions/dig.rb +29 -0
  86. data/lib/puppet/parser/functions/lest.rb +49 -0
  87. data/lib/puppet/parser/functions/new.rb +530 -0
  88. data/lib/puppet/parser/functions/require.rb +1 -1
  89. data/lib/puppet/parser/functions/reverse_each.rb +83 -0
  90. data/lib/puppet/parser/functions/scanf.rb +4 -4
  91. data/lib/puppet/parser/functions/step.rb +84 -0
  92. data/lib/puppet/parser/functions/then.rb +73 -0
  93. data/lib/puppet/parser/functions/type.rb +53 -0
  94. data/lib/puppet/parser/resource.rb +16 -7
  95. data/lib/puppet/parser/scope.rb +36 -28
  96. data/lib/puppet/parser/type_loader.rb +1 -1
  97. data/lib/puppet/plugins/data_providers/data_provider.rb +1 -1
  98. data/lib/puppet/pops.rb +13 -0
  99. data/lib/puppet/pops/adapters.rb +49 -49
  100. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +1 -1
  101. data/lib/puppet/pops/evaluator/access_operator.rb +39 -2
  102. data/lib/puppet/pops/evaluator/closure.rb +39 -13
  103. data/lib/puppet/pops/evaluator/collector_transformer.rb +10 -1
  104. data/lib/puppet/pops/evaluator/evaluator_impl.rb +16 -11
  105. data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
  106. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +0 -1
  107. data/lib/puppet/pops/evaluator/literal_evaluator.rb +0 -1
  108. data/lib/puppet/pops/evaluator/relationship_operator.rb +1 -2
  109. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +119 -0
  110. data/lib/puppet/pops/evaluator/runtime3_support.rb +19 -45
  111. data/lib/puppet/pops/functions/function.rb +5 -0
  112. data/lib/puppet/pops/issues.rb +1 -1
  113. data/lib/puppet/pops/label_provider.rb +2 -2
  114. data/lib/puppet/pops/loader/base_loader.rb +12 -15
  115. data/lib/puppet/pops/loader/loader.rb +15 -50
  116. data/lib/puppet/pops/loader/loader_paths.rb +28 -2
  117. data/lib/puppet/pops/loader/module_loaders.rb +16 -1
  118. data/lib/puppet/pops/loader/null_loader.rb +17 -1
  119. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +12 -11
  120. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +80 -0
  121. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +2 -3
  122. data/lib/puppet/pops/loader/runtime3_type_loader.rb +52 -13
  123. data/lib/puppet/pops/loader/static_loader.rb +55 -0
  124. data/lib/puppet/pops/loader/type_definition_instantiator.rb +30 -14
  125. data/lib/puppet/pops/loader/typed_name.rb +50 -0
  126. data/lib/puppet/pops/loaders.rb +64 -19
  127. data/lib/puppet/pops/merge_strategy.rb +7 -7
  128. data/lib/puppet/pops/migration/migration_checker.rb +4 -0
  129. data/lib/puppet/pops/model/model_label_provider.rb +2 -0
  130. data/lib/puppet/pops/parser/egrammar.ra +8 -5
  131. data/lib/puppet/pops/parser/eparser.rb +1550 -1498
  132. data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
  133. data/lib/puppet/pops/parser/interpolation_support.rb +7 -0
  134. data/lib/puppet/pops/parser/lexer2.rb +14 -1
  135. data/lib/puppet/pops/parser/locator.rb +30 -1
  136. data/lib/puppet/pops/parser/parser_support.rb +0 -3
  137. data/lib/puppet/pops/parser/slurp_support.rb +3 -3
  138. data/lib/puppet/pops/patterns.rb +9 -1
  139. data/lib/puppet/pops/pcore.rb +67 -11
  140. data/lib/puppet/pops/puppet_stack.rb +43 -0
  141. data/lib/puppet/pops/resource/param.rb +51 -0
  142. data/lib/puppet/pops/resource/resource_type_impl.rb +301 -0
  143. data/lib/puppet/pops/resource/resource_type_set.pcore +21 -0
  144. data/lib/puppet/pops/serialization.rb +17 -0
  145. data/lib/puppet/pops/serialization/abstract_reader.rb +149 -0
  146. data/lib/puppet/pops/serialization/abstract_writer.rb +179 -0
  147. data/lib/puppet/pops/serialization/deserializer.rb +60 -0
  148. data/lib/puppet/pops/serialization/extension.rb +126 -0
  149. data/lib/puppet/pops/serialization/instance_reader.rb +19 -0
  150. data/lib/puppet/pops/serialization/instance_writer.rb +14 -0
  151. data/lib/puppet/pops/serialization/json.rb +247 -0
  152. data/lib/puppet/pops/serialization/object.rb +63 -0
  153. data/lib/puppet/pops/serialization/rgen.rb +151 -0
  154. data/lib/puppet/pops/serialization/serializer.rb +91 -0
  155. data/lib/puppet/pops/serialization/time_factory.rb +66 -0
  156. data/lib/puppet/pops/types/annotatable.rb +36 -0
  157. data/lib/puppet/pops/types/implementation_registry.rb +3 -8
  158. data/lib/puppet/pops/types/p_meta_type.rb +83 -0
  159. data/lib/puppet/pops/types/p_object_type.rb +110 -117
  160. data/lib/puppet/pops/types/p_runtime_type.rb +13 -0
  161. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +23 -0
  162. data/lib/puppet/pops/types/p_sem_ver_type.rb +30 -2
  163. data/lib/puppet/pops/types/p_sensitive_type.rb +69 -0
  164. data/lib/puppet/pops/types/p_type_set_type.rb +361 -0
  165. data/lib/puppet/pops/types/puppet_object.rb +0 -5
  166. data/lib/puppet/pops/types/ruby_generator.rb +9 -2
  167. data/lib/puppet/pops/types/type_calculator.rb +6 -1
  168. data/lib/puppet/pops/types/type_factory.rb +14 -12
  169. data/lib/puppet/pops/types/type_formatter.rb +78 -33
  170. data/lib/puppet/pops/types/type_mismatch_describer.rb +0 -2
  171. data/lib/puppet/pops/types/type_parser.rb +27 -2
  172. data/lib/puppet/pops/types/type_set_reference.rb +59 -0
  173. data/lib/puppet/pops/types/types.rb +366 -13
  174. data/lib/puppet/pops/validation.rb +4 -4
  175. data/lib/puppet/pops/validation/checker4_0.rb +5 -2
  176. data/lib/puppet/pops/visitor.rb +2 -2
  177. data/lib/puppet/property.rb +64 -5
  178. data/lib/puppet/provider.rb +1 -1
  179. data/lib/puppet/provider/aixobject.rb +3 -3
  180. data/lib/puppet/provider/group/aix.rb +4 -4
  181. data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
  182. data/lib/puppet/provider/mailalias/aliases.rb +1 -1
  183. data/lib/puppet/provider/mcx/mcxcontent.rb +2 -2
  184. data/lib/puppet/provider/mount/parsed.rb +1 -1
  185. data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
  186. data/lib/puppet/provider/package/appdmg.rb +3 -3
  187. data/lib/puppet/provider/package/apple.rb +1 -1
  188. data/lib/puppet/provider/package/dnf.rb +5 -0
  189. data/lib/puppet/provider/package/nim.rb +1 -1
  190. data/lib/puppet/provider/package/pacman.rb +2 -2
  191. data/lib/puppet/provider/package/pip.rb +5 -3
  192. data/lib/puppet/provider/package/pip3.rb +1 -1
  193. data/lib/puppet/provider/package/pkg.rb +5 -5
  194. data/lib/puppet/provider/package/pkgdmg.rb +4 -4
  195. data/lib/puppet/provider/package/pkgin.rb +1 -1
  196. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  197. data/lib/puppet/provider/package/portage.rb +48 -8
  198. data/lib/puppet/provider/package/sun.rb +1 -1
  199. data/lib/puppet/provider/package/tdnf.rb +28 -0
  200. data/lib/puppet/provider/package/yum.rb +22 -4
  201. data/lib/puppet/provider/parsedfile.rb +2 -2
  202. data/lib/puppet/provider/service/base.rb +1 -1
  203. data/lib/puppet/provider/service/bsd.rb +1 -1
  204. data/lib/puppet/provider/service/daemontools.rb +2 -2
  205. data/lib/puppet/provider/service/debian.rb +3 -3
  206. data/lib/puppet/provider/service/init.rb +5 -3
  207. data/lib/puppet/provider/service/launchd.rb +16 -2
  208. data/lib/puppet/provider/service/runit.rb +1 -1
  209. data/lib/puppet/provider/service/smf.rb +8 -1
  210. data/lib/puppet/provider/service/systemd.rb +39 -6
  211. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
  212. data/lib/puppet/provider/user/aix.rb +3 -2
  213. data/lib/puppet/provider/user/directoryservice.rb +4 -3
  214. data/lib/puppet/provider/user/hpux.rb +1 -1
  215. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  216. data/lib/puppet/provider/user/windows_adsi.rb +3 -0
  217. data/lib/puppet/provider/zfs/zfs.rb +1 -1
  218. data/lib/puppet/reference/type.rb +1 -1
  219. data/lib/puppet/resource.rb +33 -7
  220. data/lib/puppet/resource/capability_finder.rb +74 -54
  221. data/lib/puppet/resource/status.rb +11 -2
  222. data/lib/puppet/settings.rb +17 -6
  223. data/lib/puppet/settings/environment_conf.rb +1 -1
  224. data/lib/puppet/settings/server_list_setting.rb +20 -0
  225. data/lib/puppet/ssl/certificate_authority.rb +32 -9
  226. data/lib/puppet/ssl/certificate_authority/interface.rb +164 -24
  227. data/lib/puppet/ssl/host.rb +3 -3
  228. data/lib/puppet/ssl/oids.rb +10 -0
  229. data/lib/puppet/ssl/validator/default_validator.rb +2 -2
  230. data/lib/puppet/test/test_helper.rb +2 -2
  231. data/lib/puppet/transaction.rb +12 -0
  232. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  233. data/lib/puppet/transaction/event.rb +29 -2
  234. data/lib/puppet/transaction/event_manager.rb +1 -1
  235. data/lib/puppet/transaction/persistence.rb +84 -0
  236. data/lib/puppet/transaction/report.rb +49 -2
  237. data/lib/puppet/transaction/resource_harness.rb +98 -18
  238. data/lib/puppet/type.rb +63 -21
  239. data/lib/puppet/type/augeas.rb +3 -3
  240. data/lib/puppet/type/cron.rb +1 -1
  241. data/lib/puppet/type/file.rb +39 -2
  242. data/lib/puppet/type/file/data_sync.rb +13 -5
  243. data/lib/puppet/type/host.rb +1 -1
  244. data/lib/puppet/type/mount.rb +2 -6
  245. data/lib/puppet/type/notify.rb +1 -1
  246. data/lib/puppet/type/package.rb +1 -1
  247. data/lib/puppet/type/resources.rb +1 -1
  248. data/lib/puppet/type/scheduled_task.rb +1 -1
  249. data/lib/puppet/type/ssh_authorized_key.rb +2 -2
  250. data/lib/puppet/type/tidy.rb +1 -1
  251. data/lib/puppet/type/yumrepo.rb +3 -3
  252. data/lib/puppet/type/zone.rb +1 -1
  253. data/lib/puppet/util.rb +2 -2
  254. data/lib/puppet/util/classgen.rb +1 -1
  255. data/lib/puppet/util/command_line.rb +6 -2
  256. data/lib/puppet/util/command_line/trollop.rb +1 -1
  257. data/lib/puppet/util/execution.rb +2 -2
  258. data/lib/puppet/util/http_proxy.rb +1 -1
  259. data/lib/puppet/util/inifile.rb +1 -1
  260. data/lib/puppet/util/instance_loader.rb +1 -1
  261. data/lib/puppet/util/logging.rb +1 -1
  262. data/lib/puppet/util/multi_match.rb +1 -1
  263. data/lib/puppet/util/plist.rb +15 -5
  264. data/lib/puppet/util/profiler.rb +1 -1
  265. data/lib/puppet/util/profiler/around_profiler.rb +1 -1
  266. data/lib/puppet/util/psych_support.rb +1 -1
  267. data/lib/puppet/util/rdoc.rb +2 -2
  268. data/lib/puppet/util/rubygems.rb +1 -1
  269. data/lib/puppet/util/watcher/periodic_watcher.rb +2 -2
  270. data/lib/puppet/util/windows/access_control_entry.rb +1 -1
  271. data/lib/puppet/util/windows/adsi.rb +30 -8
  272. data/lib/puppet/util/windows/api_types.rb +1 -1
  273. data/lib/puppet/util/windows/file.rb +59 -0
  274. data/lib/puppet/util/windows/process.rb +10 -0
  275. data/lib/puppet/util/windows/security.rb +1 -1
  276. data/lib/puppet/util/windows/user.rb +22 -4
  277. data/lib/puppet/util/yaml.rb +15 -3
  278. data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +1 -1
  279. data/lib/puppet/vendor/rgen_patch.rb +1 -1
  280. data/lib/puppet/version.rb +2 -2
  281. data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +10 -0
  282. data/spec/integration/agent/logging_spec.rb +15 -14
  283. data/spec/integration/application/apply_spec.rb +1 -0
  284. data/spec/integration/directory_environments_spec.rb +16 -0
  285. data/spec/integration/environments/settings_spec.rb +32 -4
  286. data/spec/integration/faces/documentation_spec.rb +1 -1
  287. data/spec/integration/network/http/api/indirected_routes_spec.rb +33 -0
  288. data/spec/integration/node/environment_spec.rb +21 -0
  289. data/spec/integration/parser/collection_spec.rb +10 -0
  290. data/spec/integration/parser/compiler_spec.rb +76 -840
  291. data/spec/integration/parser/functions/require_spec.rb +3 -3
  292. data/spec/integration/parser/parameter_defaults_spec.rb +6 -2
  293. data/spec/integration/parser/pcore_resource_spec.rb +208 -0
  294. data/spec/integration/parser/resource_expressions_spec.rb +4 -2
  295. data/spec/integration/provider/yumrepo_spec.rb +4 -1
  296. data/spec/integration/transaction/report_spec.rb +666 -0
  297. data/spec/integration/type/file_spec.rb +11 -12
  298. data/spec/integration/util/windows/adsi_spec.rb +99 -0
  299. data/spec/integration/util/windows/principal_spec.rb +109 -60
  300. data/spec/integration/util/windows/process_spec.rb +4 -2
  301. data/spec/integration/util/windows/security_spec.rb +34 -8
  302. data/spec/integration/util/windows/user_spec.rb +26 -4
  303. data/spec/lib/puppet_spec/files.rb +2 -2
  304. data/spec/lib/puppet_spec/network.rb +12 -8
  305. data/spec/shared_examples/rhel_package_provider.rb +341 -0
  306. data/spec/spec_helper.rb +8 -2
  307. data/spec/unit/application/cert_spec.rb +20 -0
  308. data/spec/unit/configurer/plugin_handler_spec.rb +0 -26
  309. data/spec/unit/configurer_spec.rb +46 -0
  310. data/spec/unit/defaults_spec.rb +14 -0
  311. data/spec/unit/face/generate_spec.rb +230 -0
  312. data/spec/unit/face/help_spec.rb +53 -0
  313. data/spec/unit/face/parser_spec.rb +6 -0
  314. data/spec/unit/face/plugin_spec.rb +0 -4
  315. data/spec/unit/file_system_spec.rb +85 -0
  316. data/spec/unit/functions/lookup_spec.rb +4 -4
  317. data/spec/unit/functions/match_spec.rb +2 -2
  318. data/spec/unit/functions/regsubst_spec.rb +1 -1
  319. data/spec/unit/functions/split_spec.rb +1 -1
  320. data/spec/unit/functions/unwrap_spec.rb +29 -0
  321. data/spec/unit/functions/versioncmp_spec.rb +1 -1
  322. data/spec/unit/functions4_spec.rb +8 -8
  323. data/spec/unit/indirector/facts/facter_spec.rb +1 -9
  324. data/spec/unit/indirector/rest_spec.rb +95 -9
  325. data/spec/unit/module_spec.rb +43 -7
  326. data/spec/unit/module_tool/applications/installer_spec.rb +10 -1
  327. data/spec/unit/module_tool/applications/unpacker_spec.rb +2 -1
  328. data/spec/unit/module_tool/applications/upgrader_spec.rb +8 -0
  329. data/spec/unit/module_tool/tar/mini_spec.rb +3 -3
  330. data/spec/unit/network/http/api/indirected_routes_spec.rb +49 -58
  331. data/spec/unit/network/http/api/master/v3_spec.rb +7 -4
  332. data/spec/unit/network/rights_spec.rb +1 -1
  333. data/spec/unit/parameter_spec.rb +11 -0
  334. data/spec/unit/parser/compiler_spec.rb +19 -33
  335. data/spec/unit/{appmgmt_spec.rb → parser/environment_compiler_spec.rb} +12 -1
  336. data/spec/unit/parser/functions/create_resources_spec.rb +76 -4
  337. data/spec/unit/parser/functions/require_spec.rb +2 -2
  338. data/spec/unit/parser/resource_spec.rb +21 -11
  339. data/spec/unit/parser/scope_spec.rb +1 -5
  340. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1 -1
  341. data/spec/unit/pops/loaders/dependency_loader_spec.rb +1 -1
  342. data/spec/unit/pops/loaders/loader_paths_spec.rb +1 -1
  343. data/spec/unit/pops/loaders/loaders_spec.rb +63 -5
  344. data/spec/unit/pops/loaders/module_loaders_spec.rb +2 -2
  345. data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
  346. data/spec/unit/pops/parser/lexer2_spec.rb +27 -3
  347. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +8 -0
  348. data/spec/unit/pops/parser/parse_calls_spec.rb +9 -0
  349. data/spec/unit/pops/puppet_stack_spec.rb +79 -0
  350. data/spec/unit/pops/resource/resource_type_impl_spec.rb +37 -0
  351. data/spec/unit/pops/serialization/packer_spec.rb +153 -0
  352. data/spec/unit/pops/serialization/rgen_spec.rb +88 -0
  353. data/spec/unit/pops/serialization/serialization_spec.rb +228 -0
  354. data/spec/unit/pops/types/p_object_type_spec.rb +44 -2
  355. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +42 -0
  356. data/spec/unit/pops/types/p_sensitive_type_spec.rb +139 -0
  357. data/spec/unit/pops/types/p_type_set_type_spec.rb +424 -0
  358. data/spec/unit/pops/types/ruby_generator_spec.rb +497 -181
  359. data/spec/unit/pops/types/type_calculator_spec.rb +10 -4
  360. data/spec/unit/pops/types/type_formatter_spec.rb +1 -1
  361. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +2 -2
  362. data/spec/unit/pops/types/type_parser_spec.rb +1 -1
  363. data/spec/unit/pops/types/types_spec.rb +1 -1
  364. data/spec/unit/pops/validator/validator_spec.rb +18 -1
  365. data/spec/unit/property_spec.rb +48 -11
  366. data/spec/unit/provider/group/windows_adsi_spec.rb +11 -1
  367. data/spec/unit/provider/package/dnf_spec.rb +1 -99
  368. data/spec/unit/provider/package/pacman_spec.rb +4 -4
  369. data/spec/unit/provider/package/pip_spec.rb +14 -0
  370. data/spec/unit/provider/package/pkg_spec.rb +6 -0
  371. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -3
  372. data/spec/unit/provider/package/portage_spec.rb +64 -8
  373. data/spec/unit/provider/package/tdnf_spec.rb +18 -0
  374. data/spec/unit/provider/package/windows/package_spec.rb +4 -1
  375. data/spec/unit/provider/package/windows_spec.rb +8 -2
  376. data/spec/unit/provider/package/yum_spec.rb +6 -377
  377. data/spec/unit/provider/service/base_spec.rb +6 -0
  378. data/spec/unit/provider/service/debian_spec.rb +16 -7
  379. data/spec/unit/provider/service/gentoo_spec.rb +6 -0
  380. data/spec/unit/provider/service/init_spec.rb +7 -0
  381. data/spec/unit/provider/service/launchd_spec.rb +35 -4
  382. data/spec/unit/provider/service/openrc_spec.rb +6 -0
  383. data/spec/unit/provider/service/smf_spec.rb +31 -6
  384. data/spec/unit/provider/service/src_spec.rb +6 -0
  385. data/spec/unit/provider/service/systemd_spec.rb +70 -20
  386. data/spec/unit/provider/service/upstart_spec.rb +6 -0
  387. data/spec/unit/provider/user/aix_spec.rb +7 -0
  388. data/spec/unit/provider/user/directoryservice_spec.rb +30 -1
  389. data/spec/unit/provider/user/windows_adsi_spec.rb +19 -0
  390. data/spec/unit/resource/capability_finder_spec.rb +51 -3
  391. data/spec/unit/resource/catalog_spec.rb +5 -0
  392. data/spec/unit/resource/type_spec.rb +2 -2
  393. data/spec/unit/resource_spec.rb +19 -0
  394. data/spec/unit/settings_spec.rb +13 -0
  395. data/spec/unit/ssl/certificate_authority/interface_spec.rb +176 -10
  396. data/spec/unit/ssl/certificate_authority_spec.rb +63 -22
  397. data/spec/unit/ssl/host_spec.rb +1 -1
  398. data/spec/unit/ssl/oids_spec.rb +24 -21
  399. data/spec/unit/transaction/event_spec.rb +3 -1
  400. data/spec/unit/transaction/persistence_spec.rb +173 -0
  401. data/spec/unit/transaction/report_spec.rb +64 -1
  402. data/spec/unit/transaction/resource_harness_spec.rb +91 -0
  403. data/spec/unit/type/file/content_spec.rb +47 -15
  404. data/spec/unit/type/file_spec.rb +28 -0
  405. data/spec/unit/type/mount_spec.rb +5 -12
  406. data/spec/unit/type/yumrepo_spec.rb +1 -5
  407. data/spec/unit/type_spec.rb +32 -0
  408. data/spec/unit/util/command_line_spec.rb +11 -0
  409. data/spec/unit/util/execution_spec.rb +1 -1
  410. data/spec/unit/util/plist_spec.rb +16 -3
  411. data/spec/unit/util/storage_spec.rb +4 -1
  412. data/spec/unit/util/windows/adsi_spec.rb +23 -2
  413. data/spec/unit/util/windows/file_spec.rb +56 -1
  414. data/spec/unit/util/windows/sid_spec.rb +31 -7
  415. data/spec/unit/util/yaml_spec.rb +12 -0
  416. data/spec/unit/util_spec.rb +87 -20
  417. metadata +89 -34
  418. data/ext/puppetlisten/puppetlisten.rb +0 -77
  419. data/ext/puppetlisten/puppetrun.rb +0 -38
  420. data/lib/puppet/resource/type_collection_helper.rb +0 -7
  421. data/spec/unit/parser/functions/defined_spec.rb +0 -120
  422. data/spec/unit/resource/type_collection_helper_spec.rb +0 -24
@@ -14,10 +14,8 @@ class Puppet::Configurer::PluginHandler
14
14
 
15
15
  result = []
16
16
 
17
- if Puppet.features.external_facts?
18
- plugin_fact_downloader = @factory.create_plugin_facts_downloader(environment)
19
- result += plugin_fact_downloader.evaluate
20
- end
17
+ plugin_fact_downloader = @factory.create_plugin_facts_downloader(environment)
18
+ result += plugin_fact_downloader.evaluate
21
19
 
22
20
  result += plugin_downloader.evaluate
23
21
  Puppet::Util::Autoload.reload_changed
@@ -42,7 +42,7 @@ module Puppet::DataProviders
42
42
  hierarchy_elem_type_v2 = hierarchy_elem_type_base + ',paths=>Array[String[1]]}]'
43
43
  hierarchy_elem_type_v3 = hierarchy_elem_type_base + '}]'
44
44
 
45
- Puppet::Pops::Types::TypeParser.new.parse('Struct[{'\
45
+ Puppet::Pops::Types::TypeParser.singleton.parse('Struct[{'\
46
46
  'version=>Integer[4],'\
47
47
  "hierarchy=>Optional[Array[Variant[#{hierarchy_elem_type_v1},#{hierarchy_elem_type_v2},#{hierarchy_elem_type_v3}]]],"\
48
48
  'datadir=>Optional[String[1]]}]')
@@ -112,7 +112,8 @@ module Puppet
112
112
  Valid values for this setting are:
113
113
 
114
114
  * `deprecations` --- disables deprecation warnings.
115
- * `undefined_variables` --- disables warnings about non existing variables.",
115
+ * `undefined_variables` --- disables warnings about non existing variables.
116
+ * `undefined_resources` --- disables warnings about non existing resources.",
116
117
  :hook => proc do |value|
117
118
  values = munge(value)
118
119
  valid = %w[deprecations undefined_variables undefined_resources]
@@ -418,7 +419,7 @@ deprecated and has been replaced by 'always_retry_plugins'."
418
419
  :data_binding_terminus => {
419
420
  :type => :terminus,
420
421
  :default => "hiera",
421
- :desc => "Where to retrive information about data.",
422
+ :desc => "Where to retrieve information about data.",
422
423
  },
423
424
  :hiera_config => {
424
425
  :default => lambda do
@@ -639,7 +640,7 @@ deprecated and has been replaced by 'always_retry_plugins'."
639
640
  Puppet.define_settings(
640
641
  :main,
641
642
 
642
- # We have to downcase the fqdn, because the current ssl stuff (as oppsed to in master) doesn't have good facilities for
643
+ # We have to downcase the fqdn, because the current ssl stuff (as opposed to in master) doesn't have good facilities for
643
644
  # manipulating naming.
644
645
  :certname => {
645
646
  :default => lambda { Puppet::Settings.default_certname.downcase },
@@ -1073,7 +1074,7 @@ EOT
1073
1074
  this path as a directory if one exists or if the path ends with a / or \\.
1074
1075
 
1075
1076
  Setting a global value for `manifest` in puppet.conf is not allowed
1076
- (but it can be overridden from them commandline). Please use
1077
+ (but it can be overridden from the commandline). Please use
1077
1078
  directory environments instead. If you need to use something other than the
1078
1079
  environment's `manifests` directory as the main manifest, you can set
1079
1080
  `manifest` in environment.conf. For more info, see
@@ -1226,7 +1227,7 @@ EOT
1226
1227
  field for authorization.
1227
1228
 
1228
1229
  Note that the name of the HTTP header gets munged by the web server
1229
- common gateway inteface: an `HTTP_` prefix is added, dashes are converted
1230
+ common gateway interface: an `HTTP_` prefix is added, dashes are converted
1230
1231
  to underscores, and all letters are uppercased. Thus, to use the
1231
1232
  `X-Client-DN` header, this setting should be `HTTP_X_CLIENT_DN`.",
1232
1233
  },
@@ -1237,7 +1238,7 @@ EOT
1237
1238
  client successfully authenticated, and anything else otherwise.
1238
1239
 
1239
1240
  Note that the name of the HTTP header gets munged by the web server
1240
- common gateway inteface: an `HTTP_` prefix is added, dashes are converted
1241
+ common gateway interface: an `HTTP_` prefix is added, dashes are converted
1241
1242
  to underscores, and all letters are uppercased. Thus, to use the
1242
1243
  `X-Client-Verify` header, this setting should be
1243
1244
  `HTTP_X_CLIENT_VERIFY`.",
@@ -1347,6 +1348,14 @@ EOT
1347
1348
  this file reflects the state discovered through interacting
1348
1349
  with clients."
1349
1350
  },
1351
+ :transactionstorefile => {
1352
+ :default => "$statedir/transactionstore.yaml",
1353
+ :type => :file,
1354
+ :mode => "0660",
1355
+ :desc => "Transactional storage file for persisting data between
1356
+ transactions for the purposes of infering information (such as
1357
+ corrective_change) on new data received."
1358
+ },
1350
1359
  :clientyamldir => {
1351
1360
  :default => "$vardir/client_yaml",
1352
1361
  :type => :directory,
@@ -1395,7 +1404,25 @@ EOT
1395
1404
  },
1396
1405
  :server => {
1397
1406
  :default => "puppet",
1398
- :desc => "The puppet master server to which the puppet agent should connect."
1407
+ :desc => "The puppet master server to which the puppet agent should connect.",
1408
+ :call_hook => :on_initialize_and_write,
1409
+ :hook => proc { |value|
1410
+ if Puppet.settings.set_by_config?(:server) && Puppet.settings.set_by_config?(:server_list)
1411
+ Puppet.deprecation_warning('Attempted to set both server and server_list. Server setting will not be used.', :SERVER_DUPLICATION)
1412
+ end
1413
+ }
1414
+ },
1415
+ :server_list => {
1416
+ :default => [],
1417
+ :type => :server_list,
1418
+ :desc => "The list of puppet master servers to which the puppet agent should connect,
1419
+ in the order that they will be tried.",
1420
+ :call_hook => :on_initialize_and_write,
1421
+ :hook => proc { |value|
1422
+ if Puppet.settings.set_by_config?(:server) && Puppet.settings.set_by_config?(:server_list)
1423
+ Puppet.deprecation_warning('Attempted to set both server and server_list. Server setting will not be used.', :SERVER_DUPLICATION)
1424
+ end
1425
+ }
1399
1426
  },
1400
1427
  :use_srv_records => {
1401
1428
  :default => false,
@@ -147,8 +147,10 @@ module Puppet::Environments
147
147
  include EnvironmentLoader
148
148
 
149
149
  def initialize(environment_dir, global_module_path)
150
- @environment_dir = environment_dir
151
- @global_module_path = global_module_path
150
+ @environment_dir = Puppet::FileSystem.expand_path(environment_dir)
151
+ @global_module_path = global_module_path ?
152
+ global_module_path.map { |p| Puppet::FileSystem.expand_path(p) } :
153
+ nil
152
154
  end
153
155
 
154
156
  # Generate an array of directory loaders from a path string.
@@ -93,7 +93,7 @@ module Puppet
93
93
  class MissingCommand < Puppet::Error
94
94
  end
95
95
 
96
- # Raised when we failed to aquire a lock
96
+ # Raised when we failed to acquire a lock
97
97
  class LockError < Puppet::Error
98
98
  end
99
99
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  module DOT
10
10
 
11
- # These glogal vars are used to make nice graph source.
11
+ # These global vars are used to make nice graph source.
12
12
 
13
13
  $tab = ' '
14
14
  $tab2 = $tab * 2
@@ -178,7 +178,10 @@ Puppet::Face.define(:ca, '0.1.0') do
178
178
  Puppet::SSL::Host.ca_location = :only
179
179
 
180
180
  begin
181
- ca.sign(host, options[:allow_dns_alt_names])
181
+ signing_options = options.select { |k,_|
182
+ [:allow_dns_alt_names, :allow_authorization_extensions].include?(k)
183
+ }
184
+ ca.sign(host, signing_options)
182
185
  rescue ArgumentError => e
183
186
  if e.to_s =~ /Could not find certificate request/
184
187
  e.to_s
@@ -77,6 +77,10 @@ Puppet::Indirector::Face.define(:certificate, '0.0.1') do
77
77
  # them. Otherwise, they will default to the config file setting iff this
78
78
  # cert is for the host we're running on.
79
79
 
80
+ unless Puppet::FileSystem.exist?(Puppet[:hostcert])
81
+ Puppet.push_context({:ssl_host => host})
82
+ end
83
+
80
84
  host.generate_certificate_request(:dns_alt_names => options[:dns_alt_names])
81
85
  end
82
86
  end
@@ -129,7 +133,9 @@ Puppet::Indirector::Face.define(:certificate, '0.0.1') do
129
133
  raise ArgumentError, "This process is not configured as a certificate authority"
130
134
  end
131
135
 
132
- ca.sign(name, options[:allow_dns_alt_names])
136
+ signing_options = {allow_dns_alt_names: options[:allow_dns_alt_names]}
137
+
138
+ ca.sign(name, signing_options)
133
139
  end
134
140
  end
135
141
  end
@@ -72,7 +72,7 @@ Puppet::Face.define(:epp, '0.0.1') do
72
72
  status &&= tmp
73
73
  else
74
74
  # This is not an error since a validate of all files in an empty
75
- # directry should not be treated as a failed validation.
75
+ # directory should not be treated as a failed validation.
76
76
  Puppet.notice "No template specified. No action taken"
77
77
  end
78
78
  end
@@ -115,10 +115,10 @@ Puppet::Face.define(:epp, '0.0.1') do
115
115
  If no arguments are given, the stdin is read (unless it is attached to a terminal)
116
116
 
117
117
  If multiple templates are given, they are separated with a header indicating the
118
- name of the template. This can be surpressed with the option --no-header.
119
- The option --[no-]header has no effect whe a single template is dumped.
118
+ name of the template. This can be suppressed with the option --no-header.
119
+ The option --[no-]header has no effect when a single template is dumped.
120
120
 
121
- When debugging the epp parser itself, it may be useful to surpress the valiation
121
+ When debugging the epp parser itself, it may be useful to suppress the validation
122
122
  step with the `--no-validate` option to observe what the parser produced from the
123
123
  given source.
124
124
 
@@ -238,7 +238,7 @@ Puppet::Face.define(:epp, '0.0.1') do
238
238
 
239
239
  When designing EPP templates, it is strongly recommended to define all template arguments
240
240
  in the template, and to give them in a hash when calling `epp` or `inline_epp` and to use
241
- as few global variables as possible, preferrably only the $facts hash. This makes templates
241
+ as few global variables as possible, preferably only the $facts hash. This makes templates
242
242
  more free standing and are easier to reuse, and to test.
243
243
  EOT
244
244
 
@@ -0,0 +1,64 @@
1
+ require 'puppet/face'
2
+ require 'puppet/generate/type'
3
+
4
+ # Create the Generate face
5
+ Puppet::Face.define(:generate, '0.1.0') do
6
+ copyright 'Puppet Inc.', 2016
7
+ license 'Apache 2 license; see COPYING'
8
+
9
+ summary 'Generates Puppet code from Ruby definitions.'
10
+
11
+ action(:types) do
12
+ summary 'Generates Puppet code for custom types'
13
+
14
+ description <<-'EOT'
15
+ Generates definitions for custom resource types using Puppet code.
16
+
17
+ Types defined in Puppet code can be used to isolate custom type definitions
18
+ between different environments.
19
+ EOT
20
+
21
+ examples <<-'EOT'
22
+ Generate Puppet type definitions for all custom resource types in the current environment:
23
+
24
+ $ puppet generate types
25
+
26
+ Generate Puppet type definitions for all custom resource types in the specified environment:
27
+
28
+ $ puppet generate types --environment development
29
+ EOT
30
+
31
+ option '--format <format>' do
32
+ summary 'The generation output format to use. Supported formats: pcore.'
33
+ default_to { 'pcore' }
34
+
35
+ before_action do |_, _, options|
36
+ raise ArgumentError, "'#{options[:format]}' is not a supported format for type generation." unless ['pcore'].include?(options[:format])
37
+ end
38
+ end
39
+
40
+ option '--force' do
41
+ summary 'Forces the generation of output files (skips up-to-date checks).'
42
+ default_to { false }
43
+ end
44
+
45
+ when_invoked do |options|
46
+ generator = Puppet::Generate::Type
47
+ inputs = generator.find_inputs(options[:format].to_sym)
48
+ environment = Puppet.lookup(:current_environment)
49
+
50
+ # get the common output directory (in <envroot>/.resource_types) - create it if it does not exists
51
+ # error if it exists and is not a directory
52
+ #
53
+ path_to_env = environment.configuration.path_to_env
54
+ outputdir = File.join(path_to_env, '.resource_types')
55
+ if Puppet::FileSystem.exist?(outputdir) && !Puppet::FileSystem.directory?(outputdir)
56
+ raise ArgumentError, "The output directory '#{outputdir}' exists and is not a directory"
57
+ end
58
+ Puppet::FileSystem::mkpath(outputdir)
59
+
60
+ generator.generate(inputs, outputdir, options[:force])
61
+ nil
62
+ end
63
+ end
64
+ end
@@ -77,25 +77,31 @@ Puppet::Face.define(:help, '0.0.1') do
77
77
 
78
78
  def render_application_help(applicationname)
79
79
  return Puppet::Application[applicationname].help
80
+ rescue StandardError, LoadError => detail
81
+ msg = <<-MSG
82
+ Could not load help for the application #{applicationname}.
83
+ Please check the error logs for more information.
84
+
85
+ Detail: "#{detail.message}"
86
+ MSG
87
+ fail ArgumentError, msg, detail.backtrace
80
88
  end
81
89
 
82
90
  def render_face_help(facename, actionname, version)
83
91
  face, action = load_face_help(facename, actionname, version)
84
92
  return template_for(face, action).result(binding)
85
- end
86
-
87
- def load_face_help(facename, actionname, version)
88
- begin
89
- face = Puppet::Face[facename.to_sym, version]
90
- rescue Puppet::Error => detail
91
- msg = <<-MSG
93
+ rescue StandardError, LoadError => detail
94
+ msg = <<-MSG
92
95
  Could not load help for the face #{facename}.
93
96
  Please check the error logs for more information.
94
97
 
95
98
  Detail: "#{detail.message}"
96
- MSG
97
- fail ArgumentError, msg, detail.backtrace
98
- end
99
+ MSG
100
+ fail ArgumentError, msg, detail.backtrace
101
+ end
102
+
103
+ def load_face_help(facename, actionname, version)
104
+ face = Puppet::Face[facename.to_sym, version]
99
105
  if actionname
100
106
  action = face.get_action(actionname.to_sym)
101
107
  if not action
@@ -141,7 +147,7 @@ Detail: "#{detail.message}"
141
147
  begin
142
148
  face = Puppet::Face[appname, :current]
143
149
  result << [appname, face.summary]
144
- rescue Puppet::Error
150
+ rescue StandardError, LoadError
145
151
  result << [ "! #{appname}", "! Subcommand unavailable due to error. Check error logs." ]
146
152
  end
147
153
  else
@@ -162,8 +168,8 @@ Detail: "#{detail.message}"
162
168
  return md[1]
163
169
  end
164
170
  end
165
- rescue StandardError
166
- result << [ "! #{appname}", "! Subcommand unavailable due to error. Check error logs." ]
171
+ rescue StandardError, LoadError
172
+ return "! Subcommand unavailable due to error. Check error logs."
167
173
  end
168
174
  return ''
169
175
  end
@@ -12,7 +12,7 @@ Puppet::Face.define(:man, '0.0.1') do
12
12
  description <<-EOT
13
13
  This subcommand displays manual pages for all Puppet subcommands. If the
14
14
  `ronn` gem (<https://github.com/rtomayko/ronn/>) is installed on your
15
- system, puppet man will display fully-formated man pages. If `ronn` is not
15
+ system, puppet man will display fully-formatted man pages. If `ronn` is not
16
16
  available, puppet man will display the raw (but human-readable) source text
17
17
  in a pager.
18
18
  EOT
@@ -1,5 +1,5 @@
1
1
  require 'facter'
2
2
 
3
3
  Puppet.features.add(:external_facts) {
4
- Facter.respond_to?(:search_external)
4
+ true
5
5
  }
@@ -1,4 +1,5 @@
1
1
  module Puppet::FileSystem
2
+ require 'puppet/util'
2
3
  require 'puppet/file_system/path_pattern'
3
4
  require 'puppet/file_system/file_impl'
4
5
  require 'puppet/file_system/memory_file'
@@ -329,6 +330,21 @@ module Puppet::FileSystem
329
330
  @impl.pathname(path)
330
331
  end
331
332
 
333
+ # Produces a string representation of the opaque path handle, with expansions
334
+ # performed on ~. For Windows, this means that C:\Users\Admini~1\AppData will
335
+ # be expanded to C:\Users\Administrator\AppData. On POSIX filesystems, the
336
+ # value ~ will be expanded to something like /Users/Foo
337
+ #
338
+ # This method exists primarlily to resolve a Ruby deficiency where
339
+ # File.expand_path doesn't handle ~ in each segment on a Windows path
340
+ #
341
+ # @param path [Object] a path handle produced by {#pathname}
342
+ # @return [String] a string representation of the path
343
+ #
344
+ def self.expand_path(path, dir_string = nil)
345
+ @impl.expand_path(path, dir_string)
346
+ end
347
+
332
348
  # Asserts that the given path is of the expected type produced by #pathname
333
349
  #
334
350
  # @raise [ArgumentError] when path is not of the expected type
@@ -22,6 +22,11 @@ class Puppet::FileSystem::FileImpl
22
22
  path.to_s
23
23
  end
24
24
 
25
+ def expand_path(path, dir_string = nil)
26
+ # ensure `nil` values behave like underlying File.expand_path
27
+ ::File.expand_path(path.nil? ? nil : path_string(path), dir_string)
28
+ end
29
+
25
30
  def open(path, mode, options, &block)
26
31
  ::File.open(path, options, mode, &block)
27
32
  end
@@ -3,6 +3,10 @@ class Puppet::FileSystem::MemoryImpl
3
3
  @files = files + all_children_of(files)
4
4
  end
5
5
 
6
+ def expand_path(path, dir_string = nil)
7
+ File.expand_path(path, dir_string)
8
+ end
9
+
6
10
  def exist?(path)
7
11
  path.exist?
8
12
  end
@@ -1,4 +1,5 @@
1
1
  require 'pathname'
2
+ require 'puppet/error'
2
3
 
3
4
  module Puppet::FileSystem
4
5
  class PathPattern
@@ -3,6 +3,25 @@ require 'puppet/util/windows'
3
3
 
4
4
  class Puppet::FileSystem::Windows < Puppet::FileSystem::Posix
5
5
 
6
+ def expand_path(path, dir_string = nil)
7
+ # ensure `nil` values behave like underlying File.expand_path
8
+ string_path = ::File.expand_path(path.nil? ? nil : path_string(path), dir_string)
9
+ # if no tildes, nothing to expand, no need to call Windows API, return original string
10
+ return string_path if !string_path.index('~')
11
+
12
+ begin
13
+ # no need to do existence check up front as GetLongPathName implies that check is performed
14
+ # and it should be the exception that files aren't actually present
15
+ string_path = Puppet::Util::Windows::File.get_long_pathname(string_path)
16
+ rescue Puppet::Util::Windows::Error => e
17
+ # preserve original File.expand_path behavior for file / path not found by returning string
18
+ raise if (e.code != Puppet::Util::Windows::File::ERROR_FILE_NOT_FOUND &&
19
+ e.code != Puppet::Util::Windows::File::ERROR_PATH_NOT_FOUND)
20
+ end
21
+
22
+ string_path
23
+ end
24
+
6
25
  def exist?(path)
7
26
  return Puppet::Util::Windows::File.exist?(path)
8
27
  end