puppet 6.16.0-x86-mingw32 → 6.20.0-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (458) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -16
  3. data/Gemfile +6 -2
  4. data/Gemfile.lock +40 -36
  5. data/README.md +3 -4
  6. data/Rakefile +4 -12
  7. data/lib/puppet/agent.rb +2 -2
  8. data/lib/puppet/agent/locker.rb +0 -7
  9. data/lib/puppet/application.rb +10 -6
  10. data/lib/puppet/application/agent.rb +23 -6
  11. data/lib/puppet/application/apply.rb +20 -21
  12. data/lib/puppet/application/device.rb +1 -0
  13. data/lib/puppet/application/doc.rb +1 -1
  14. data/lib/puppet/application/filebucket.rb +2 -2
  15. data/lib/puppet/application/lookup.rb +16 -4
  16. data/lib/puppet/application/script.rb +1 -0
  17. data/lib/puppet/application_support.rb +7 -0
  18. data/lib/puppet/configurer.rb +70 -20
  19. data/lib/puppet/configurer/downloader.rb +31 -10
  20. data/lib/puppet/confine.rb +2 -2
  21. data/lib/puppet/confine/any.rb +1 -1
  22. data/lib/puppet/defaults.rb +113 -46
  23. data/lib/puppet/environments.rb +84 -59
  24. data/lib/puppet/face/catalog.rb +1 -1
  25. data/lib/puppet/face/config.rb +56 -16
  26. data/lib/puppet/face/epp.rb +12 -2
  27. data/lib/puppet/face/facts.rb +60 -0
  28. data/lib/puppet/face/node.rb +3 -3
  29. data/lib/puppet/face/node/clean.rb +2 -2
  30. data/lib/puppet/face/status.rb +1 -1
  31. data/lib/puppet/feature/base.rb +1 -1
  32. data/lib/puppet/ffi/posix.rb +10 -0
  33. data/lib/puppet/ffi/posix/constants.rb +14 -0
  34. data/lib/puppet/ffi/posix/functions.rb +24 -0
  35. data/lib/puppet/file_bucket/dipper.rb +1 -1
  36. data/lib/puppet/file_serving/http_metadata.rb +13 -1
  37. data/lib/puppet/file_serving/metadata.rb +4 -1
  38. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  39. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  40. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  41. data/lib/puppet/file_serving/terminus_selector.rb +7 -8
  42. data/lib/puppet/file_system/file_impl.rb +4 -4
  43. data/lib/puppet/file_system/uniquefile.rb +8 -16
  44. data/lib/puppet/forge.rb +1 -1
  45. data/lib/puppet/forge/cache.rb +1 -1
  46. data/lib/puppet/forge/repository.rb +3 -7
  47. data/lib/puppet/functions/epp.rb +1 -0
  48. data/lib/puppet/functions/inline_epp.rb +1 -0
  49. data/lib/puppet/functions/lstrip.rb +4 -4
  50. data/lib/puppet/functions/new.rb +8 -3
  51. data/lib/puppet/functions/reverse_each.rb +1 -1
  52. data/lib/puppet/functions/rstrip.rb +4 -4
  53. data/lib/puppet/functions/step.rb +1 -1
  54. data/lib/puppet/functions/strip.rb +4 -4
  55. data/lib/puppet/gettext/config.rb +5 -5
  56. data/lib/puppet/gettext/module_translations.rb +4 -4
  57. data/lib/puppet/http.rb +1 -0
  58. data/lib/puppet/http/client.rb +6 -1
  59. data/lib/puppet/http/redirector.rb +9 -7
  60. data/lib/puppet/http/resolver.rb +5 -8
  61. data/lib/puppet/http/resolver/server_list.rb +18 -36
  62. data/lib/puppet/http/resolver/settings.rb +4 -4
  63. data/lib/puppet/http/resolver/srv.rb +5 -5
  64. data/lib/puppet/http/response.rb +19 -0
  65. data/lib/puppet/http/service.rb +3 -1
  66. data/lib/puppet/http/service/compiler.rb +1 -1
  67. data/lib/puppet/http/service/file_server.rb +1 -1
  68. data/lib/puppet/http/service/puppetserver.rb +39 -0
  69. data/lib/puppet/http/session.rb +5 -4
  70. data/lib/puppet/indirector.rb +1 -1
  71. data/lib/puppet/indirector/catalog/compiler.rb +1 -1
  72. data/lib/puppet/indirector/exec.rb +1 -1
  73. data/lib/puppet/indirector/fact_search.rb +60 -0
  74. data/lib/puppet/indirector/facts/facter.rb +3 -3
  75. data/lib/puppet/indirector/facts/json.rb +27 -0
  76. data/lib/puppet/indirector/facts/yaml.rb +4 -59
  77. data/lib/puppet/indirector/file_content/rest.rb +1 -1
  78. data/lib/puppet/indirector/file_metadata/http.rb +25 -5
  79. data/lib/puppet/indirector/file_metadata/rest.rb +2 -2
  80. data/lib/puppet/indirector/hiera.rb +4 -0
  81. data/lib/puppet/indirector/indirection.rb +1 -1
  82. data/lib/puppet/indirector/json.rb +5 -1
  83. data/lib/puppet/indirector/msgpack.rb +1 -1
  84. data/lib/puppet/indirector/node/json.rb +8 -0
  85. data/lib/puppet/indirector/report/json.rb +34 -0
  86. data/lib/puppet/indirector/report/processor.rb +2 -2
  87. data/lib/puppet/indirector/request.rb +5 -5
  88. data/lib/puppet/indirector/yaml.rb +1 -1
  89. data/lib/puppet/module.rb +1 -2
  90. data/lib/puppet/module_tool/applications/installer.rb +48 -2
  91. data/lib/puppet/module_tool/errors/shared.rb +17 -2
  92. data/lib/puppet/network/format_support.rb +2 -2
  93. data/lib/puppet/network/formats.rb +2 -1
  94. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  95. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  96. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  97. data/lib/puppet/network/http/connection_adapter.rb +6 -4
  98. data/lib/puppet/network/http/route.rb +2 -2
  99. data/lib/puppet/node/environment.rb +12 -5
  100. data/lib/puppet/node/facts.rb +17 -0
  101. data/lib/puppet/pal/pal_impl.rb +90 -13
  102. data/lib/puppet/parameter.rb +1 -1
  103. data/lib/puppet/parser/ast/leaf.rb +7 -6
  104. data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
  105. data/lib/puppet/parser/compiler.rb +1 -1
  106. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  107. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  108. data/lib/puppet/parser/environment_compiler.rb +4 -1
  109. data/lib/puppet/parser/functions.rb +21 -17
  110. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  111. data/lib/puppet/parser/resource.rb +3 -2
  112. data/lib/puppet/parser/resource/param.rb +6 -0
  113. data/lib/puppet/parser/templatewrapper.rb +1 -1
  114. data/lib/puppet/parser/type_loader.rb +2 -2
  115. data/lib/puppet/pops/adaptable.rb +7 -13
  116. data/lib/puppet/pops/adapters.rb +8 -4
  117. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  118. data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
  119. data/lib/puppet/pops/evaluator/evaluator_impl.rb +27 -8
  120. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  121. data/lib/puppet/pops/issues.rb +5 -0
  122. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  123. data/lib/puppet/pops/loaders.rb +18 -11
  124. data/lib/puppet/pops/lookup/context.rb +1 -1
  125. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  126. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  127. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  128. data/lib/puppet/pops/types/iterable.rb +34 -8
  129. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  130. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  131. data/lib/puppet/pops/validation/checker4_0.rb +29 -15
  132. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  133. data/lib/puppet/provider/file/windows.rb +1 -1
  134. data/lib/puppet/provider/package/apt.rb +38 -0
  135. data/lib/puppet/provider/package/aptitude.rb +1 -1
  136. data/lib/puppet/provider/package/dpkg.rb +1 -1
  137. data/lib/puppet/provider/package/gem.rb +4 -2
  138. data/lib/puppet/provider/package/pip2.rb +17 -0
  139. data/lib/puppet/provider/package/puppet_gem.rb +5 -0
  140. data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
  141. data/lib/puppet/provider/package/yum.rb +2 -1
  142. data/lib/puppet/provider/package/zypper.rb +3 -0
  143. data/lib/puppet/provider/service/windows.rb +23 -7
  144. data/lib/puppet/provider/user/aix.rb +3 -3
  145. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  146. data/lib/puppet/provider/user/useradd.rb +11 -4
  147. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  148. data/lib/puppet/reference/configuration.rb +6 -5
  149. data/lib/puppet/reports/http.rb +2 -0
  150. data/lib/puppet/resource.rb +2 -1
  151. data/lib/puppet/resource/type.rb +10 -1
  152. data/lib/puppet/rest/route.rb +2 -2
  153. data/lib/puppet/settings.rb +63 -21
  154. data/lib/puppet/settings/alias_setting.rb +37 -0
  155. data/lib/puppet/settings/base_setting.rb +26 -2
  156. data/lib/puppet/ssl/ssl_context.rb +2 -2
  157. data/lib/puppet/ssl/ssl_provider.rb +20 -1
  158. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  159. data/lib/puppet/test/test_helper.rb +18 -13
  160. data/lib/puppet/transaction.rb +2 -2
  161. data/lib/puppet/transaction/persistence.rb +1 -1
  162. data/lib/puppet/transaction/report.rb +12 -8
  163. data/lib/puppet/trusted_external.rb +29 -1
  164. data/lib/puppet/type.rb +15 -7
  165. data/lib/puppet/type/file.rb +40 -15
  166. data/lib/puppet/type/file/checksum.rb +4 -4
  167. data/lib/puppet/type/file/source.rb +32 -12
  168. data/lib/puppet/type/filebucket.rb +1 -1
  169. data/lib/puppet/type/notify.rb +2 -2
  170. data/lib/puppet/type/service.rb +53 -0
  171. data/lib/puppet/type/user.rb +18 -3
  172. data/lib/puppet/util.rb +41 -3
  173. data/lib/puppet/util/autoload.rb +10 -15
  174. data/lib/puppet/util/character_encoding.rb +9 -5
  175. data/lib/puppet/util/checksums.rb +19 -4
  176. data/lib/puppet/util/connection.rb +8 -8
  177. data/lib/puppet/util/execution.rb +2 -2
  178. data/lib/puppet/util/fact_dif.rb +62 -0
  179. data/lib/puppet/util/fileparsing.rb +2 -2
  180. data/lib/puppet/util/posix.rb +54 -5
  181. data/lib/puppet/util/provider_features.rb +1 -1
  182. data/lib/puppet/util/reference.rb +1 -1
  183. data/lib/puppet/util/rubygems.rb +5 -1
  184. data/lib/puppet/util/run_mode.rb +5 -1
  185. data/lib/puppet/util/windows.rb +1 -0
  186. data/lib/puppet/util/windows/api_types.rb +60 -33
  187. data/lib/puppet/util/windows/eventlog.rb +1 -6
  188. data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
  189. data/lib/puppet/util/windows/principal.rb +8 -6
  190. data/lib/puppet/util/windows/registry.rb +11 -11
  191. data/lib/puppet/util/windows/security.rb +4 -4
  192. data/lib/puppet/util/windows/service.rb +43 -26
  193. data/lib/puppet/util/windows/user.rb +242 -8
  194. data/lib/puppet/version.rb +1 -1
  195. data/locales/puppet.pot +501 -443
  196. data/man/man5/puppet.conf.5 +70 -24
  197. data/man/man8/puppet-agent.8 +8 -5
  198. data/man/man8/puppet-apply.8 +2 -2
  199. data/man/man8/puppet-catalog.8 +1 -1
  200. data/man/man8/puppet-config.8 +6 -6
  201. data/man/man8/puppet-describe.8 +1 -1
  202. data/man/man8/puppet-device.8 +2 -2
  203. data/man/man8/puppet-doc.8 +1 -1
  204. data/man/man8/puppet-epp.8 +1 -1
  205. data/man/man8/puppet-facts.8 +32 -1
  206. data/man/man8/puppet-filebucket.8 +3 -3
  207. data/man/man8/puppet-generate.8 +1 -1
  208. data/man/man8/puppet-help.8 +1 -1
  209. data/man/man8/puppet-key.8 +1 -1
  210. data/man/man8/puppet-lookup.8 +2 -2
  211. data/man/man8/puppet-man.8 +1 -1
  212. data/man/man8/puppet-module.8 +1 -1
  213. data/man/man8/puppet-node.8 +7 -4
  214. data/man/man8/puppet-parser.8 +1 -1
  215. data/man/man8/puppet-plugin.8 +1 -1
  216. data/man/man8/puppet-report.8 +4 -1
  217. data/man/man8/puppet-resource.8 +1 -1
  218. data/man/man8/puppet-script.8 +2 -2
  219. data/man/man8/puppet-ssl.8 +1 -1
  220. data/man/man8/puppet-status.8 +2 -2
  221. data/man/man8/puppet.8 +2 -2
  222. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
  223. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  224. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  225. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  226. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  227. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  228. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
  229. data/spec/integration/application/agent_spec.rb +263 -54
  230. data/spec/integration/application/apply_spec.rb +168 -149
  231. data/spec/integration/application/doc_spec.rb +16 -6
  232. data/spec/integration/application/filebucket_spec.rb +70 -21
  233. data/spec/integration/application/help_spec.rb +42 -0
  234. data/spec/integration/application/lookup_spec.rb +13 -0
  235. data/spec/integration/application/module_spec.rb +68 -0
  236. data/spec/integration/application/plugin_spec.rb +53 -3
  237. data/spec/integration/configurer_spec.rb +14 -0
  238. data/spec/integration/data_binding_spec.rb +82 -0
  239. data/spec/integration/defaults_spec.rb +20 -3
  240. data/spec/integration/directory_environments_spec.rb +17 -17
  241. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  242. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  243. data/spec/integration/network/http_pool_spec.rb +26 -9
  244. data/spec/integration/node/environment_spec.rb +1 -1
  245. data/spec/integration/parser/compiler_spec.rb +11 -0
  246. data/spec/integration/resource/type_collection_spec.rb +2 -6
  247. data/spec/integration/transaction_spec.rb +4 -9
  248. data/spec/integration/type/file_spec.rb +1 -1
  249. data/spec/integration/util/execution_spec.rb +22 -0
  250. data/spec/integration/util/windows/adsi_spec.rb +5 -3
  251. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
  252. data/spec/integration/util/windows/process_spec.rb +26 -32
  253. data/spec/integration/util/windows/registry_spec.rb +7 -17
  254. data/spec/integration/util/windows/user_spec.rb +47 -5
  255. data/spec/integration/util_spec.rb +7 -33
  256. data/spec/lib/puppet_spec/matchers.rb +0 -80
  257. data/spec/lib/puppet_spec/puppetserver.rb +8 -0
  258. data/spec/lib/puppet_spec/settings.rb +6 -1
  259. data/spec/shared_contexts/types_setup.rb +2 -0
  260. data/spec/spec_helper.rb +1 -4
  261. data/spec/unit/agent_spec.rb +8 -6
  262. data/spec/unit/application/agent_spec.rb +3 -5
  263. data/spec/unit/application/config_spec.rb +224 -4
  264. data/spec/unit/application/doc_spec.rb +2 -2
  265. data/spec/unit/application/face_base_spec.rb +6 -4
  266. data/spec/unit/application/facts_spec.rb +41 -10
  267. data/spec/unit/application/filebucket_spec.rb +0 -2
  268. data/spec/unit/application/man_spec.rb +52 -0
  269. data/spec/unit/application/resource_spec.rb +3 -1
  270. data/spec/unit/application/ssl_spec.rb +15 -2
  271. data/spec/unit/application_spec.rb +60 -13
  272. data/spec/unit/configurer/downloader_spec.rb +10 -0
  273. data/spec/unit/configurer/fact_handler_spec.rb +4 -4
  274. data/spec/unit/configurer_spec.rb +86 -37
  275. data/spec/unit/confine/feature_spec.rb +1 -1
  276. data/spec/unit/confine_spec.rb +10 -3
  277. data/spec/unit/context/trusted_information_spec.rb +10 -4
  278. data/spec/unit/defaults_spec.rb +20 -1
  279. data/spec/unit/environments_spec.rb +176 -32
  280. data/spec/unit/face/config_spec.rb +65 -12
  281. data/spec/unit/face/node_spec.rb +2 -13
  282. data/spec/unit/file_serving/configuration/parser_spec.rb +0 -1
  283. data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
  284. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  285. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  286. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  287. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  288. data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
  289. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
  290. data/spec/unit/file_system/uniquefile_spec.rb +18 -0
  291. data/spec/unit/file_system_spec.rb +1 -2
  292. data/spec/unit/forge/module_release_spec.rb +2 -7
  293. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  294. data/spec/unit/http/client_spec.rb +64 -9
  295. data/spec/unit/http/resolver_spec.rb +24 -5
  296. data/spec/unit/http/response_spec.rb +6 -0
  297. data/spec/unit/http/service/ca_spec.rb +2 -3
  298. data/spec/unit/http/service/compiler_spec.rb +51 -3
  299. data/spec/unit/http/service/file_server_spec.rb +2 -3
  300. data/spec/unit/http/service/puppetserver_spec.rb +82 -0
  301. data/spec/unit/http/service/report_spec.rb +2 -3
  302. data/spec/unit/http/service_spec.rb +1 -2
  303. data/spec/unit/http/session_spec.rb +8 -21
  304. data/spec/unit/indirector/catalog/json_spec.rb +1 -1
  305. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  306. data/spec/unit/indirector/face_spec.rb +0 -1
  307. data/spec/unit/indirector/facts/facter_spec.rb +0 -1
  308. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  309. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  310. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
  311. data/spec/unit/indirector/file_metadata/http_spec.rb +27 -0
  312. data/spec/unit/indirector/indirection_spec.rb +8 -12
  313. data/spec/unit/indirector/json_spec.rb +8 -8
  314. data/spec/unit/indirector/key/file_spec.rb +0 -1
  315. data/spec/unit/indirector/msgpack_spec.rb +8 -8
  316. data/spec/unit/indirector/node/json_spec.rb +33 -0
  317. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  318. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  319. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  320. data/spec/unit/indirector/request_spec.rb +5 -5
  321. data/spec/unit/indirector/rest_spec.rb +1 -1
  322. data/spec/unit/indirector/status/rest_spec.rb +1 -1
  323. data/spec/unit/indirector/yaml_spec.rb +7 -7
  324. data/spec/unit/indirector_spec.rb +2 -2
  325. data/spec/unit/interface_spec.rb +3 -3
  326. data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
  327. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  328. data/spec/unit/network/authconfig_spec.rb +0 -3
  329. data/spec/unit/network/format_support_spec.rb +3 -2
  330. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -10
  331. data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
  332. data/spec/unit/network/http/connection_spec.rb +42 -32
  333. data/spec/unit/network/http/handler_spec.rb +0 -5
  334. data/spec/unit/node/environment_spec.rb +18 -1
  335. data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
  336. data/spec/unit/parser/compiler_spec.rb +3 -19
  337. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  338. data/spec/unit/parser/resource_spec.rb +14 -8
  339. data/spec/unit/parser/scope_spec.rb +1 -1
  340. data/spec/unit/parser/templatewrapper_spec.rb +4 -3
  341. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
  342. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
  343. data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
  344. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  345. data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
  346. data/spec/unit/property_spec.rb +1 -0
  347. data/spec/unit/provider/exec_spec.rb +4 -3
  348. data/spec/unit/provider/nameservice_spec.rb +66 -65
  349. data/spec/unit/provider/package/apt_spec.rb +76 -3
  350. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  351. data/spec/unit/provider/package/base_spec.rb +6 -5
  352. data/spec/unit/provider/package/dpkg_spec.rb +22 -7
  353. data/spec/unit/provider/package/openbsd_spec.rb +2 -0
  354. data/spec/unit/provider/package/pacman_spec.rb +18 -12
  355. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  356. data/spec/unit/provider/package/pip_spec.rb +6 -11
  357. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
  358. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
  359. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  360. data/spec/unit/provider/package/yum_spec.rb +31 -0
  361. data/spec/unit/provider/package/zypper_spec.rb +14 -0
  362. data/spec/unit/provider/service/base_spec.rb +2 -4
  363. data/spec/unit/provider/service/bsd_spec.rb +5 -1
  364. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  365. data/spec/unit/provider/service/debian_spec.rb +3 -5
  366. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  367. data/spec/unit/provider/service/gentoo_spec.rb +4 -5
  368. data/spec/unit/provider/service/init_spec.rb +45 -5
  369. data/spec/unit/provider/service/launchd_spec.rb +5 -6
  370. data/spec/unit/provider/service/openrc_spec.rb +4 -5
  371. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  372. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  373. data/spec/unit/provider/service/runit_spec.rb +2 -1
  374. data/spec/unit/provider/service/smf_spec.rb +1 -1
  375. data/spec/unit/provider/service/src_spec.rb +3 -5
  376. data/spec/unit/provider/service/systemd_spec.rb +3 -6
  377. data/spec/unit/provider/service/upstart_spec.rb +4 -5
  378. data/spec/unit/provider/service/windows_spec.rb +50 -14
  379. data/spec/unit/provider/user/aix_spec.rb +5 -0
  380. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  381. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  382. data/spec/unit/provider/user/pw_spec.rb +2 -0
  383. data/spec/unit/provider/user/useradd_spec.rb +23 -16
  384. data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
  385. data/spec/unit/provider_spec.rb +8 -10
  386. data/spec/unit/puppet_pal_2pec.rb +40 -0
  387. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  388. data/spec/unit/reports/store_spec.rb +17 -13
  389. data/spec/unit/resource/capability_finder_spec.rb +6 -1
  390. data/spec/unit/resource/type_spec.rb +1 -1
  391. data/spec/unit/resource_spec.rb +14 -13
  392. data/spec/unit/rest/route_spec.rb +4 -4
  393. data/spec/unit/settings_spec.rb +576 -239
  394. data/spec/unit/ssl/base_spec.rb +0 -1
  395. data/spec/unit/ssl/host_spec.rb +0 -5
  396. data/spec/unit/ssl/ssl_provider_spec.rb +82 -50
  397. data/spec/unit/test/test_helper_spec.rb +17 -0
  398. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
  399. data/spec/unit/transaction/event_manager_spec.rb +14 -11
  400. data/spec/unit/transaction/persistence_spec.rb +15 -0
  401. data/spec/unit/transaction/report_spec.rb +3 -1
  402. data/spec/unit/transaction_spec.rb +13 -4
  403. data/spec/unit/type/file/content_spec.rb +0 -1
  404. data/spec/unit/type/file/selinux_spec.rb +0 -2
  405. data/spec/unit/type/file/source_spec.rb +4 -4
  406. data/spec/unit/type/file_spec.rb +122 -102
  407. data/spec/unit/type/filebucket_spec.rb +1 -1
  408. data/spec/unit/type/group_spec.rb +13 -6
  409. data/spec/unit/type/resources_spec.rb +7 -7
  410. data/spec/unit/type/service_spec.rb +210 -1
  411. data/spec/unit/type/tidy_spec.rb +0 -1
  412. data/spec/unit/type/user_spec.rb +31 -2
  413. data/spec/unit/type_spec.rb +52 -2
  414. data/spec/unit/util/at_fork_spec.rb +2 -2
  415. data/spec/unit/util/autoload_spec.rb +5 -1
  416. data/spec/unit/util/backups_spec.rb +1 -2
  417. data/spec/unit/util/character_encoding_spec.rb +4 -4
  418. data/spec/unit/util/checksums_spec.rb +16 -0
  419. data/spec/unit/util/command_line_spec.rb +11 -6
  420. data/spec/unit/util/execution_spec.rb +15 -11
  421. data/spec/unit/util/inifile_spec.rb +6 -14
  422. data/spec/unit/util/log_spec.rb +8 -7
  423. data/spec/unit/util/logging_spec.rb +3 -3
  424. data/spec/unit/util/posix_spec.rb +363 -15
  425. data/spec/unit/util/rubygems_spec.rb +2 -2
  426. data/spec/unit/util/run_mode_spec.rb +6 -6
  427. data/spec/unit/util/selinux_spec.rb +76 -52
  428. data/spec/unit/util/storage_spec.rb +3 -1
  429. data/spec/unit/util/suidmanager_spec.rb +44 -41
  430. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  431. data/spec/unit/util/windows/service_spec.rb +4 -4
  432. data/spec/unit/util_spec.rb +16 -9
  433. data/spec/unit/x509/cert_provider_spec.rb +1 -1
  434. metadata +52 -53
  435. data/spec/integration/faces/config_spec.rb +0 -91
  436. data/spec/integration/faces/documentation_spec.rb +0 -57
  437. data/spec/integration/file_bucket/file_spec.rb +0 -50
  438. data/spec/integration/file_serving/content_spec.rb +0 -7
  439. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  440. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  441. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  442. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  443. data/spec/integration/module_tool/forge_spec.rb +0 -51
  444. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  445. data/spec/integration/provider/service/init_spec.rb +0 -48
  446. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  447. data/spec/integration/provider/service/windows_spec.rb +0 -50
  448. data/spec/integration/reference/providers_spec.rb +0 -21
  449. data/spec/integration/reports_spec.rb +0 -13
  450. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  451. data/spec/integration/ssl/host_spec.rb +0 -72
  452. data/spec/integration/ssl/key_spec.rb +0 -99
  453. data/spec/integration/test/test_helper_spec.rb +0 -31
  454. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  455. data/spec/unit/face/catalog_spec.rb +0 -6
  456. data/spec/unit/face/man_spec.rb +0 -25
  457. data/spec/unit/face/module_spec.rb +0 -3
  458. data/spec/unit/man_spec.rb +0 -31
