puppet 6.14.0 → 6.19.0

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 (496) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -7
  3. data/Gemfile +4 -2
  4. data/Gemfile.lock +36 -34
  5. data/README.md +3 -4
  6. data/Rakefile +4 -12
  7. data/ext/windows/service/daemon.rb +3 -3
  8. data/lib/puppet.rb +33 -9
  9. data/lib/puppet/agent.rb +20 -14
  10. data/lib/puppet/agent/locker.rb +0 -7
  11. data/lib/puppet/application/agent.rb +25 -9
  12. data/lib/puppet/application/apply.rb +18 -20
  13. data/lib/puppet/application/device.rb +1 -1
  14. data/lib/puppet/application/doc.rb +1 -1
  15. data/lib/puppet/application/filebucket.rb +5 -14
  16. data/lib/puppet/application/lookup.rb +16 -4
  17. data/lib/puppet/application/plugin.rb +1 -0
  18. data/lib/puppet/application/ssl.rb +3 -3
  19. data/lib/puppet/configurer.rb +68 -24
  20. data/lib/puppet/configurer/downloader.rb +31 -10
  21. data/lib/puppet/configurer/plugin_handler.rb +1 -1
  22. data/lib/puppet/confine.rb +2 -2
  23. data/lib/puppet/confine/any.rb +1 -1
  24. data/lib/puppet/context/trusted_information.rb +14 -8
  25. data/lib/puppet/daemon.rb +13 -27
  26. data/lib/puppet/defaults.rb +141 -41
  27. data/lib/puppet/environments.rb +55 -15
  28. data/lib/puppet/face/catalog.rb +1 -1
  29. data/lib/puppet/face/config.rb +46 -16
  30. data/lib/puppet/face/facts.rb +1 -1
  31. data/lib/puppet/face/help.rb +29 -3
  32. data/lib/puppet/face/module/search.rb +5 -0
  33. data/lib/puppet/face/node.rb +3 -3
  34. data/lib/puppet/face/node/clean.rb +2 -2
  35. data/lib/puppet/face/plugin.rb +2 -2
  36. data/lib/puppet/face/status.rb +1 -1
  37. data/lib/puppet/feature/base.rb +1 -1
  38. data/lib/puppet/file_bucket/dipper.rb +1 -1
  39. data/lib/puppet/file_serving/http_metadata.rb +14 -2
  40. data/lib/puppet/file_serving/metadata.rb +4 -1
  41. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  42. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  43. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  44. data/lib/puppet/file_serving/terminus_selector.rb +7 -8
  45. data/lib/puppet/file_system/file_impl.rb +17 -13
  46. data/lib/puppet/file_system/uniquefile.rb +12 -16
  47. data/lib/puppet/forge.rb +1 -1
  48. data/lib/puppet/forge/cache.rb +1 -1
  49. data/lib/puppet/forge/repository.rb +4 -7
  50. data/lib/puppet/functions/call.rb +1 -1
  51. data/lib/puppet/functions/filter.rb +1 -0
  52. data/lib/puppet/functions/lstrip.rb +4 -4
  53. data/lib/puppet/functions/new.rb +8 -3
  54. data/lib/puppet/functions/reduce.rb +2 -4
  55. data/lib/puppet/functions/reverse_each.rb +1 -1
  56. data/lib/puppet/functions/rstrip.rb +4 -4
  57. data/lib/puppet/functions/step.rb +1 -1
  58. data/lib/puppet/functions/strip.rb +4 -4
  59. data/lib/puppet/gettext/config.rb +5 -5
  60. data/lib/puppet/gettext/module_translations.rb +4 -4
  61. data/lib/puppet/http.rb +3 -0
  62. data/lib/puppet/http/client.rb +215 -60
  63. data/lib/puppet/http/external_client.rb +90 -0
  64. data/lib/puppet/http/redirector.rb +43 -7
  65. data/lib/puppet/http/resolver.rb +43 -3
  66. data/lib/puppet/http/resolver/server_list.rb +66 -24
  67. data/lib/puppet/http/resolver/settings.rb +21 -1
  68. data/lib/puppet/http/resolver/srv.rb +28 -2
  69. data/lib/puppet/http/response.rb +82 -1
  70. data/lib/puppet/http/retry_after_handler.rb +39 -0
  71. data/lib/puppet/http/service.rb +70 -2
  72. data/lib/puppet/http/service/ca.rb +71 -9
  73. data/lib/puppet/http/service/compiler.rb +214 -12
  74. data/lib/puppet/http/service/file_server.rb +106 -5
  75. data/lib/puppet/http/service/puppetserver.rb +39 -0
  76. data/lib/puppet/http/service/report.rb +36 -3
  77. data/lib/puppet/http/session.rb +60 -8
  78. data/lib/puppet/indirector.rb +1 -1
  79. data/lib/puppet/indirector/catalog/compiler.rb +1 -1
  80. data/lib/puppet/indirector/catalog/rest.rb +2 -1
  81. data/lib/puppet/indirector/exec.rb +1 -1
  82. data/lib/puppet/indirector/facts/facter.rb +3 -3
  83. data/lib/puppet/indirector/facts/rest.rb +2 -1
  84. data/lib/puppet/indirector/facts/yaml.rb +1 -1
  85. data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
  86. data/lib/puppet/indirector/file_content/http.rb +5 -0
  87. data/lib/puppet/indirector/file_content/rest.rb +1 -1
  88. data/lib/puppet/indirector/file_metadata/http.rb +28 -8
  89. data/lib/puppet/indirector/file_metadata/rest.rb +6 -4
  90. data/lib/puppet/indirector/hiera.rb +4 -0
  91. data/lib/puppet/indirector/indirection.rb +1 -1
  92. data/lib/puppet/indirector/json.rb +1 -1
  93. data/lib/puppet/indirector/msgpack.rb +1 -1
  94. data/lib/puppet/indirector/node/rest.rb +2 -1
  95. data/lib/puppet/indirector/report/processor.rb +2 -2
  96. data/lib/puppet/indirector/report/yaml.rb +23 -0
  97. data/lib/puppet/indirector/request.rb +5 -5
  98. data/lib/puppet/indirector/rest.rb +7 -1
  99. data/lib/puppet/indirector/status/rest.rb +2 -1
  100. data/lib/puppet/indirector/yaml.rb +1 -1
  101. data/lib/puppet/metatype/manager.rb +80 -80
  102. data/lib/puppet/module.rb +1 -2
  103. data/lib/puppet/network/format_support.rb +2 -2
  104. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  105. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  106. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  107. data/lib/puppet/network/http/base_pool.rb +6 -1
  108. data/lib/puppet/network/http/compression.rb +7 -0
  109. data/lib/puppet/network/http/connection.rb +2 -0
  110. data/lib/puppet/network/http/connection_adapter.rb +184 -0
  111. data/lib/puppet/network/http/nocache_pool.rb +1 -0
  112. data/lib/puppet/network/http/pool.rb +2 -4
  113. data/lib/puppet/network/http/route.rb +2 -2
  114. data/lib/puppet/network/http_pool.rb +2 -1
  115. data/lib/puppet/node/environment.rb +22 -5
  116. data/lib/puppet/node/facts.rb +17 -0
  117. data/lib/puppet/pal/catalog_compiler.rb +5 -0
  118. data/lib/puppet/pal/pal_impl.rb +30 -31
  119. data/lib/puppet/parameter.rb +1 -1
  120. data/lib/puppet/parser/ast/leaf.rb +5 -5
  121. data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
  122. data/lib/puppet/parser/compiler.rb +43 -33
  123. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  124. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  125. data/lib/puppet/parser/environment_compiler.rb +4 -1
  126. data/lib/puppet/parser/functions.rb +18 -9
  127. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  128. data/lib/puppet/parser/functions/filter.rb +1 -0
  129. data/lib/puppet/parser/resource.rb +3 -2
  130. data/lib/puppet/parser/resource/param.rb +6 -0
  131. data/lib/puppet/parser/type_loader.rb +2 -2
  132. data/lib/puppet/pops/adaptable.rb +7 -13
  133. data/lib/puppet/pops/adapters.rb +8 -4
  134. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  135. data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
  136. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  137. data/lib/puppet/pops/issues.rb +5 -0
  138. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  139. data/lib/puppet/pops/loaders.rb +24 -15
  140. data/lib/puppet/pops/lookup/context.rb +1 -1
  141. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  142. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  143. data/lib/puppet/pops/types/iterable.rb +34 -8
  144. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  145. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  146. data/lib/puppet/pops/validation/checker4_0.rb +29 -15
  147. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  148. data/lib/puppet/provider/file/windows.rb +1 -1
  149. data/lib/puppet/provider/group/windows_adsi.rb +3 -3
  150. data/lib/puppet/provider/package/aix.rb +17 -2
  151. data/lib/puppet/provider/package/apt.rb +98 -1
  152. data/lib/puppet/provider/package/aptitude.rb +1 -1
  153. data/lib/puppet/provider/package/dnfmodule.rb +61 -14
  154. data/lib/puppet/provider/package/dpkg.rb +1 -1
  155. data/lib/puppet/provider/package/gem.rb +45 -9
  156. data/lib/puppet/provider/package/pacman.rb +2 -5
  157. data/lib/puppet/provider/package/pip.rb +143 -48
  158. data/lib/puppet/provider/package/pip2.rb +17 -0
  159. data/lib/puppet/provider/package/pip3.rb +0 -2
  160. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  161. data/lib/puppet/provider/package/pkgng.rb +16 -4
  162. data/lib/puppet/provider/package/portage.rb +2 -2
  163. data/lib/puppet/provider/package/puppet_gem.rb +11 -2
  164. data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
  165. data/lib/puppet/provider/package/rpm.rb +6 -213
  166. data/lib/puppet/provider/package/yum.rb +101 -20
  167. data/lib/puppet/provider/package/zypper.rb +62 -1
  168. data/lib/puppet/provider/service/systemd.rb +22 -4
  169. data/lib/puppet/provider/service/windows.rb +23 -7
  170. data/lib/puppet/provider/user/aix.rb +1 -1
  171. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  172. data/lib/puppet/provider/user/useradd.rb +16 -5
  173. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  174. data/lib/puppet/reports/http.rb +15 -9
  175. data/lib/puppet/resource.rb +2 -1
  176. data/lib/puppet/resource/type.rb +10 -1
  177. data/lib/puppet/resource/type_collection.rb +20 -16
  178. data/lib/puppet/rest/route.rb +2 -2
  179. data/lib/puppet/runtime.rb +25 -2
  180. data/lib/puppet/settings.rb +20 -6
  181. data/lib/puppet/ssl.rb +1 -0
  182. data/lib/puppet/ssl/host.rb +4 -4
  183. data/lib/puppet/ssl/oids.rb +1 -0
  184. data/lib/puppet/ssl/ssl_context.rb +2 -2
  185. data/lib/puppet/ssl/ssl_provider.rb +20 -1
  186. data/lib/puppet/ssl/state_machine.rb +79 -37
  187. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  188. data/lib/puppet/ssl/verifier_adapter.rb +9 -1
  189. data/lib/puppet/test/test_helper.rb +19 -14
  190. data/lib/puppet/transaction.rb +2 -2
  191. data/lib/puppet/transaction/persistence.rb +1 -1
  192. data/lib/puppet/transaction/report.rb +14 -10
  193. data/lib/puppet/trusted_external.rb +29 -1
  194. data/lib/puppet/type.rb +21 -8
  195. data/lib/puppet/type/file.rb +40 -15
  196. data/lib/puppet/type/file/checksum.rb +4 -4
  197. data/lib/puppet/type/file/source.rb +35 -13
  198. data/lib/puppet/type/filebucket.rb +1 -1
  199. data/lib/puppet/type/notify.rb +2 -2
  200. data/lib/puppet/type/package.rb +41 -3
  201. data/lib/puppet/type/service.rb +59 -8
  202. data/lib/puppet/type/user.rb +19 -29
  203. data/lib/puppet/util.rb +41 -3
  204. data/lib/puppet/util/at_fork.rb +1 -1
  205. data/lib/puppet/util/autoload.rb +13 -25
  206. data/lib/puppet/util/character_encoding.rb +9 -5
  207. data/lib/puppet/util/checksums.rb +19 -4
  208. data/lib/puppet/util/connection.rb +8 -8
  209. data/lib/puppet/util/execution.rb +2 -2
  210. data/lib/puppet/util/fileparsing.rb +2 -2
  211. data/lib/puppet/util/instance_loader.rb +14 -10
  212. data/lib/puppet/util/log/destinations.rb +1 -10
  213. data/lib/puppet/util/package/version/debian.rb +175 -0
  214. data/lib/puppet/util/package/version/gem.rb +15 -0
  215. data/lib/puppet/util/package/version/pip.rb +167 -0
  216. data/lib/puppet/util/package/version/range.rb +53 -0
  217. data/lib/puppet/util/package/version/range/eq.rb +14 -0
  218. data/lib/puppet/util/package/version/range/gt.rb +14 -0
  219. data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
  220. data/lib/puppet/util/package/version/range/lt.rb +14 -0
  221. data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
  222. data/lib/puppet/util/package/version/range/min_max.rb +21 -0
  223. data/lib/puppet/util/package/version/range/simple.rb +11 -0
  224. data/lib/puppet/util/package/version/rpm.rb +73 -0
  225. data/lib/puppet/util/pidlock.rb +13 -7
  226. data/lib/puppet/util/platform.rb +5 -0
  227. data/lib/puppet/util/provider_features.rb +1 -1
  228. data/lib/puppet/util/reference.rb +1 -1
  229. data/lib/puppet/util/rpm_compare.rb +193 -0
  230. data/lib/puppet/util/run_mode.rb +5 -1
  231. data/lib/puppet/util/windows.rb +1 -0
  232. data/lib/puppet/util/windows/adsi.rb +2 -2
  233. data/lib/puppet/util/windows/api_types.rb +60 -33
  234. data/lib/puppet/util/windows/eventlog.rb +1 -6
  235. data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
  236. data/lib/puppet/util/windows/principal.rb +8 -6
  237. data/lib/puppet/util/windows/process.rb +15 -14
  238. data/lib/puppet/util/windows/registry.rb +11 -11
  239. data/lib/puppet/util/windows/security.rb +5 -4
  240. data/lib/puppet/util/windows/service.rb +43 -26
  241. data/lib/puppet/util/windows/sid.rb +3 -3
  242. data/lib/puppet/util/windows/user.rb +242 -8
  243. data/lib/puppet/version.rb +1 -1
  244. data/locales/puppet.pot +627 -507
  245. data/man/man5/puppet.conf.5 +93 -20
  246. data/man/man8/puppet-agent.8 +7 -4
  247. data/man/man8/puppet-apply.8 +1 -1
  248. data/man/man8/puppet-catalog.8 +1 -1
  249. data/man/man8/puppet-config.8 +6 -6
  250. data/man/man8/puppet-describe.8 +1 -1
  251. data/man/man8/puppet-device.8 +1 -1
  252. data/man/man8/puppet-doc.8 +1 -1
  253. data/man/man8/puppet-epp.8 +1 -1
  254. data/man/man8/puppet-facts.8 +1 -1
  255. data/man/man8/puppet-filebucket.8 +1 -1
  256. data/man/man8/puppet-generate.8 +1 -1
  257. data/man/man8/puppet-help.8 +6 -3
  258. data/man/man8/puppet-key.8 +1 -1
  259. data/man/man8/puppet-lookup.8 +2 -2
  260. data/man/man8/puppet-man.8 +1 -1
  261. data/man/man8/puppet-module.8 +4 -1
  262. data/man/man8/puppet-node.8 +4 -4
  263. data/man/man8/puppet-parser.8 +1 -1
  264. data/man/man8/puppet-plugin.8 +1 -1
  265. data/man/man8/puppet-report.8 +1 -1
  266. data/man/man8/puppet-resource.8 +1 -1
  267. data/man/man8/puppet-script.8 +1 -1
  268. data/man/man8/puppet-ssl.8 +1 -1
  269. data/man/man8/puppet-status.8 +2 -2
  270. data/man/man8/puppet.8 +2 -2
  271. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  272. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  273. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +67 -0
  274. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -0
  275. data/spec/fixtures/ssl/unknown-ca-key.pem +67 -0
  276. data/spec/fixtures/ssl/unknown-ca.pem +59 -0
  277. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  278. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  279. data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-installed.txt → dnf-module-list.txt} +8 -0
  280. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
  281. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  282. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
  283. data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
  284. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
  285. data/spec/integration/application/agent_spec.rb +479 -0
  286. data/spec/integration/application/apply_spec.rb +279 -150
  287. data/spec/integration/application/config_spec.rb +74 -0
  288. data/spec/integration/application/doc_spec.rb +16 -6
  289. data/spec/integration/application/filebucket_spec.rb +239 -0
  290. data/spec/integration/application/help_spec.rb +42 -0
  291. data/spec/integration/application/lookup_spec.rb +13 -0
  292. data/spec/integration/application/module_spec.rb +68 -0
  293. data/spec/integration/application/plugin_spec.rb +123 -0
  294. data/spec/integration/configurer_spec.rb +14 -0
  295. data/spec/integration/data_binding_spec.rb +82 -0
  296. data/spec/integration/defaults_spec.rb +27 -3
  297. data/spec/integration/directory_environments_spec.rb +17 -17
  298. data/spec/integration/http/client_spec.rb +39 -40
  299. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  300. data/spec/integration/indirector/report/yaml.rb +83 -0
  301. data/spec/integration/network/http_pool_spec.rb +84 -19
  302. data/spec/integration/node/environment_spec.rb +15 -0
  303. data/spec/integration/parser/compiler_spec.rb +11 -0
  304. data/spec/integration/type/file_spec.rb +1 -1
  305. data/spec/integration/util/execution_spec.rb +22 -0
  306. data/spec/integration/util/windows/adsi_spec.rb +8 -3
  307. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
  308. data/spec/integration/util/windows/process_spec.rb +26 -32
  309. data/spec/integration/util/windows/registry_spec.rb +7 -7
  310. data/spec/integration/util/windows/user_spec.rb +47 -5
  311. data/spec/integration/util_spec.rb +7 -33
  312. data/spec/lib/puppet/test_ca.rb +2 -2
  313. data/spec/lib/puppet_spec/https.rb +16 -7
  314. data/spec/lib/puppet_spec/matchers.rb +0 -80
  315. data/spec/lib/puppet_spec/puppetserver.rb +127 -0
  316. data/spec/shared_contexts/https.rb +29 -0
  317. data/spec/shared_contexts/types_setup.rb +2 -0
  318. data/spec/unit/agent_spec.rb +80 -26
  319. data/spec/unit/application/agent_spec.rb +12 -9
  320. data/spec/unit/application/device_spec.rb +2 -2
  321. data/spec/unit/application/doc_spec.rb +2 -2
  322. data/spec/unit/application/face_base_spec.rb +6 -4
  323. data/spec/unit/application/facts_spec.rb +41 -10
  324. data/spec/unit/application/filebucket_spec.rb +22 -2
  325. data/spec/unit/application/man_spec.rb +52 -0
  326. data/spec/unit/application/resource_spec.rb +3 -1
  327. data/spec/unit/application/ssl_spec.rb +15 -2
  328. data/spec/unit/application_spec.rb +9 -4
  329. data/spec/unit/configurer/downloader_spec.rb +10 -0
  330. data/spec/unit/configurer/fact_handler_spec.rb +4 -4
  331. data/spec/unit/configurer_spec.rb +87 -38
  332. data/spec/unit/confine_spec.rb +2 -1
  333. data/spec/unit/context/trusted_information_spec.rb +25 -2
  334. data/spec/unit/daemon_spec.rb +5 -64
  335. data/spec/unit/defaults_spec.rb +24 -1
  336. data/spec/unit/environments_spec.rb +107 -32
  337. data/spec/unit/face/config_spec.rb +59 -1
  338. data/spec/unit/face/module/search_spec.rb +17 -0
  339. data/spec/unit/face/node_spec.rb +2 -2
  340. data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
  341. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  342. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  343. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  344. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
  345. data/spec/unit/file_system/uniquefile_spec.rb +29 -0
  346. data/spec/unit/file_system_spec.rb +11 -2
  347. data/spec/unit/http/client_spec.rb +173 -59
  348. data/spec/unit/http/external_client_spec.rb +201 -0
  349. data/spec/unit/http/resolver_spec.rb +44 -5
  350. data/spec/unit/http/response_spec.rb +6 -0
  351. data/spec/unit/http/service/ca_spec.rb +27 -5
  352. data/spec/unit/http/service/compiler_spec.rb +186 -9
  353. data/spec/unit/http/service/file_server_spec.rb +37 -6
  354. data/spec/unit/http/service/puppetserver_spec.rb +82 -0
  355. data/spec/unit/http/service/report_spec.rb +5 -4
  356. data/spec/unit/http/service_spec.rb +3 -4
  357. data/spec/unit/http/session_spec.rb +48 -12
  358. data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
  359. data/spec/unit/indirector/catalog/json_spec.rb +1 -1
  360. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  361. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  362. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -2
  363. data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
  364. data/spec/unit/indirector/file_metadata/rest_spec.rb +15 -14
  365. data/spec/unit/indirector/json_spec.rb +8 -8
  366. data/spec/unit/indirector/msgpack_spec.rb +8 -8
  367. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  368. data/spec/unit/indirector/request_spec.rb +5 -5
  369. data/spec/unit/indirector/rest_spec.rb +14 -1
  370. data/spec/unit/indirector/status/rest_spec.rb +1 -1
  371. data/spec/unit/indirector/yaml_spec.rb +7 -7
  372. data/spec/unit/interface_spec.rb +3 -3
  373. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  374. data/spec/unit/network/format_support_spec.rb +3 -2
  375. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
  376. data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
  377. data/spec/unit/network/http/connection_spec.rb +552 -190
  378. data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
  379. data/spec/unit/network/http/pool_spec.rb +3 -3
  380. data/spec/unit/network/http_pool_spec.rb +63 -57
  381. data/spec/unit/network/http_spec.rb +1 -1
  382. data/spec/unit/node/environment_spec.rb +33 -0
  383. data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
  384. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  385. data/spec/unit/parser/scope_spec.rb +1 -1
  386. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
  387. data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
  388. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  389. data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
  390. data/spec/unit/provider/exec_spec.rb +4 -3
  391. data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
  392. data/spec/unit/provider/package/aix_spec.rb +29 -0
  393. data/spec/unit/provider/package/apt_spec.rb +107 -0
  394. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  395. data/spec/unit/provider/package/dnfmodule_spec.rb +54 -15
  396. data/spec/unit/provider/package/dpkg_spec.rb +22 -7
  397. data/spec/unit/provider/package/gem_spec.rb +40 -0
  398. data/spec/unit/provider/package/openbsd_spec.rb +2 -0
  399. data/spec/unit/provider/package/pacman_spec.rb +6 -21
  400. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  401. data/spec/unit/provider/package/pip_spec.rb +68 -19
  402. data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
  403. data/spec/unit/provider/package/pkgng_spec.rb +38 -0
  404. data/spec/unit/provider/package/portage_spec.rb +5 -0
  405. data/spec/unit/provider/package/puppet_gem_spec.rb +12 -1
  406. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  407. data/spec/unit/provider/package/rpm_spec.rb +0 -212
  408. data/spec/unit/provider/package/yum_spec.rb +274 -1
  409. data/spec/unit/provider/package/zypper_spec.rb +98 -0
  410. data/spec/unit/provider/service/base_spec.rb +2 -4
  411. data/spec/unit/provider/service/bsd_spec.rb +5 -1
  412. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  413. data/spec/unit/provider/service/debian_spec.rb +3 -5
  414. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  415. data/spec/unit/provider/service/gentoo_spec.rb +4 -5
  416. data/spec/unit/provider/service/init_spec.rb +46 -5
  417. data/spec/unit/provider/service/launchd_spec.rb +5 -6
  418. data/spec/unit/provider/service/openbsd_spec.rb +9 -0
  419. data/spec/unit/provider/service/openrc_spec.rb +4 -5
  420. data/spec/unit/provider/service/openwrt_spec.rb +2 -1
  421. data/spec/unit/provider/service/redhat_spec.rb +10 -1
  422. data/spec/unit/provider/service/runit_spec.rb +2 -1
  423. data/spec/unit/provider/service/smf_spec.rb +1 -1
  424. data/spec/unit/provider/service/src_spec.rb +3 -5
  425. data/spec/unit/provider/service/systemd_spec.rb +95 -18
  426. data/spec/unit/provider/service/upstart_spec.rb +4 -5
  427. data/spec/unit/provider/service/windows_spec.rb +50 -14
  428. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  429. data/spec/unit/provider/user/useradd_spec.rb +30 -16
  430. data/spec/unit/provider/user/windows_adsi_spec.rb +85 -3
  431. data/spec/unit/puppet_pal_2pec.rb +11 -0
  432. data/spec/unit/puppet_pal_catalog_spec.rb +43 -0
  433. data/spec/unit/puppet_spec.rb +33 -0
  434. data/spec/unit/reports/http_spec.rb +70 -52
  435. data/spec/unit/reports/store_spec.rb +17 -13
  436. data/spec/unit/resource_spec.rb +3 -3
  437. data/spec/unit/rest/route_spec.rb +4 -4
  438. data/spec/unit/settings_spec.rb +44 -22
  439. data/spec/unit/ssl/host_spec.rb +4 -2
  440. data/spec/unit/ssl/oids_spec.rb +1 -0
  441. data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
  442. data/spec/unit/ssl/state_machine_spec.rb +90 -14
  443. data/spec/unit/test/test_helper_spec.rb +17 -0
  444. data/spec/unit/transaction/persistence_spec.rb +15 -0
  445. data/spec/unit/transaction/report_spec.rb +7 -1
  446. data/spec/unit/type/file/source_spec.rb +4 -4
  447. data/spec/unit/type/file_spec.rb +122 -96
  448. data/spec/unit/type/filebucket_spec.rb +1 -1
  449. data/spec/unit/type/service_spec.rb +218 -8
  450. data/spec/unit/type/user_spec.rb +32 -3
  451. data/spec/unit/type_spec.rb +50 -0
  452. data/spec/unit/util/at_fork_spec.rb +2 -2
  453. data/spec/unit/util/autoload_spec.rb +2 -1
  454. data/spec/unit/util/character_encoding_spec.rb +4 -4
  455. data/spec/unit/util/checksums_spec.rb +16 -0
  456. data/spec/unit/util/command_line_spec.rb +11 -6
  457. data/spec/unit/util/log/destinations_spec.rb +1 -29
  458. data/spec/unit/util/package/version/debian_spec.rb +83 -0
  459. data/spec/unit/util/package/version/pip_spec.rb +464 -0
  460. data/spec/unit/util/package/version/range_spec.rb +175 -0
  461. data/spec/unit/util/package/version/rpm_spec.rb +121 -0
  462. data/spec/unit/util/pidlock_spec.rb +83 -47
  463. data/spec/unit/util/rpm_compare_spec.rb +196 -0
  464. data/spec/unit/util/run_mode_spec.rb +6 -6
  465. data/spec/unit/util/windows/adsi_spec.rb +4 -4
  466. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  467. data/spec/unit/util/windows/service_spec.rb +4 -4
  468. data/spec/unit/util/windows/sid_spec.rb +2 -2
  469. data/spec/unit/util_spec.rb +3 -3
  470. data/spec/unit/x509/cert_provider_spec.rb +1 -1
  471. data/tasks/generate_cert_fixtures.rake +15 -1
  472. data/tasks/manpages.rake +5 -35
  473. metadata +90 -51
  474. data/spec/integration/faces/config_spec.rb +0 -91
  475. data/spec/integration/faces/documentation_spec.rb +0 -57
  476. data/spec/integration/faces/plugin_spec.rb +0 -63
  477. data/spec/integration/file_bucket/file_spec.rb +0 -50
  478. data/spec/integration/file_serving/content_spec.rb +0 -7
  479. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  480. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  481. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  482. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  483. data/spec/integration/module_tool/forge_spec.rb +0 -64
  484. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  485. data/spec/integration/provider/service/init_spec.rb +0 -48
  486. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  487. data/spec/integration/provider/service/windows_spec.rb +0 -50
  488. data/spec/integration/reference/providers_spec.rb +0 -21
  489. data/spec/integration/reports_spec.rb +0 -13
  490. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  491. data/spec/integration/ssl/host_spec.rb +0 -72
  492. data/spec/integration/ssl/key_spec.rb +0 -99
  493. data/spec/integration/test/test_helper_spec.rb +0 -31
  494. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  495. data/spec/unit/face/man_spec.rb +0 -25
  496. data/spec/unit/man_spec.rb +0 -31
