puppet 6.17.0-x64-mingw32 → 6.21.0-x64-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 (401) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -16
  3. data/Gemfile +2 -0
  4. data/Gemfile.lock +38 -34
  5. data/README.md +1 -2
  6. data/Rakefile +4 -12
  7. data/lib/puppet/agent/locker.rb +0 -7
  8. data/lib/puppet/application.rb +10 -6
  9. data/lib/puppet/application/agent.rb +9 -3
  10. data/lib/puppet/application/apply.rb +20 -21
  11. data/lib/puppet/application/device.rb +1 -0
  12. data/lib/puppet/application/doc.rb +1 -1
  13. data/lib/puppet/application/filebucket.rb +2 -2
  14. data/lib/puppet/application/lookup.rb +16 -4
  15. data/lib/puppet/application/script.rb +1 -0
  16. data/lib/puppet/application_support.rb +7 -0
  17. data/lib/puppet/configurer.rb +50 -8
  18. data/lib/puppet/configurer/downloader.rb +31 -10
  19. data/lib/puppet/confine.rb +1 -1
  20. data/lib/puppet/confine/any.rb +1 -1
  21. data/lib/puppet/defaults.rb +88 -38
  22. data/lib/puppet/environments.rb +84 -59
  23. data/lib/puppet/face/catalog.rb +1 -1
  24. data/lib/puppet/face/config.rb +56 -16
  25. data/lib/puppet/face/epp.rb +12 -2
  26. data/lib/puppet/face/facts.rb +60 -0
  27. data/lib/puppet/face/node.rb +3 -3
  28. data/lib/puppet/face/node/clean.rb +2 -2
  29. data/lib/puppet/face/status.rb +1 -1
  30. data/lib/puppet/feature/base.rb +1 -1
  31. data/lib/puppet/ffi/posix.rb +10 -0
  32. data/lib/puppet/ffi/posix/constants.rb +14 -0
  33. data/lib/puppet/ffi/posix/functions.rb +24 -0
  34. data/lib/puppet/file_bucket/dipper.rb +1 -1
  35. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  36. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  37. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  38. data/lib/puppet/file_system/file_impl.rb +3 -3
  39. data/lib/puppet/functions/epp.rb +1 -0
  40. data/lib/puppet/functions/inline_epp.rb +1 -0
  41. data/lib/puppet/functions/lstrip.rb +4 -4
  42. data/lib/puppet/functions/new.rb +8 -3
  43. data/lib/puppet/functions/reverse_each.rb +1 -1
  44. data/lib/puppet/functions/rstrip.rb +4 -4
  45. data/lib/puppet/functions/step.rb +1 -1
  46. data/lib/puppet/functions/strip.rb +4 -4
  47. data/lib/puppet/gettext/config.rb +5 -5
  48. data/lib/puppet/gettext/module_translations.rb +4 -4
  49. data/lib/puppet/http.rb +1 -0
  50. data/lib/puppet/http/client.rb +1 -1
  51. data/lib/puppet/http/resolver.rb +5 -8
  52. data/lib/puppet/http/resolver/server_list.rb +18 -36
  53. data/lib/puppet/http/resolver/settings.rb +4 -4
  54. data/lib/puppet/http/resolver/srv.rb +5 -5
  55. data/lib/puppet/http/service.rb +3 -1
  56. data/lib/puppet/http/service/compiler.rb +1 -1
  57. data/lib/puppet/http/service/file_server.rb +1 -1
  58. data/lib/puppet/http/service/puppetserver.rb +39 -0
  59. data/lib/puppet/http/session.rb +5 -4
  60. data/lib/puppet/indirector/catalog/compiler.rb +1 -1
  61. data/lib/puppet/indirector/exec.rb +1 -1
  62. data/lib/puppet/indirector/fact_search.rb +60 -0
  63. data/lib/puppet/indirector/facts/facter.rb +3 -3
  64. data/lib/puppet/indirector/facts/json.rb +27 -0
  65. data/lib/puppet/indirector/facts/yaml.rb +4 -59
  66. data/lib/puppet/indirector/file_metadata/http.rb +1 -0
  67. data/lib/puppet/indirector/hiera.rb +4 -0
  68. data/lib/puppet/indirector/indirection.rb +1 -1
  69. data/lib/puppet/indirector/json.rb +5 -1
  70. data/lib/puppet/indirector/msgpack.rb +1 -1
  71. data/lib/puppet/indirector/node/json.rb +8 -0
  72. data/lib/puppet/indirector/report/json.rb +34 -0
  73. data/lib/puppet/indirector/report/processor.rb +2 -2
  74. data/lib/puppet/indirector/request.rb +4 -4
  75. data/lib/puppet/indirector/yaml.rb +1 -1
  76. data/lib/puppet/module.rb +1 -2
  77. data/lib/puppet/module_tool/applications/installer.rb +48 -2
  78. data/lib/puppet/module_tool/errors/shared.rb +17 -2
  79. data/lib/puppet/network/format_support.rb +2 -2
  80. data/lib/puppet/network/formats.rb +2 -1
  81. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  82. data/lib/puppet/network/http/route.rb +2 -2
  83. data/lib/puppet/node/environment.rb +12 -5
  84. data/lib/puppet/node/facts.rb +17 -0
  85. data/lib/puppet/pal/pal_impl.rb +90 -13
  86. data/lib/puppet/parameter.rb +1 -1
  87. data/lib/puppet/parser/ast/leaf.rb +3 -2
  88. data/lib/puppet/parser/functions.rb +21 -17
  89. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  90. data/lib/puppet/parser/templatewrapper.rb +1 -1
  91. data/lib/puppet/parser/type_loader.rb +2 -2
  92. data/lib/puppet/pops/adaptable.rb +7 -13
  93. data/lib/puppet/pops/adapters.rb +8 -4
  94. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  95. data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
  96. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -3
  97. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  98. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  99. data/lib/puppet/pops/loaders.rb +18 -11
  100. data/lib/puppet/pops/lookup/context.rb +1 -1
  101. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  102. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  103. data/lib/puppet/pops/types/iterable.rb +34 -8
  104. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  105. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  106. data/lib/puppet/pops/validation/checker4_0.rb +19 -15
  107. data/lib/puppet/property/list.rb +1 -1
  108. data/lib/puppet/provider/file/windows.rb +1 -1
  109. data/lib/puppet/provider/group/groupadd.rb +13 -8
  110. data/lib/puppet/provider/package/apt.rb +67 -1
  111. data/lib/puppet/provider/package/aptitude.rb +6 -0
  112. data/lib/puppet/provider/package/dpkg.rb +1 -1
  113. data/lib/puppet/provider/package/gem.rb +4 -2
  114. data/lib/puppet/provider/package/pip2.rb +17 -0
  115. data/lib/puppet/provider/package/puppet_gem.rb +5 -0
  116. data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
  117. data/lib/puppet/provider/package/yum.rb +1 -0
  118. data/lib/puppet/provider/package/zypper.rb +3 -0
  119. data/lib/puppet/provider/service/debian.rb +2 -0
  120. data/lib/puppet/provider/user/aix.rb +3 -3
  121. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  122. data/lib/puppet/provider/user/useradd.rb +55 -8
  123. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  124. data/lib/puppet/reference/configuration.rb +6 -5
  125. data/lib/puppet/resource/type.rb +2 -1
  126. data/lib/puppet/rest/route.rb +2 -2
  127. data/lib/puppet/settings.rb +63 -21
  128. data/lib/puppet/settings/alias_setting.rb +37 -0
  129. data/lib/puppet/settings/base_setting.rb +26 -2
  130. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  131. data/lib/puppet/test/test_helper.rb +10 -3
  132. data/lib/puppet/transaction.rb +2 -2
  133. data/lib/puppet/transaction/persistence.rb +1 -1
  134. data/lib/puppet/transaction/report.rb +12 -8
  135. data/lib/puppet/trusted_external.rb +2 -2
  136. data/lib/puppet/type.rb +4 -3
  137. data/lib/puppet/type/file.rb +2 -2
  138. data/lib/puppet/type/file/source.rb +28 -8
  139. data/lib/puppet/type/filebucket.rb +1 -1
  140. data/lib/puppet/type/notify.rb +2 -2
  141. data/lib/puppet/type/package.rb +3 -3
  142. data/lib/puppet/type/service.rb +4 -0
  143. data/lib/puppet/type/user.rb +18 -3
  144. data/lib/puppet/util.rb +26 -12
  145. data/lib/puppet/util/autoload.rb +10 -15
  146. data/lib/puppet/util/character_encoding.rb +9 -5
  147. data/lib/puppet/util/connection.rb +8 -8
  148. data/lib/puppet/util/execution.rb +2 -2
  149. data/lib/puppet/util/fact_dif.rb +62 -0
  150. data/lib/puppet/util/posix.rb +54 -5
  151. data/lib/puppet/util/rubygems.rb +5 -1
  152. data/lib/puppet/util/run_mode.rb +5 -1
  153. data/lib/puppet/util/windows.rb +1 -0
  154. data/lib/puppet/util/windows/api_types.rb +15 -1
  155. data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
  156. data/lib/puppet/util/windows/security.rb +4 -4
  157. data/lib/puppet/util/windows/service.rb +1 -1
  158. data/lib/puppet/util/windows/user.rb +219 -0
  159. data/lib/puppet/version.rb +1 -1
  160. data/locales/puppet.pot +342 -312
  161. data/man/man5/puppet.conf.5 +53 -18
  162. data/man/man8/puppet-agent.8 +7 -4
  163. data/man/man8/puppet-apply.8 +2 -2
  164. data/man/man8/puppet-catalog.8 +1 -1
  165. data/man/man8/puppet-config.8 +6 -6
  166. data/man/man8/puppet-describe.8 +1 -1
  167. data/man/man8/puppet-device.8 +2 -2
  168. data/man/man8/puppet-doc.8 +1 -1
  169. data/man/man8/puppet-epp.8 +1 -1
  170. data/man/man8/puppet-facts.8 +32 -1
  171. data/man/man8/puppet-filebucket.8 +3 -3
  172. data/man/man8/puppet-generate.8 +1 -1
  173. data/man/man8/puppet-help.8 +1 -1
  174. data/man/man8/puppet-key.8 +1 -1
  175. data/man/man8/puppet-lookup.8 +2 -2
  176. data/man/man8/puppet-man.8 +1 -1
  177. data/man/man8/puppet-module.8 +1 -1
  178. data/man/man8/puppet-node.8 +7 -4
  179. data/man/man8/puppet-parser.8 +1 -1
  180. data/man/man8/puppet-plugin.8 +1 -1
  181. data/man/man8/puppet-report.8 +4 -1
  182. data/man/man8/puppet-resource.8 +1 -1
  183. data/man/man8/puppet-script.8 +2 -2
  184. data/man/man8/puppet-ssl.8 +1 -1
  185. data/man/man8/puppet-status.8 +2 -2
  186. data/man/man8/puppet.8 +2 -2
  187. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
  188. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  189. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  190. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  191. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  192. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  193. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
  194. data/spec/integration/application/agent_spec.rb +208 -55
  195. data/spec/integration/application/apply_spec.rb +168 -149
  196. data/spec/integration/application/doc_spec.rb +16 -6
  197. data/spec/integration/application/filebucket_spec.rb +70 -21
  198. data/spec/integration/application/help_spec.rb +42 -0
  199. data/spec/integration/application/lookup_spec.rb +13 -0
  200. data/spec/integration/application/module_spec.rb +68 -0
  201. data/spec/integration/application/plugin_spec.rb +53 -3
  202. data/spec/integration/configurer_spec.rb +14 -0
  203. data/spec/integration/data_binding_spec.rb +82 -0
  204. data/spec/integration/defaults_spec.rb +19 -1
  205. data/spec/integration/directory_environments_spec.rb +17 -17
  206. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  207. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  208. data/spec/integration/node/environment_spec.rb +1 -1
  209. data/spec/integration/resource/type_collection_spec.rb +2 -6
  210. data/spec/integration/transaction_spec.rb +4 -9
  211. data/spec/integration/util/execution_spec.rb +22 -0
  212. data/spec/integration/util/windows/adsi_spec.rb +5 -3
  213. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
  214. data/spec/integration/util/windows/process_spec.rb +26 -32
  215. data/spec/integration/util/windows/registry_spec.rb +0 -10
  216. data/spec/integration/util/windows/user_spec.rb +7 -0
  217. data/spec/integration/util_spec.rb +7 -33
  218. data/spec/lib/puppet_spec/matchers.rb +0 -80
  219. data/spec/lib/puppet_spec/puppetserver.rb +8 -0
  220. data/spec/lib/puppet_spec/settings.rb +6 -1
  221. data/spec/shared_contexts/types_setup.rb +2 -0
  222. data/spec/spec_helper.rb +1 -4
  223. data/spec/unit/agent_spec.rb +8 -6
  224. data/spec/unit/application/agent_spec.rb +3 -5
  225. data/spec/unit/application/config_spec.rb +224 -4
  226. data/spec/unit/application/doc_spec.rb +2 -2
  227. data/spec/unit/application/face_base_spec.rb +6 -4
  228. data/spec/unit/application/facts_spec.rb +41 -10
  229. data/spec/unit/application/filebucket_spec.rb +0 -2
  230. data/spec/unit/application/man_spec.rb +52 -0
  231. data/spec/unit/application/resource_spec.rb +3 -1
  232. data/spec/unit/application/ssl_spec.rb +15 -2
  233. data/spec/unit/application_spec.rb +60 -13
  234. data/spec/unit/configurer/downloader_spec.rb +10 -0
  235. data/spec/unit/configurer_spec.rb +86 -37
  236. data/spec/unit/confine/feature_spec.rb +1 -1
  237. data/spec/unit/confine_spec.rb +10 -3
  238. data/spec/unit/defaults_spec.rb +20 -1
  239. data/spec/unit/environments_spec.rb +176 -32
  240. data/spec/unit/face/config_spec.rb +65 -12
  241. data/spec/unit/face/node_spec.rb +2 -13
  242. data/spec/unit/file_serving/configuration/parser_spec.rb +0 -1
  243. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  244. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  245. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  246. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  247. data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
  248. data/spec/unit/file_system/uniquefile_spec.rb +18 -0
  249. data/spec/unit/file_system_spec.rb +1 -2
  250. data/spec/unit/forge/module_release_spec.rb +2 -7
  251. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  252. data/spec/unit/http/client_spec.rb +0 -1
  253. data/spec/unit/http/resolver_spec.rb +24 -5
  254. data/spec/unit/http/service/ca_spec.rb +2 -3
  255. data/spec/unit/http/service/compiler_spec.rb +51 -3
  256. data/spec/unit/http/service/file_server_spec.rb +2 -3
  257. data/spec/unit/http/service/puppetserver_spec.rb +82 -0
  258. data/spec/unit/http/service/report_spec.rb +2 -3
  259. data/spec/unit/http/service_spec.rb +1 -2
  260. data/spec/unit/http/session_spec.rb +8 -21
  261. data/spec/unit/indirector/catalog/json_spec.rb +1 -1
  262. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  263. data/spec/unit/indirector/face_spec.rb +0 -1
  264. data/spec/unit/indirector/facts/facter_spec.rb +0 -1
  265. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  266. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  267. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
  268. data/spec/unit/indirector/indirection_spec.rb +8 -12
  269. data/spec/unit/indirector/json_spec.rb +8 -8
  270. data/spec/unit/indirector/key/file_spec.rb +0 -1
  271. data/spec/unit/indirector/msgpack_spec.rb +8 -8
  272. data/spec/unit/indirector/node/json_spec.rb +33 -0
  273. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  274. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  275. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  276. data/spec/unit/indirector/request_spec.rb +4 -4
  277. data/spec/unit/indirector/rest_spec.rb +1 -1
  278. data/spec/unit/indirector/status/rest_spec.rb +1 -1
  279. data/spec/unit/indirector/yaml_spec.rb +7 -7
  280. data/spec/unit/indirector_spec.rb +2 -2
  281. data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
  282. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  283. data/spec/unit/network/authconfig_spec.rb +0 -3
  284. data/spec/unit/network/format_support_spec.rb +3 -2
  285. data/spec/unit/network/http/api/indirected_routes_spec.rb +0 -9
  286. data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
  287. data/spec/unit/network/http/handler_spec.rb +0 -5
  288. data/spec/unit/node/environment_spec.rb +18 -1
  289. data/spec/unit/parser/compiler_spec.rb +3 -19
  290. data/spec/unit/parser/resource_spec.rb +14 -8
  291. data/spec/unit/parser/templatewrapper_spec.rb +4 -3
  292. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
  293. data/spec/unit/pops/loaders/loaders_spec.rb +70 -0
  294. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  295. data/spec/unit/property_spec.rb +1 -0
  296. data/spec/unit/provider/exec_spec.rb +4 -3
  297. data/spec/unit/provider/group/groupadd_spec.rb +5 -2
  298. data/spec/unit/provider/nameservice_spec.rb +66 -65
  299. data/spec/unit/provider/package/apt_spec.rb +85 -3
  300. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  301. data/spec/unit/provider/package/base_spec.rb +6 -5
  302. data/spec/unit/provider/package/dpkg_spec.rb +22 -7
  303. data/spec/unit/provider/package/openbsd_spec.rb +2 -0
  304. data/spec/unit/provider/package/pacman_spec.rb +18 -12
  305. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  306. data/spec/unit/provider/package/pip_spec.rb +6 -11
  307. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
  308. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
  309. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  310. data/spec/unit/provider/package/yum_spec.rb +31 -0
  311. data/spec/unit/provider/package/zypper_spec.rb +14 -0
  312. data/spec/unit/provider/service/base_spec.rb +2 -4
  313. data/spec/unit/provider/service/bsd_spec.rb +5 -1
  314. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  315. data/spec/unit/provider/service/debian_spec.rb +3 -5
  316. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  317. data/spec/unit/provider/service/gentoo_spec.rb +4 -5
  318. data/spec/unit/provider/service/init_spec.rb +45 -5
  319. data/spec/unit/provider/service/launchd_spec.rb +5 -6
  320. data/spec/unit/provider/service/openrc_spec.rb +4 -5
  321. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  322. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  323. data/spec/unit/provider/service/runit_spec.rb +2 -1
  324. data/spec/unit/provider/service/smf_spec.rb +1 -1
  325. data/spec/unit/provider/service/src_spec.rb +3 -5
  326. data/spec/unit/provider/service/systemd_spec.rb +3 -6
  327. data/spec/unit/provider/service/upstart_spec.rb +4 -5
  328. data/spec/unit/provider/service/windows_spec.rb +28 -0
  329. data/spec/unit/provider/user/aix_spec.rb +5 -0
  330. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  331. data/spec/unit/provider/user/pw_spec.rb +2 -0
  332. data/spec/unit/provider/user/useradd_spec.rb +56 -3
  333. data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
  334. data/spec/unit/provider_spec.rb +8 -10
  335. data/spec/unit/puppet_pal_2pec.rb +40 -0
  336. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  337. data/spec/unit/reports/store_spec.rb +17 -13
  338. data/spec/unit/resource/capability_finder_spec.rb +6 -1
  339. data/spec/unit/resource/type_spec.rb +1 -1
  340. data/spec/unit/resource_spec.rb +11 -10
  341. data/spec/unit/rest/route_spec.rb +4 -4
  342. data/spec/unit/settings_spec.rb +576 -239
  343. data/spec/unit/ssl/base_spec.rb +0 -1
  344. data/spec/unit/ssl/host_spec.rb +0 -5
  345. data/spec/unit/ssl/ssl_provider_spec.rb +14 -8
  346. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
  347. data/spec/unit/transaction/event_manager_spec.rb +14 -11
  348. data/spec/unit/transaction/persistence_spec.rb +15 -0
  349. data/spec/unit/transaction/report_spec.rb +2 -0
  350. data/spec/unit/transaction_spec.rb +13 -4
  351. data/spec/unit/type/file/content_spec.rb +0 -1
  352. data/spec/unit/type/file/selinux_spec.rb +0 -2
  353. data/spec/unit/type/file/source_spec.rb +1 -1
  354. data/spec/unit/type/file_spec.rb +0 -6
  355. data/spec/unit/type/filebucket_spec.rb +1 -1
  356. data/spec/unit/type/group_spec.rb +13 -6
  357. data/spec/unit/type/resources_spec.rb +7 -7
  358. data/spec/unit/type/service_spec.rb +36 -3
  359. data/spec/unit/type/tidy_spec.rb +0 -1
  360. data/spec/unit/type/user_spec.rb +31 -2
  361. data/spec/unit/type_spec.rb +2 -2
  362. data/spec/unit/util/at_fork_spec.rb +2 -2
  363. data/spec/unit/util/autoload_spec.rb +5 -1
  364. data/spec/unit/util/backups_spec.rb +1 -2
  365. data/spec/unit/util/character_encoding_spec.rb +4 -4
  366. data/spec/unit/util/command_line_spec.rb +11 -6
  367. data/spec/unit/util/execution_spec.rb +15 -11
  368. data/spec/unit/util/inifile_spec.rb +6 -14
  369. data/spec/unit/util/log_spec.rb +8 -7
  370. data/spec/unit/util/logging_spec.rb +3 -3
  371. data/spec/unit/util/posix_spec.rb +363 -15
  372. data/spec/unit/util/rubygems_spec.rb +2 -2
  373. data/spec/unit/util/run_mode_spec.rb +6 -6
  374. data/spec/unit/util/selinux_spec.rb +76 -52
  375. data/spec/unit/util/storage_spec.rb +3 -1
  376. data/spec/unit/util/suidmanager_spec.rb +44 -41
  377. data/spec/unit/util_spec.rb +13 -6
  378. metadata +49 -50
  379. data/spec/integration/faces/config_spec.rb +0 -91
  380. data/spec/integration/faces/documentation_spec.rb +0 -57
  381. data/spec/integration/file_bucket/file_spec.rb +0 -50
  382. data/spec/integration/file_serving/content_spec.rb +0 -7
  383. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  384. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  385. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  386. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  387. data/spec/integration/module_tool/forge_spec.rb +0 -51
  388. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  389. data/spec/integration/provider/service/init_spec.rb +0 -48
  390. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  391. data/spec/integration/provider/service/windows_spec.rb +0 -50
  392. data/spec/integration/reference/providers_spec.rb +0 -21
  393. data/spec/integration/reports_spec.rb +0 -13
  394. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  395. data/spec/integration/ssl/host_spec.rb +0 -72
  396. data/spec/integration/ssl/key_spec.rb +0 -99
  397. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  398. data/spec/unit/face/catalog_spec.rb +0 -6
  399. data/spec/unit/face/man_spec.rb +0 -25
  400. data/spec/unit/face/module_spec.rb +0 -3
  401. data/spec/unit/man_spec.rb +0 -31