@@ -46,6 +46,8 @@ describe Puppet::Type.type(:package).provider(:openbsd) do
46
46
  allow(described_class).to receive(:command).with(:pkginfo).and_return('/bin/pkg_info')
47
47
  allow(described_class).to receive(:command).with(:pkgadd).and_return('/bin/pkg_add')
48
48
  allow(described_class).to receive(:command).with(:pkgdelete).and_return('/bin/pkg_delete')
49
+
50
+ allow(Puppet::FileSystem).to receive(:exist?)
49
51
  end
50
52
 
51
53
  context "#instances" do
@@ -32,10 +32,12 @@ describe Puppet::Type.type(:package).provider(:pacman) do
32
32
  end
33
33
 
34
34
  it "should call yaourt to install the right package quietly when yaourt is installed" do
35
- allow(described_class).to receive(:yaourt?).and_return(true)
36
- args = ['--noconfirm', '--needed', '--noprogressbar', '-S', resource[:name]]
37
- expect(provider).to receive(:yaourt).at_least(:once).with(*args).and_return('')
38
- provider.install
35
+ without_partial_double_verification do
36
+ allow(described_class).to receive(:yaourt?).and_return(true)
37
+ args = ['--noconfirm', '--needed', '--noprogressbar', '-S', resource[:name]]
38
+ expect(provider).to receive(:yaourt).at_least(:once).with(*args).and_return('')
39
+ provider.install
40
+ end
39
41
  end