@@ -138,7 +138,10 @@ class Puppet::FileServing::Metadata < Puppet::FileServing::Base
138
138
  @source = data.delete('source')
139
139
  @content_uri = data.delete('content_uri')
140
140
 
141
- super(path, data.map { |k, v| [k.to_sym, v] }.to_h)
141
+ links = data.fetch('links', nil) || data.fetch(:links, nil)
142
+ relative_path = data.fetch('relative_path', nil) || data.fetch(:relative_path, nil)
143
+ source = @source || data.fetch(:source, nil)
144
+ super(path, links: links, relative_path: relative_path, source: source)
142
145
  end
143
146
 
144
147
  def to_data_hash
@@ -17,14 +17,13 @@ class Puppet::FileServing::Mount::Locales < Puppet::FileServing::Mount
17
17
  def search(relative_path, request)
18
18
  # We currently only support one kind of search on locales - return
19
19
  # them all.
20
- Puppet.debug("Warning: calling Locales.search with empty module path.") if request.environment.modules.empty?
21
20
  paths = request.environment.modules.find_all { |mod| mod.locales? }.collect { |mod| mod.locale_directory }
22
21
  if paths.empty?
23
22
  # If the modulepath is valid then we still need to return a valid root
24
23
  # directory for the search, but make sure nothing inside it is