@@ -1,91 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet/face'
3
-
4
- describe Puppet::Face[:config, '0.0.1'] do
5
- include PuppetSpec::Files
6
-
7
- # different UTF-8 widths
8
- # 1-byte A
9
- # 2-byte ۿ - http://www.fileformat.info/info/unicode/char/06ff/index.htm - 0xDB 0xBF / 219 191
10
- # 3-byte ᚠ - http://www.fileformat.info/info/unicode/char/16A0/index.htm - 0xE1 0x9A 0xA0 / 225 154 160
11
- # 4-byte 𠜎 - http://www.fileformat.info/info/unicode/char/2070E/index.htm - 0xF0 0xA0 0x9C 0x8E / 240 160 156 142
12
- MIXED_UTF8 = "A\u06FF\u16A0\u{2070E}" # Aۿᚠ𠜎
13
- let (:tmp_environment_path) { tmpdir('envpath') }
14
- let (:tmp_config) { tmpfile('puppet.conf') }
15
-
16
- def load_settings(path)
17
- test_settings = Puppet::Settings.new
18
-
19
- test_settings.define_settings(:main,
20
- :config => {
21
- :type => :file,
22
- :default => path,
23
- :desc => '',
24
- },
25
- :environmentpath => {
26
- :default => tmp_environment_path,
27
- :desc => '',
28
- },
29
- :basemodulepath => {
30
- :default => '',
31
- :desc => '',
32
- },
33
- # definition required to use the value
34
- :rando_key => {
35
- :default => '',
36
- :desc => ''
37
- },
38
- MIXED_UTF8.to_sym => {
39
- :default => '',
40
- :desc => ''
41
- },
42
- )
43
-
44
- test_settings.initialize_global_settings
45
- test_settings
46
- end
47
-
48
- before :each do
49
- File.open(tmp_config, 'w', :encoding => 'UTF-8') do |file|
50
- file.puts <<-EOF
51
- [main]
52
- rando_key=foobar
53
- #{MIXED_UTF8}=foobar
54
- EOF
55
- end
56
- end
57
-
58
- context 'when getting / setting UTF8 values' do
59
-
60
- let(:config) { described_class }
61
-
62
- def render(action, result)
63
- config.get_action(action).when_rendering(:console).call(result)
64
- end
65
-
66
- before :each do
67
- allow(subject).to receive(:report_section_and_environment)
68
- end
69
-
70
- # key must be a defined setting
71
- ['rando_key', MIXED_UTF8].each do |key|
72
- it "can change '#{key}' keyed ASCII value to a UTF-8 value and read it back" do
73
- value = "value#{key.reverse}value"
74
-
75
- # needed for the subject.set to write to correct file
76
- allow(Puppet.settings).to receive(:which_configuration_file).and_return(tmp_config)
77
- subject.set(key, value)
78
-
79
- # make sure subject.print looks at the newly modified settings
80
- test_settings = load_settings(tmp_config)
81
- # instead of the default Puppet.settings (implementation detail)
82
- allow(Puppet).to receive(:settings).and_return(test_settings)
83
-
84
- result = subject.print()
85
- expect(render(:print, result)).to match(/^#{key} = #{value}$/)
86
- result = subject.print(key, :section => 'main')
87
- expect(render(:print, result)).to eq("#{value}\n")
88
- end
89
- end
90
- end
91
- end
@@ -1,57 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet/face'
3
-
4
- describe "documentation of faces" do
5
- it "should generate global help" do
6
- help = nil
7
- expect { help = Puppet::Face[:help, :current].help }.not_to raise_error
8
- expect(help).to be_an_instance_of String
9
- expect(help.length).to be > 200
10
- end
11
-
12
- ########################################################################
13
- # Can we actually generate documentation for the face, and the actions it
14
- # has? This avoids situations where the ERB template turns out to have a
15
- # bug in it, triggered in something the user might do.
16
-
17
- context "face help messages" do
18
- Puppet::Face.faces.sort.each do |face_name|
19
- # REVISIT: We should walk all versions of the face here...
20
- let :help do Puppet::Face[:help, :current] end
21
-
22
- context "generating help" do
23
- it "for #{face_name}" do
24
- expect {
25
- text = help.help(face_name)
26
- expect(text).to be_an_instance_of String
27
- expect(text.length).to be > 100
28
- }.not_to raise_error
29
- end
30
-
31
- Puppet::Face[face_name, :current].actions.sort.each do |action_name|
32
- it "for #{face_name}.#{action_name}" do
33
- expect {
34
- text = help.help(face_name, action_name)
35
- expect(text).to be_an_instance_of String
36
- expect(text.length).to be > 100
37
- }.not_to raise_error
38
- end
39
- end
40
- end
41
-
42
- ########################################################################
43
- # Ensure that we have authorship and copyright information in *our* faces;
44
- # if you apply this to third party faces you might well be disappointed.
45
- context "licensing of Puppet Inc. face '#{face_name}'" do
46
- subject { Puppet::Face[face_name, :current] }
47
- its :license do should =~ /Apache\s*2/ end
48
- its :copyright do should =~ /Puppet Inc\./ end
49
-
50
- # REVISIT: This is less that ideal, I think, but right now I am more
51
- # comfortable watching us ship with some copyright than without any; we
52
- # can redress that when it becomes appropriate. --daniel 2011-04-27
53
- its :copyright do should =~ /20\d{2}/ end
54
- end
55
- end
56
- end
57
- end
@@ -1,50 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'puppet/file_bucket/file'
4
-
5
- describe Puppet::FileBucket::File do
6
- describe "#indirection" do
7
- before :each do
8
- # Never connect to the network, no matter what
9
- allow_any_instance_of(described_class.indirection.terminus(:rest).class).to receive(:find)
10
- end
11
-
12
- describe "when running another application" do
13
- {
14
- "md5/d41d8cd98f00b204e9800998ecf8427e" => :file,
15
- "filebucket://puppetmaster:8140/md5/d41d8cd98f00b204e9800998ecf8427e" => :rest,
16
- }.each do |key, terminus|
17
- it "should use the #{terminus} terminus when requesting #{key.inspect}" do
18
- expect_any_instance_of(described_class.indirection.terminus(terminus).class).to receive(:find)
19
-
20
- described_class.indirection.find(key)
21
- end
22
- end
23
- end
24
- end
25
-
26
- describe "saving binary files" do
27
- context "given multiple backups of identical files" do
28
- it "does not error given content with binary external encoding" do
29
- binary = "\xD1\xF2\r\n\x81NuSc\x00".force_encoding(Encoding::ASCII_8BIT)
30
- bucket_file = Puppet::FileBucket::File.new(binary)
31
- Puppet::FileBucket::File.indirection.save(bucket_file, bucket_file.name)
32
- Puppet::FileBucket::File.indirection.save(bucket_file, bucket_file.name)
33
- end
34
-
35
- it "also does not error if the content is reported with UTF-8 external encoding" do
36
- # PUP-7951 - ensure accurate size comparison across encodings If binary
37
- # content arrives as a string with UTF-8 default external encoding, its
38
- # character count might be different than the same bytes with binary
39
- # external encoding. Ensure our equality comparison does not fail due to this.
40
- # As would be the case with our friend snowman:
41
- # Unicode snowman \u2603 - \xE2 \x98 \x83
42
- # character size 1, if interpreted as UTF-8, 3 "characters" if interpreted as binary
43
- utf8 = "\u2603".force_encoding(Encoding::UTF_8)
44
- bucket_file = Puppet::FileBucket::File.new(utf8)
45
- Puppet::FileBucket::File.indirection.save(bucket_file, bucket_file.name)
46
- Puppet::FileBucket::File.indirection.save(bucket_file, bucket_file.name)
47
- end
48
- end
49
- end
50
- end
@@ -1,7 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'puppet/file_serving/content'
4
-
5
- describe Puppet::FileServing::Content do
6
- it_should_behave_like "a file_serving model"
7
- end
@@ -1,12 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'puppet/file_serving/fileset'
4
-
5
- describe Puppet::FileServing::Fileset do
6
- it "should be able to recurse on a single file" do
7
- @path = Tempfile.new("fileset_integration")
8
-
9
- fileset = Puppet::FileServing::Fileset.new(@path.path)
10
- expect { fileset.files }.not_to raise_error
11
- end
12
- end
@@ -1,8 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'puppet/file_serving/metadata'
4
-
5
- describe Puppet::FileServing::Metadata do
6
- it_should_behave_like "a file_serving model"
7
- end
8
-
@@ -1,20 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'puppet/file_serving/terminus_helper'
4
-
5
- class TerminusHelperIntegrationTester
6
- include Puppet::FileServing::TerminusHelper
7
- def model
8
- Puppet::FileServing::Metadata
9
- end
10
- end
11
-
12
- describe Puppet::FileServing::TerminusHelper do
13
- it "should be able to recurse on a single file" do
14
- @path = Tempfile.new("fileset_integration")
15
- request = Puppet::Indirector::Request.new(:metadata, :find, @path.path, nil, :recurse => true)
16
-
17
- tester = TerminusHelperIntegrationTester.new
18
- expect { tester.path2instances(request, @path.path) }.not_to raise_error
19
- end
20
- end
@@ -1,26 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Puppet::FileSystem::Uniquefile do
4
- describe "#open_tmp on Windows", :if => Puppet::Util::Platform.windows? do
5
- describe "with UTF8 characters" do
6
- include PuppetSpec::Files
7
-
8
- let(:rune_utf8) { "\u16A0\u16C7\u16BB\u16EB\u16D2\u16E6\u16A6\u16EB\u16A0\u16B1\u16A9\u16A0\u16A2\u16B1\u16EB\u16A0\u16C1\u16B1\u16AA\u16EB\u16B7\u16D6\u16BB\u16B9\u16E6\u16DA\u16B3\u16A2\u16D7" }
9
- let(:temp_rune_utf8) { tmpdir(rune_utf8) }
10
-
11
- it "should use UTF8 characters in TMP,TEMP,TMPDIR environment variable" do
12
- # Set the temporary environment variables to the UTF8 temp path
13
- Puppet::Util::Windows::Process.set_environment_variable('TMPDIR', temp_rune_utf8)
14
- Puppet::Util::Windows::Process.set_environment_variable('TMP', temp_rune_utf8)
15
- Puppet::Util::Windows::Process.set_environment_variable('TEMP', temp_rune_utf8)
16
-
17
- # Create a unique file
18
- filename = Puppet::FileSystem::Uniquefile.open_tmp('foo') do |file|
19
- File.dirname(file.path)
20
- end
21
-
22
- expect(filename).to eq(temp_rune_utf8)
23
- end
24
- end
25
- end
26
- end
@@ -1,51 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet/forge'
3
- require 'puppet_spec/https'
4
-
5
- describe Puppet::Forge, unless: Puppet::Util::Platform.jruby? do
6
- include PuppetSpec::Files
7
- include_context "https client"
8
-
9
- let(:wrong_hostname) { 'localhost' }
10
- let(:server) { PuppetSpec::HTTPSServer.new }
11
- let(:ssl_provider) { Puppet::SSL::SSLProvider.new }
12
-
13
- let(:http_response) do
14
- File.read(fixtures('unit/forge/bacula.json'))
15
- end
16
-
17
- let(:release_response) do
18
- releases = JSON.parse(http_response)
19
- releases['results'] = []
20
- JSON.dump(releases)
21
- end
22
-
23
- it 'fetching module release entries' do
24
- # create a temp cacert bundle
25
- ssl_file = tmpfile('systemstore')
26
- File.write(ssl_file, server.ca_cert)
27
-
28
- # override path to system cacert bundle, this must be done before
29
- # the SSLContext is created and the call to X509::Store.set_default_paths
30
- Puppet::Util.withenv("SSL_CERT_FILE" => ssl_file) do
31
- response_proc = -> (req, res) {
32
- res.status = 200
33
- res.body = release_response
34
- }
35
-
36
- server.start_server(response_proc: response_proc) do |port|
37
- forge = described_class.new("https://127.0.0.1:#{port}")
38
- forge.fetch('bacula')
39
- end
40
- end
41
- end
42
-
43
- it 'returns a valid exception when there is an SSL verification problem' do
44
- server.start_server do |port|
45
- forge = described_class.new("https://#{wrong_hostname}:#{port}")
46
- expect {
47
- forge.fetch('mymodule')
48
- }.to raise_error Puppet::Forge::Errors::SSLVerifyError, %r{^Unable to verify the SSL certificate at https://#{wrong_hostname}}
49
- end
50
- end
51
- end
@@ -1,28 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet/module_tool'
3
- require 'puppet_spec/files'
4
-
5
- describe Puppet::ModuleTool::Tar::Mini, :if => (Puppet.features.minitar? && Puppet.features.zlib?) do
6
- let(:minitar) { described_class.new }
7
-
8
- describe "Extracts tars with long and short pathnames" do
9
- let (:sourcetar) { File.expand_path('../../../../fixtures/module.tar.gz', __FILE__) }
10
-
11
- let (:longfilepath) { "puppetlabs-dsc-1.0.0/lib/puppet_x/dsc_resources/xWebAdministration/DSCResources/MSFT_xWebAppPoolDefaults/MSFT_xWebAppPoolDefaults.schema.mof" }
12
- let (:shortfilepath) { "puppetlabs-dsc-1.0.0/README.md" }
13
-
14
- it "unpacks a tar with a short path length" do
15
- extractdir = PuppetSpec::Files.tmpdir('minitar')
16
-
17
- minitar.unpack(sourcetar,extractdir,'module')
18
- expect(File).to exist(File.expand_path("#{extractdir}/#{shortfilepath}"))
19
- end
20
-
21
- it "unpacks a tar with a long path length" do
22
- extractdir = PuppetSpec::Files.tmpdir('minitar')
23
-
24
- minitar.unpack(sourcetar,extractdir,'module')
25
- expect(File).to exist(File.expand_path("#{extractdir}/#{longfilepath}"))
26
- end
27
- end
28
- end
@@ -1,48 +0,0 @@
1
- require 'spec_helper'
2
-
3
- test_title = 'Integration Tests for Puppet::Type::Service::Provider::Init'
4
-
5
- describe test_title, unless: Puppet::Util::Platform.jruby? do
6
- let(:provider) { Puppet::Type.type(:service).provider(:init) }
7
-
8
- describe "when running on FreeBSD" do
9
- before :each do
10
- allow(Facter).to receive(:value).with(:operatingsystem).and_return('FreeBSD')
11
- allow(Facter).to receive(:value).with(:osfamily).and_return('FreeBSD')
12
- end
13
-
14
- it "should set its default path to include /etc/rc.d and /usr/local/etc/rc.d" do
15
- expect(provider.defpath).to eq(["/etc/rc.d", "/usr/local/etc/rc.d"])
16
- end
17
- end
18
-
19
- describe "when running on HP-UX" do
20
- before :each do
21
- allow(Facter).to receive(:value).with(:operatingsystem).and_return('HP-UX')
22
- end
23
-
24
- it "should set its default path to include /sbin/init.d" do
25
- expect(provider.defpath).to eq("/sbin/init.d")
26
- end
27
- end
28
-
29
- describe "when running on Archlinux" do
30
- before :each do
31
- allow(Facter).to receive(:value).with(:operatingsystem).and_return('Archlinux')
32
- end
33
-
34
- it "should set its default path to include /etc/rc.d" do
35
- expect(provider.defpath).to eq("/etc/rc.d")
36
- end
37
- end
38
-
39
- describe "when not running on FreeBSD, HP-UX or Archlinux" do
40
- before :each do
41
- allow(Facter).to receive(:value).with(:operatingsystem).and_return('RedHat')
42
- end
43
-
44
- it "should set its default path to include /etc/init.d" do
45
- expect(provider.defpath).to eq("/etc/init.d")
46
- end
47
- end
48
- end
@@ -1,25 +0,0 @@
1
- require 'spec_helper'
2
-
3
- test_title = 'Integration Tests for Puppet::Type::Service::Provider::Systemd'
4
-
5
- describe test_title, unless: Puppet::Util::Platform.jruby? do
6
- let(:provider_class) { Puppet::Type.type(:service).provider(:systemd) }
7
-
8
- # TODO: Unfortunately there does not seem a way to stub the executable
9
- # checks in the systemd provider because they happen at load time.
10
-
11
- it "should be considered suitable if /proc/1/comm is present and contains 'systemd'",
12
- :if => File.exist?('/proc/1/comm') && Puppet::FileSystem.read('/proc/1/comm').include?('systemd') do
13
- expect(provider_class).to be_suitable
14
- end
15
-
16
- it "should not be considered suitable if /proc/1/comm is present it does not contain 'systemd'",
17
- :if => File.exist?('/proc/1/comm') && !Puppet::FileSystem.read('/proc/1/comm').include?('systemd') do
18
- expect(provider_class).not_to be_suitable
19
- end
20
-
21
- it "should not be considered suitable if /proc/1/comm is absent",
22
- :if => !File.exist?('/proc/1/comm') do
23
- expect(provider_class).not_to be_suitable
24
- end
25
- end
@@ -1,50 +0,0 @@
1
- require 'spec_helper'
2
-
3
- test_title = 'Integration Tests for Puppet::Type::Service::Provider::Windows'
4
-
5
- describe test_title, '(integration)', :if => Puppet::Util::Platform.windows? do
6
- let(:provider_class) { Puppet::Type.type(:service).provider(:windows) }
7
-
8
- require 'puppet/util/windows'
9
-
10
- before :each do
11
- allow(Puppet::Type.type(:service)).to receive(:defaultprovider).and_return(provider_class)
12
- end
13
-
14
- context 'should return valid values when querying a service that does not exist' do
15
- let(:service) do
16
- Puppet::Type.type(:service).new(:name => 'foobarservice1234')
17
- end
18
-
19
- it "with :false when asked if enabled" do
20
- expect(service.provider.enabled?).to eql(:false)
21
- end
22
-
23
- it "with :stopped when asked about status" do
24
- expect(service.provider.status).to eql(:stopped)
25
- end
26
- end
27
-
28
- context 'should return valid values when querying a service that does exist' do
29
- let(:service) do
30
- # This service should be ubiquitous across all supported Windows platforms
31
- Puppet::Type.type(:service).new(:name => 'lmhosts')
32
- end
33
-
34
- it "with a valid enabled? value when asked if enabled" do
35
- expect([:true, :false, :manual]).to include(service.provider.enabled?)
36
- end
37
-
38
- it "with a valid status when asked about status" do
39
- expect([
40
- :running,
41
- :'continue pending',
42
- :'pause pending',
43
- :paused,
44
- :running,
45
- :'start pending',
46
- :'stop pending',
47
- :stopped]).to include(service.provider.status)
48
- end
49
- end
50
- end