40
42
 
41
43
  it "should raise an Puppet::Error if the installation failed" do
@@ -74,10 +76,12 @@ describe Puppet::Type.type(:package).provider(:pacman) do
74
76
  end
75
77
 
76
78
  it "should call yaourt to install the right package quietly when yaourt is installed" do
77
- expect(described_class).to receive(:yaourt?).and_return(true)
78
- args = ['--noconfirm', '--needed', '--noprogressbar', '-x', '--arg=value', '-S', resource[:name]]
79
- expect(provider).to receive(:yaourt).at_least(:once).with(*args).and_return('')
80
- provider.install
79
+ without_partial_double_verification do
80
+ expect(described_class).to receive(:yaourt?).and_return(true)
81
+ args = ['--noconfirm', '--needed', '--noprogressbar', '-x', '--arg=value', '-S', resource[:name]]
82
+ expect(provider).to receive(:yaourt).at_least(:once).with(*args).and_return('')
83
+ provider.install
84
+ end
81
85
  end
82
86
  end
83
87
 
@@ -172,10 +176,12 @@ describe Puppet::Type.type(:package).provider(:pacman) do
172
176
  end
173
177
 
174
178
  it "should call yaourt to remove the right package quietly" do
175
- allow(described_class).to receive(:yaourt?).and_return(true)
176
- args = ["--noconfirm", "--noprogressbar", "-R", resource[:name]]
177
- expect(provider).to receive(:yaourt).with(*args)
178
- provider.uninstall
179
+ without_partial_double_verification do
180
+ allow(described_class).to receive(:yaourt?).and_return(true)
181
+ args = ["--noconfirm", "--noprogressbar", "-R", resource[:name]]
182
+ expect(provider).to receive(:yaourt).with(*args)
183
+ provider.uninstall
184
+ end
179
185
  end