25
24
  # returned.
26
25
  request.options[:recurse] = false
27
- request.environment.modulepath.empty? ? nil : request.environment.modulepath
26
+ request.environment.modulepath.empty? ? [Puppet[:codedir]] : request.environment.modulepath
28
27
  else
29
28
  paths
30
29
  end
@@ -17,14 +17,13 @@ class Puppet::FileServing::Mount::PluginFacts < Puppet::FileServing::Mount
17
17
  def search(relative_path, request)
18
18
  # We currently only support one kind of search on plugins - return
19
19
  # them all.
20
- Puppet.debug("Warning: calling Plugins.search with empty module path.") if request.environment.modules.empty?
21
20
  paths = request.environment.modules.find_all { |mod| mod.pluginfacts? }.collect { |mod| mod.plugin_fact_directory }
22
21
  if paths.empty?
23
22
  # If the modulepath is valid then we still need to return a valid root
24
23
  # directory for the search, but make sure nothing inside it is
25
24
  # returned.
26
25
  request.options[:recurse] = false
27
- request.environment.modulepath.empty? ? nil : request.environment.modulepath
26
+ request.environment.modulepath.empty? ? [Puppet[:codedir]] : request.environment.modulepath
28
27
  else
29
28
  paths
30
29
  end
@@ -17,14 +17,13 @@ class Puppet::FileServing::Mount::Plugins < Puppet::FileServing::Mount
17
17
  def search(relative_path, request)