180
186
 
181
187
  it "adds any uninstall_options" do
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe Puppet::Type.type(:package).provider(:pip2) do
4
+
5
+ it { is_expected.to be_installable }
6
+ it { is_expected.to be_uninstallable }
7
+ it { is_expected.to be_upgradeable }
8
+ it { is_expected.to be_versionable }
9
+ it { is_expected.to be_install_options }
10
+ it { is_expected.to be_targetable }
11
+
12
+ it "should inherit most things from pip provider" do
13
+ expect(described_class < Puppet::Type.type(:package).provider(:pip))
14
+ end
15
+
16
+ it "should use pip2 command" do
17
+ expect(described_class.cmd).to eq(["pip2"])
18
+ end
19
+
20
+ context 'calculated specificity' do
21
+ context 'when is not defaultfor' do
22
+ subject { described_class.specificity }
23
+ it { is_expected.to eql 1 }
24
+ end
25
+
26
+ context 'when is defaultfor' do
27
+ let(:os) { Facter.value(:operatingsystem) }
28
+ subject do
29
+ described_class.defaultfor(operatingsystem: os)
30
+ described_class.specificity
31
+ end
32
+ it { is_expected.to be > 100 }
33
+ end
34
+ end
35
+
36
+ end
@@ -14,9 +14,8 @@ describe Puppet::Type.type(:package).provider(:pip) do
14
14
  it { is_expected.to be_version_ranges }
15
15
 
16
16
  before do
17
- @resource = Puppet::Resource.new(:package, "fake_package")
18
- allow(@resource).to receive(:original_parameters).and_return({})
19
- @provider = described_class.new(@resource)
17
+ @resource = Puppet::Type.type(:package).new(name: "fake_package", provider: :pip)
18
+ @provider = @resource.provider
20
19
  @client = double('client')
21
20
  allow(@client).to receive(:call).with('package_releases', 'real_package').and_return(["1.3", "1.2.5", "1.2.4"])
22
21
  allow(@client).to receive(:call).with('package_releases', 'fake_package').and_return([])
@@ -335,7 +334,6 @@ describe Puppet::Type.type(:package).provider(:pip) do
335
334
 
336
335
  it "should install" do
337
336
  @resource[:ensure] = :installed
338
- @resource[:source] = nil
339
337
  expect(@provider).to receive(:execute).with(["/fake/bin/pip", ["install", "-q", "fake_package"]])
340
338
  @provider.install
341
339
  end
@@ -368,7 +366,6 @@ describe Puppet::Type.type(:package).provider(:pip) do
368
366
 
369
367
  it "should install a particular version" do
370
368
  @resource[:ensure] = "0.0.0"
371
- @resource[:source] = nil
372
369
  # TJK