18
18
  # We currently only support one kind of search on plugins - return
19
19
  # them all.
20
- Puppet.debug("Warning: calling Plugins.search with empty module path.") if request.environment.modules.empty?
21
20
  paths = request.environment.modules.find_all { |mod| mod.plugins? }.collect { |mod| mod.plugin_directory }
22
21
  if paths.empty?
23
22
  # If the modulepath is valid then we still need to return a valid root
24
23
  # directory for the search, but make sure nothing inside it is
25
24
  # returned.
26
25
  request.options[:recurse] = false
27
- request.environment.modulepath.empty? ? nil : request.environment.modulepath
26
+ request.environment.modulepath.empty? ? [Puppet[:codedir]] : request.environment.modulepath
28
27
  else
29
28
  paths
30
29
  end
@@ -7,11 +7,6 @@ module Puppet::FileServing::TerminusSelector
7
7
  def select(request)
8
8
  # We rely on the request's parsing of the URI.
9
9
 
10
- # Short-circuit to :file if it's a fully-qualified path or specifies a 'file' protocol.
11
- if Puppet::Util.absolute_path?(request.key)
12
- return :file
13
- end
14
-
15
10
  case request.protocol
16
11
  when "file"
17
12
  :file
@@ -21,10 +16,14 @@ module Puppet::FileServing::TerminusSelector
21
16
  else