373
370
  expect(@provider).to receive(:execute).with(["/fake/bin/pip", ["install", "-q", "fake_package==0.0.0"]])
374
371
  @provider.install
@@ -376,7 +373,6 @@ describe Puppet::Type.type(:package).provider(:pip) do
376
373
 
377
374
  it "should upgrade" do
378
375
  @resource[:ensure] = :latest
379
- @resource[:source] = nil
380
376
  # TJK
381
377
  expect(@provider).to receive(:execute).with(["/fake/bin/pip", ["install", "-q", "--upgrade", "fake_package"]])
382
378
  @provider.install
@@ -384,7 +380,6 @@ describe Puppet::Type.type(:package).provider(:pip) do
384
380
 
385
381
  it "should handle install options" do
386
382
  @resource[:ensure] = :installed
387
- @resource[:source] = nil
388
383
  @resource[:install_options] = [{"--timeout" => "10"}, "--no-index"]
389
384
  expect(@provider).to receive(:execute).with(["/fake/bin/pip", ["install", "-q", "--timeout=10", "--no-index", "fake_package"]])
390
385
  @provider.install
@@ -415,7 +410,7 @@ describe Puppet::Type.type(:package).provider(:pip) do
415
410
  let(:pip) { '/fake/bin/pip' }
416
411
 
417
412
  it "should look up version if pip is present" do
418
- allow(described_class).to receive(:pip_cmd).and_return(pip)
413
+ allow(described_class).to receive(:cmd).and_return(pip)
419
414
  process = ['pip 8.0.2 from /usr/local/lib/python2.7/dist-packages (python 2.7)']
420
415
  allow(described_class).to receive(:execpipe).with([pip, '--version']).and_yield(process)
421
416
 
@@ -423,7 +418,7 @@ describe Puppet::Type.type(:package).provider(:pip) do
423
418
  end
424
419
 
425
420
  it "parses multiple lines of output" do
426
- allow(described_class).to receive(:pip_cmd).and_return(pip)
421
+ allow(described_class).to receive(:cmd).and_return(pip)
427
422
  process = [
428
423
  "/usr/local/lib/python2.7/dist-packages/urllib3/contrib/socks.py:37: DependencyWarning: SOCKS support in urllib3 requires the installation of optional dependencies: specifically, PySocks. For more information, see https://urllib3.readthedocs.io/en/latest/contrib.html#socks-proxies",
429
424
  " DependencyWarning",
@@ -435,7 +430,7 @@ describe Puppet::Type.type(:package).provider(:pip) do
435
430
  end
436
431
 
437
432
  it "raises if there isn't a version string" do
438
- allow(described_class).to receive(:pip_cmd).and_return(pip)
433
+ allow(described_class).to receive(:cmd).and_return(pip)
439
434
  allow(described_class).to receive(:execpipe).with([pip, '--version']).and_yield([""])
440
435
  expect {
441
436
  described_class.pip_version(pip)
@@ -444,7 +439,7 @@ describe Puppet::Type.type(:package).provider(:pip) do
444
439
 
445
440
  it "quotes commands with spaces" do
446
441
  pip = 'C:\Program Files\Python27\Scripts\pip.exe'
447
- allow(described_class).to receive(:pip_cmd).and_return(pip)
442
+ allow(described_class).to receive(:cmd).and_return(pip)
448
443
  process = ["pip 18.1 from c:\program files\python27\lib\site-packages\pip (python 2.7)\r\n"]
449
444
  allow(described_class).to receive(:execpipe).with(["\"#{pip}\"", '--version']).and_yield(process)
450
445
 
@@ -8,10 +8,6 @@ describe Puppet::Type.type(:package).provider(:pkgdmg) do
8
8
  it { is_expected.not_to be_uninstallable }
9
9
 
10
10
  describe "when installing it should fail when" do
11
- before :each do
12
- expect(Puppet::Util).not_to receive(:execute)
13
- end
14
-
15
11
  it "no source is specified" do
16
12
  expect { provider.install }.to raise_error(Puppet::Error, /must specify a package source/)
17
13
  end
@@ -20,7 +20,10 @@ describe Puppet::Type.type(:package).provider(:puppet_gem) do
20
20
  let(:provider_gem_cmd) { '/opt/puppetlabs/puppet/bin/gem' }
21
21
  end
22
22
 
23
- let(:execute_options) { {:failonfail => true, :combine => true, :custom_environment => {"HOME"=>ENV["HOME"]}} }
23
+ custom_environment = {"HOME"=>ENV["HOME"]}
24
+ custom_environment['PKG_CONFIG_PATH'] = '/opt/puppetlabs/puppet/lib/pkgconfig' unless Puppet::Util::Platform.windows?
25
+
26
+ let(:execute_options) { {:failonfail => true, :combine => true, :custom_environment => custom_environment} }
24
27
 
25
28
  before :each do
26
29
  resource.provider = provider
@@ -0,0 +1,137 @@
1
+ require 'spec_helper'
2
+
3
+ describe Puppet::Type.type(:package).provider(:puppetserver_gem) do
4
+ let(:resource) do
5
+ Puppet::Type.type(:package).new(
6
+ name: 'myresource',
7
+ ensure: :installed
8
+ )
9
+ end
10
+
11
+ let(:provider) do
12
+ provider = described_class.new
13
+ provider.resource = resource
14
+ provider
15
+ end
16
+
17
+ let(:provider_gem_cmd) { '/opt/puppetlabs/bin/puppetserver' }
18
+
19
+ custom_environment = { HOME: ENV['HOME'] }
20
+
21
+ let(:execute_options) { { failonfail: true, combine: true, custom_environment: custom_environment } }
22
+
23
+ before :each do
24
+ resource.provider = provider
25
+ allow(Puppet::Util).to receive(:which).with(provider_gem_cmd).and_return(provider_gem_cmd)
26
+ end
27
+
28
+ describe "#install" do
29
+ it "uses the path to the gem command" do
30
+ allow(described_class).to receive(:validate_command).with(provider_gem_cmd)
31
+ expect(Puppet::Util::Execution).to receive(:execute).with(be_a(Array), execute_options) { |args| expect(args[0]).to eq(provider_gem_cmd) }.and_return('')
32
+ provider.install
33
+ end
34
+
35
+ it "appends version if given" do
36
+ resource[:ensure] = ['1.2.1']
37
+ expect(described_class).to receive(:puppetservercmd).with(%w{gem install -v 1.2.1 --no-document myresource}).and_return('')
38
+ provider.install
39
+ end
40
+
41
+ context "with install_options" do
42
+ it "does not append the parameter by default" do
43
+ expect(described_class).to receive(:puppetservercmd).with(%w{gem install --no-document myresource}).and_return('')
44
+ provider.install
45
+ end
46
+
47
+ it "allows setting the parameter" do
48
+ resource[:install_options] = [ '--force', {'--bindir' => '/usr/bin' } ]
49
+ expect(described_class).to receive(:puppetservercmd).with(%w{gem install --force --bindir=/usr/bin --no-document myresource}).and_return('')
50
+ provider.install
51
+ end
52
+ end
53
+
54
+ context "with source" do
55
+ it "correctly sets http source" do
56
+ resource[:source] = 'http://rubygems.com'
57
+ expect(described_class).to receive(:puppetservercmd).with(%w{gem install --no-document --source http://rubygems.com myresource}).and_return('')
58
+ provider.install
59
+ end
60
+
61
+ it "correctly sets local file source" do
62
+ resource[:source] = 'paint-2.2.0.gem'
63
+ expect(described_class).to receive(:puppetservercmd).with(%w{gem install --no-document paint-2.2.0.gem}).and_return('')
64
+ provider.install
65
+ end
66
+
67
+ it "correctly sets local file source with URI scheme" do
68
+ resource[:source] = 'file:///root/paint-2.2.0.gem'
69
+ expect(described_class).to receive(:puppetservercmd).with(%w{gem install --no-document /root/paint-2.2.0.gem}).and_return('')
70
+ provider.install
71
+ end
72
+
73
+ it "raises if given a puppet URI scheme" do
74
+ resource[:source] = 'puppet:///paint-2.2.0.gem'
75
+ expect { provider.install }.to raise_error(Puppet::Error, 'puppet:// URLs are not supported as gem sources')
76
+ end
77
+
78
+ it "raises if given an invalid URI" do
79
+ resource[:source] = 'h;ttp://rubygems.com'
80
+ expect { provider.install }.to raise_error(Puppet::Error, /Invalid source '': bad URI\(is not URI\?\)/)
81
+ end
82
+ end
83
+ end
84
+
85
+ describe "#uninstall" do
86
+ it "uses the path to the gem command" do
87
+ allow(described_class).to receive(:validate_command).with(provider_gem_cmd)
88
+ expect(Puppet::Util::Execution).to receive(:execute).with(be_a(Array), execute_options) { |args| expect(args[0]).to eq(provider_gem_cmd) }.and_return('')
89
+ provider.uninstall
90
+ end
91
+
92
+ context "with uninstall_options" do
93
+ it "does not append the parameter by default" do
94
+ expect(described_class).to receive(:puppetservercmd).with(%w{gem uninstall --executables --all myresource}).and_return('')
95
+ provider.uninstall
96
+ end
97
+
98
+ it "allows setting the parameter" do
99
+ resource[:uninstall_options] = [ '--force', {'--bindir' => '/usr/bin' } ]
100
+ expect(described_class).to receive(:puppetservercmd).with(%w{gem uninstall --executables --all myresource --force --bindir=/usr/bin}).and_return('')
101
+ provider.uninstall
102
+ end
103
+ end
104
+ end
105
+
106
+ describe ".gemlist" do
107
+ context "listing installed packages" do
108
+ it "uses the puppet rubygems library to list local gems" do
109
+ expected = { name: 'world_airports', provider: :puppetserver_gem, ensure: ['1.1.3'] }
110
+ expect(described_class).to receive(:execute_rubygems_list_command).with(nil).and_return(File.read(my_fixture('gem-list-local-packages')))
111
+ expect(described_class.gemlist({ local: true })).to include(expected)
112
+ end
113
+ end
114
+
115
+ it "appends the gem source if given" do
116
+ expect(described_class).to receive(:puppetservercmd).with(%w{gem list --remote --source https://rubygems.com}).and_return('')
117
+ described_class.gemlist({ source: 'https://rubygems.com' })
118
+ end
119
+ end
120
+
121
+ context 'calculated specificity' do
122
+ context 'when is not defaultfor' do
123
+ subject { described_class.specificity }
124
+ it { is_expected.to eql 1 }
125
+ end
126
+
127
+ context 'when is defaultfor' do
128
+ let(:os) { Facter.value(:operatingsystem) }
129
+ subject do
130
+ described_class.defaultfor(operatingsystem: os)
131
+ described_class.specificity
132
+ end
133
+ it { is_expected.to be > 100 }
134
+ end
135
+ end
136
+
137
+ end
@@ -158,6 +158,37 @@ describe Puppet::Type.type(:package).provider(:yum) do
158
158
  end
159
159
  end
160
160
 
161
+ context "latest" do
162
+ let(:name) { 'baz' }
163
+
164
+ let(:resource) do
165
+ Puppet::Type.type(:package).new(
166
+ :name => name,
167
+ :provider => 'yum',
168
+ )
169
+ end
170
+
171
+ let(:provider) do
172
+ provider = described_class.new
173
+ provider.resource = resource
174
+ provider
175
+ end
176
+
177
+ before {
178
+ allow(described_class).to receive(:command).with(:cmd).and_return("/usr/bin/yum")
179
+ Puppet[:log_level] = 'debug'
180
+ }
181
+
182
+ it "should print a debug message with the current version if newer package is not available" do
183
+ expect(provider).to receive(:query).and_return({:ensure => "1.2.3"})
184
+ expect(described_class).to receive(:latest_package_version).and_return(nil)
185
+ resource[:ensure] = :present
186
+
187
+ provider.latest
188
+ expect(@logs).to include(an_object_having_attributes(level: :debug, message: "Yum didn't find updates, current version (1.2.3) is the latest"))
189
+ end
190
+ end
191
+
161
192
  context "parsing the output of check-update" do
162
193
  context "with no multiline entries" do
163
194
  let(:check_update) { File.read(my_fixture("yum-check-update-simple.txt")) }
@@ -309,5 +309,19 @@ describe Puppet::Type.type(:package).provider(:zypper) do
309
309
 
310
310
  it { is_expected.to be false }
311
311
  end
312
+
313
+ context 'when using eq range' do
314
+ context 'when ensure without release' do
315
+ before { allow(@resource).to receive(:[]).with(:ensure).and_return('1.19') }
316
+
317
+ it { is_expected.to be true }
318
+ end
319
+
320
+ context 'when ensure with release' do
321
+ before { allow(@resource).to receive(:[]).with(:ensure).and_return('1.19-2') }
322
+
323
+ it { is_expected.to be true }
324
+ end
325
+ end
312
326
  end
313
327
  end
@@ -14,10 +14,8 @@ describe "base service provider" do
14
14
 
15
15
  subject { provider }
16
16
 
17
- if Puppet::Util::Platform.windows?
18
- # Get a pid for $CHILD_STATUS to latch on to
19
- cmd = "cmd.exe /c \"exit 0\""
20
- Puppet::Util::Execution.execute(cmd, {:failonfail => false})
17
+ before(:all) do
18
+ `exit 0`
21
19
  end
22
20
 
23
21
  context "basic operations" do
@@ -1,9 +1,13 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'Puppet::Type::Service::Provider::Bsd',
4
- :unless => Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
4
+ unless: Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
5
5
  let(:provider_class) { Puppet::Type.type(:service).provider(:bsd) }
6
6
 
7
+ before(:all) do
8
+ `exit 0`
9
+ end
10
+
7
11
  before :each do
8
12
  allow(Puppet::Type.type(:service)).to receive(:defaultprovider).and_return(provider_class)
9
13
  allow(Facter).to receive(:value).with(:operatingsystem).and_return(:netbsd)
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'Puppet::Type::Service::Provider::Daemontools',
4
- unless: Puppet::Util::Platform.jruby? do
4
+ unless: Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
5
5
  let(:provider_class) { Puppet::Type.type(:service).provider(:daemontools) }
6
6
 
7
7
  before(:each) do
@@ -1,13 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'Puppet::Type::Service::Provider::Debian',
4
- unless: Puppet::Util::Platform.jruby? do
4
+ unless: Puppet::Util::Platform.jruby? || Puppet::Util::Platform.windows? do
5
5
  let(:provider_class) { Puppet::Type.type(:service).provider(:debian) }
6
6
 
7
- if Puppet::Util::Platform.windows?
8
- # Get a pid for $CHILD_STATUS to latch on to
9
- command = "cmd.exe /c \"exit 0\""
10
- Puppet::Util::Execution.execute(command, {:failonfail => false})
7
+ before(:all) do
8
+ `exit 0`
11
9
  end
12
10
 
13
11
  before(:each) do