22
17
  Puppet[:default_file_terminus]
23
18
  end
24
- when "http","https"
25
- :http
19
+ when "http","https"
20
+ :http
26
21
  when nil
27
- :file_server
22
+ if Puppet::Util.absolute_path?(request.key)
23
+ :file
24
+ else
25
+ :file_server
26
+ end
28
27
  else
29
28
  raise ArgumentError, _("URI protocol '%{protocol}' is not currently supported for file serving") % { protocol: request.protocol }
30
29
  end
@@ -54,12 +54,12 @@ class Puppet::FileSystem::FileImpl
54
54
  while !written
55
55
  ::File.open(path, options, mode) do |rf|
56
56
  if rf.flock(::File::LOCK_EX|::File::LOCK_NB)
57
- Puppet.debug(_("Locked '%{path}'") % { path: path })
57
+ Puppet.debug{ _("Locked '%{path}'") % { path: path } }
58
58
  yield rf
59
59
  written = true
60
- Puppet.debug(_("Unlocked '%{path}'") % { path: path })
60
+ Puppet.debug{ _("Unlocked '%{path}'") % { path: path } }
61
61
  else
62
- Puppet.debug("Failed to lock '%s' retrying in %.2f milliseconds" % [path, wait * 1000])
62
+ Puppet.debug{ "Failed to lock '%s' retrying in %.2f milliseconds" % [path, wait * 1000] }
63
63
  sleep wait
64
64
  timeout -= wait
65
65
  wait *= 2
@@ -80,7 +80,7 @@ class Puppet::FileSystem::FileImpl
80
80
  end
81
81
 
82
82
  def read(path, opts = {})
83
- path.read(opts)
83
+ path.read(**opts)
84
84
  end
85
85
 
86
86
  def read_preserve_line_endings(path)
@@ -124,7 +124,7 @@ class Puppet::FileSystem::FileImpl
124
124
  end
125
125
 
126
126
  def symlink(path, dest, options = {})
127
- FileUtils.symlink(path, dest, options)
127
+ FileUtils.symlink(path, dest, **options)
128
128
  end
129
129
 
130
130
  def symlink?(path)
@@ -156,12 +156,14 @@ class Puppet::FileSystem::FileImpl
156
156
  end
157
157
 
158
158
  def replace_file(path, mode = nil)
159
- mode ||= begin
160
- stat = Puppet::FileSystem.lstat(path)
161
- stat.mode & 07777
162
- rescue Errno::ENOENT
163
- 0640
164
- end
159
+ begin
160
+ stat = Puppet::FileSystem.lstat(path)
161
+ gid = stat.gid
162
+ uid = stat.uid
163
+ mode ||= stat.mode & 07777
164
+ rescue Errno::ENOENT
165
+ mode ||= 0640
166
+ end
165
167
 
166
168
  tempfile = Puppet::FileSystem::Uniquefile.new(Puppet::FileSystem.basename_string(path), Puppet::FileSystem.dir_string(path))
167
169
  begin
@@ -173,8 +175,10 @@ class Puppet::FileSystem::FileImpl
173
175
  tempfile.close
174
176
  end
175
177
 
176
- chmod(mode, tempfile.path)
177
- File.rename(tempfile.path, Puppet::FileSystem.path_string(path))
178
+ tempfile_path = tempfile.path
179
+ FileUtils.chown(uid, gid, tempfile_path) if uid && gid
180
+ chmod(mode, tempfile_path)
181
+ File.rename(tempfile_path, Puppet::FileSystem.path_string(path))
178
182
  ensure
179
183
  tempfile.close!
180
184
  end
@@ -124,11 +124,7 @@ class Puppet::FileSystem::Uniquefile < DelegateClass(File)
124
124
  opts = []
125
125
  end
126
126
  tmpdir, = *rest
127
- if $SAFE > 0 and tmpdir.tainted?
128
- tmpdir = '/tmp'
129
- else
130
- tmpdir ||= tmpdir()
131
- end
127
+ tmpdir ||= tmpdir()
132
128
  n = nil
133
129
  begin
134
130
  path = File.expand_path(make_tmpname(basename, n), tmpdir)
@@ -154,18 +150,14 @@ class Puppet::FileSystem::Uniquefile < DelegateClass(File)
154
150
 
155
151
  def tmpdir
156
152
  tmp = '.'
157
- if $SAFE > 0
158
- @@systmpdir
159
- else
160
- for dir in [ Puppet::Util.get_env('TMPDIR'), Puppet::Util.get_env('TMP'), Puppet::Util.get_env('TEMP'), @@systmpdir, '/tmp']
161
- stat = File.stat(dir) if dir
162
- if stat && stat.directory? && stat.writable?
163
- tmp = dir
164
- break
165
- end rescue nil
166
- end
167
- File.expand_path(tmp)
153
+ for dir in [ Puppet::Util.get_env('TMPDIR'), Puppet::Util.get_env('TMP'), Puppet::Util.get_env('TEMP'), @@systmpdir, '/tmp']
154
+ stat = File.stat(dir) if dir
155
+ if stat && stat.directory? && stat.writable?
156
+ tmp = dir
157
+ break
158
+ end rescue nil
168
159
  end
160
+ File.expand_path(tmp)
169
161
  end
170
162
 
171
163
 
@@ -176,6 +168,10 @@ class Puppet::FileSystem::Uniquefile < DelegateClass(File)
176
168
  lock = tmpname + '.lock'
177
169
  mkdir(lock)
178
170
  yield
171
+ rescue Errno::ENOENT => e
172
+ ex = Errno::ENOENT.new("A directory component in #{lock} does not exist or is a dangling symbolic link")
173
+ ex.set_backtrace(e.backtrace)
174
+ raise ex
179
175
  ensure
180
176
  rmdir(lock) if Puppet::FileSystem.exist?(lock)
181
177
  end
@@ -254,6 +254,6 @@ class Puppet::Forge < SemanticPuppet::Dependency::Source
254
254
  def decode_uri(uri)
255
255
  return if uri.nil?
256
256
 
257
- URI.decode(uri.tr('+', ' '))
257
+ Puppet::Util.uri_unescape(uri.tr('+', ' '))
258
258
  end
259
259
  end
@@ -25,7 +25,7 @@ class Puppet::Forge
25
25
  unless cached_file.file?
26
26
  if uri.scheme == 'file'
27
27
  # CGI.unescape butchers Uris that are escaped properly
28
- FileUtils.cp(URI.unescape(uri.path), cached_file)
28
+ FileUtils.cp(Puppet::Util.uri_unescape(uri.path), cached_file)
29
29
  else
30
30
  # TODO: Handle HTTPS; probably should use repository.contact
31
31
  data = read_retrieve(uri)
@@ -37,18 +37,15 @@ class Puppet::Forge
37
37
  uri = URI(str)
38
38
 
39
39
  headers = { "User-Agent" => user_agent }
40
- user = nil
41
- password = nil
42
40
 
43
41
  if forge_authorization
42
+ uri.user = nil
43
+ uri.password = nil
44
44
  headers["Authorization"] = forge_authorization
45
- elsif @uri.user && @uri.password
46
- user = @uri.user
47
- password = @uri.password
48
45
  end
49
46
 
50
- http = Puppet.runtime['http']
51
- response = http.get(uri, headers: headers, user: user, password: password, ssl_context: @ssl_context)
47
+ http = Puppet.runtime[:http]
48
+ response = http.get(uri, headers: headers, options: {ssl_context: @ssl_context})
52
49
  io.write(response.body) if io.respond_to?(:write)
53
50
  response
54
51
  rescue Puppet::SSL::CertVerifyError => e
@@ -51,7 +51,7 @@
51
51
  #
52
52
  # Would notice the value of `$facts['processors']['count']` at the time when the `call` is made.
53
53
  #
54
- # * Deferred values supported since Puppet 5.6.0
54
+ # * Deferred values supported since Puppet 6.0
55
55
  #
56
56
  # @since 5.0.0
57
57
  #
@@ -38,6 +38,7 @@
38
38
  # $data = { "orange" => 0, "blueberry" => 1, "raspberry" => 2 }
39
39
  # $filtered_data = $data.filter |$items| { $items[0] =~ /berry$/ }
40
40
  # # $filtered_data = {blueberry => 1, raspberry => 2}
41
+ # ```
41
42
  #
42
43
  # When the first argument is an array and the lambda has two parameters, Puppet passes the
43
44
  # array's indexes (enumerated from 0) in the first parameter and its values in the second
@@ -12,15 +12,15 @@
12
12
  #
13
13
  # @example Removing leading space from a String
14
14
  # ```puppet
15
- # "\n\thello".lstrip()
16
- # camelcase("\n\thello")
15
+ # "\n\thello ".lstrip()
16
+ # lstrip("\n\thello ")
17
17
  # ```
18
18
  # Would both result in `"hello"`
19
19
  #
20
20
  # @example Removing leading space from strings in an Array
21
21
  # ```puppet
22
- # ["\n\thello", "\n\thi"].lstrip()
23
- # lstrip(["\n\thello", "\n\thi"])
22
+ # ["\n\thello ", "\n\thi "].lstrip()
23
+ # lstrip(["\n\thello ", "\n\thi "])
24
24
  # ```
25
25
  # Would both result in `['hello', 'hi']`
26
26
  #
@@ -991,12 +991,17 @@ Puppet::Functions.create_function(:new, Puppet::Functions::InternalFunction) do
991
991
 
992
992
  def new_instance(scope, t, *args)
993
993
  return args[0] if args.size == 1 && !t.is_a?(Puppet::Pops::Types::PInitType) && t.instance?(args[0])
994
- result = assert_type(t, new_function_for_type(t, scope).call(scope, *args))
994
+ result = assert_type(t, new_function_for_type(t).call(scope, *args))
995
995
  return block_given? ? yield(result) : result
996
996
  end
997
997
 
998
- def new_function_for_type(t, scope)
999
- @new_function_cache ||= Hash.new() {|hsh, key| hsh[key] = key.new_function.new(scope, loader) }
998
+ def new_function_for_type(t)
999
+ @new_function_cache ||= {}
1000
+
1001
+ unless @new_function_cache.key?(t)
1002
+ @new_function_cache[t] = t.new_function.new(nil, loader)
1003
+ end
1004
+
1000
1005
  @new_function_cache[t]
1001
1006
  end
1002
1007
 
@@ -39,11 +39,9 @@
39
39
  # values to the lambda.
40
40
  #
41
41
  # Puppet calls the lambda for each of the data structure's remaining values. For each
42
- # call, it passes the result of the previous call as the first parameter ($memo in the
42
+ # call, it passes the result of the previous call as the first parameter (`$memo` in the
43
43
  # above examples) and the next value from the data structure as the second parameter
44
- # ($value).
45
- #
46
- # If the structure has one value, Puppet returns the value and does not call the lambda.
44
+ # (`$value`).
47
45
  #
48
46
  # @example Using the `reduce` function
49
47
  #
@@ -84,7 +84,7 @@ Puppet::Functions.create_function(:reverse_each) do
84
84
 
85
85
  def reverse_each(iterable)
86
86
  # produces an Iterable
87
- Puppet::Pops::Types::Iterable.asserted_iterable(self, iterable).reverse_each
87
+ Puppet::Pops::Types::Iterable.asserted_iterable(self, iterable, true).reverse_each
88
88
  end
89
89
 
90
90
  def reverse_each_block(iterable, &block)
@@ -12,15 +12,15 @@
12
12
  #
13
13
  # @example Removing trailing space from a String
14
14
  # ```puppet
15
- # "hello\n\t".lstrip()
16
- # camelcase("hello\n\t")
15
+ # " hello\n\t".rstrip()
16
+ # rstrip(" hello\n\t")
17
17
  # ```
18
18
  # Would both result in `"hello"`
19
19
  #
20
20
  # @example Removing trailing space from strings in an Array
21
21
  # ```puppet
22
- # ["hello\n\t", "hi\n\t"].lstrip()
23
- # lstrip(["hello\n\t", "hi\n\t"])
22
+ # [" hello\n\t", " hi\n\t"].rstrip()
23
+ # rstrip([" hello\n\t", " hi\n\t"])
24
24
  # ```
25
25
  # Would both result in `['hello', 'hi']`
26
26
  #
@@ -88,7 +88,7 @@ Puppet::Functions.create_function(:step) do
88
88
 
89
89
  def step(iterable, step)
90
90
  # produces an Iterable
91
- Puppet::Pops::Types::Iterable.asserted_iterable(self, iterable).step(step)
91
+ Puppet::Pops::Types::Iterable.asserted_iterable(self, iterable, true).step(step)
92
92
  end
93
93
 
94
94
  def step_block(iterable, step, &block)
@@ -12,15 +12,15 @@
12
12
  #
13
13
  # @example Removing leading and trailing space from a String
14
14
  # ```puppet
15
- # " hello\n\t".lstrip()
16
- # camelcase(" hello\n\t")
15
+ # " hello\n\t".strip()
16
+ # strip(" hello\n\t")
17
17
  # ```
18
18
  # Would both result in `"hello"`
19
19
  #
20
20
  # @example Removing trailing space from strings in an Array
21
21
  # ```puppet
22
- # [" hello\n\t", " hi\n\t"].lstrip()
23
- # lstrip([" hello\n\t", " hi\n\t"])
22
+ # [" hello\n\t", " hi\n\t"].strip()
23
+ # strip([" hello\n\t", " hi\n\t"])
24
24
  # ```
25
25
  # Would both result in `['hello', 'hi']`
26
26
  #
@@ -65,7 +65,7 @@ module Puppet::GettextConfig
65
65
  return if @gettext_disabled || !gettext_loaded?
66
66
  domain_name = domain_name.to_sym
67
67
 
68
- Puppet.debug "Reset text domain to #{domain_name.inspect}"
68
+ Puppet.debug { "Reset text domain to #{domain_name.inspect}" }
69
69
  FastGettext.add_text_domain(domain_name,
70
70
  type: :chain,
71
71
  chain: [],
@@ -115,10 +115,10 @@ module Puppet::GettextConfig
115
115
  domain_name = domain_name.to_sym
116
116
 
117
117
  if FastGettext.translation_repositories.include?(domain_name)
118
- Puppet.debug "Use text domain #{domain_name.inspect}"
118
+ Puppet.debug { "Use text domain #{domain_name.inspect}" }
119
119
  FastGettext.text_domain = domain_name
120
120
  else
121
- Puppet.debug "Requested unknown text domain #{domain_name.inspect}"
121
+ Puppet.debug { "Requested unknown text domain #{domain_name.inspect}" }
122
122
  end
123
123
  end
124
124
 
@@ -139,10 +139,10 @@ module Puppet::GettextConfig
139
139
 
140
140
  deleted = FastGettext.translation_repositories.delete(domain_name)
141
141
  if FastGettext.text_domain == domain_name
142
- Puppet.debug "Deleted current text domain #{domain_name.inspect}: #{!deleted.nil?}"
142
+ Puppet.debug { "Deleted current text domain #{domain_name.inspect}: #{!deleted.nil?}" }
143
143
  FastGettext.text_domain = nil
144
144
  else
145
- Puppet.debug "Deleted text domain #{domain_name.inspect}: #{!deleted.nil?}"
145
+ Puppet.debug { "Deleted text domain #{domain_name.inspect}: #{!deleted.nil?}" }
146
146
  end
147
147
  end
148
148
 
@@ -13,9 +13,9 @@ module Puppet::ModuleTranslations
13
13
 
14
14
  module_name = mod.forge_name.tr('/', '-')
15
15
  if Puppet::GettextConfig.load_translations(module_name, mod.locale_directory, :po)
16
- Puppet.debug "Loaded translations for #{module_name}."
16
+ Puppet.debug { "Loaded translations for #{module_name}." }
17
17
  elsif Puppet::GettextConfig.gettext_loaded?
18
- Puppet.debug "Could not find translation files for #{module_name} at #{mod.locale_directory}. Skipping translation initialization."
18
+ Puppet.debug { "Could not find translation files for #{module_name} at #{mod.locale_directory}. Skipping translation initialization." }
19
19
  else
20
20
  Puppet.warn_once("gettext_unavailable", "gettext_unavailable", "No gettext library found, skipping translation initialization.")
21
21
  end
@@ -31,9 +31,9 @@ module Puppet::ModuleTranslations
31
31
  Dir.glob("#{vardir}/locales/#{locale}/*.po") do |f|
32
32
  module_name = File.basename(f, ".po")
33
33
  if Puppet::GettextConfig.load_translations(module_name, File.join(vardir, "locales"), :po)
34
- Puppet.debug "Loaded translations for #{module_name}."
34
+ Puppet.debug { "Loaded translations for #{module_name}." }
35
35
  elsif Puppet::GettextConfig.gettext_loaded?
36
- Puppet.debug "Could not load translations for #{module_name}."
36
+ Puppet.debug { "Could not load translations for #{module_name}." }
37
37
  else
38
38
  Puppet.warn_once("gettext_unavailable", "gettext_unavailable", "No gettext library found, skipping translation initialization.")
39
39
  end