puppet 6.13.0 → 6.18.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 (461) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -7
  3. data/CONTRIBUTING.md +7 -13
  4. data/Gemfile +4 -2
  5. data/Gemfile.lock +36 -32
  6. data/README.md +17 -24
  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/application/agent.rb +26 -17
  11. data/lib/puppet/application/apply.rb +18 -20
  12. data/lib/puppet/application/describe.rb +7 -5
  13. data/lib/puppet/application/device.rb +2 -2
  14. data/lib/puppet/application/filebucket.rb +19 -15
  15. data/lib/puppet/application/lookup.rb +16 -4
  16. data/lib/puppet/application/plugin.rb +1 -0
  17. data/lib/puppet/application/ssl.rb +4 -4
  18. data/lib/puppet/configurer.rb +58 -57
  19. data/lib/puppet/configurer/downloader.rb +31 -10
  20. data/lib/puppet/configurer/plugin_handler.rb +10 -1
  21. data/lib/puppet/confine.rb +2 -2
  22. data/lib/puppet/confine/any.rb +1 -1
  23. data/lib/puppet/context/trusted_information.rb +14 -8
  24. data/lib/puppet/daemon.rb +13 -27
  25. data/lib/puppet/defaults.rb +92 -12
  26. data/lib/puppet/environments.rb +4 -5
  27. data/lib/puppet/face/facts.rb +1 -1
  28. data/lib/puppet/face/help.rb +29 -3
  29. data/lib/puppet/face/module/search.rb +5 -0
  30. data/lib/puppet/face/plugin.rb +2 -2
  31. data/lib/puppet/feature/base.rb +1 -1
  32. data/lib/puppet/file_serving/http_metadata.rb +14 -2
  33. data/lib/puppet/file_serving/metadata.rb +4 -1
  34. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  35. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  36. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  37. data/lib/puppet/file_serving/terminus_selector.rb +7 -8
  38. data/lib/puppet/file_system/file_impl.rb +17 -13
  39. data/lib/puppet/file_system/uniquefile.rb +12 -16
  40. data/lib/puppet/forge.rb +1 -1
  41. data/lib/puppet/forge/cache.rb +1 -1
  42. data/lib/puppet/forge/repository.rb +4 -7
  43. data/lib/puppet/functions/call.rb +1 -1
  44. data/lib/puppet/functions/eyaml_lookup_key.rb +13 -8
  45. data/lib/puppet/functions/filter.rb +1 -0
  46. data/lib/puppet/functions/lstrip.rb +4 -4
  47. data/lib/puppet/functions/reduce.rb +2 -4
  48. data/lib/puppet/functions/reverse_each.rb +1 -1
  49. data/lib/puppet/functions/rstrip.rb +4 -4
  50. data/lib/puppet/functions/step.rb +1 -1
  51. data/lib/puppet/functions/strip.rb +4 -4
  52. data/lib/puppet/gettext/config.rb +5 -5
  53. data/lib/puppet/gettext/module_translations.rb +4 -4
  54. data/lib/puppet/http.rb +3 -0
  55. data/lib/puppet/http/client.rb +263 -73
  56. data/lib/puppet/http/external_client.rb +90 -0
  57. data/lib/puppet/http/redirector.rb +43 -7
  58. data/lib/puppet/http/resolver.rb +46 -3
  59. data/lib/puppet/http/resolver/server_list.rb +76 -16
  60. data/lib/puppet/http/resolver/settings.rb +23 -3
  61. data/lib/puppet/http/resolver/srv.rb +29 -3
  62. data/lib/puppet/http/response.rb +87 -1
  63. data/lib/puppet/http/retry_after_handler.rb +39 -0
  64. data/lib/puppet/http/service.rb +97 -12
  65. data/lib/puppet/http/service/ca.rb +76 -14
  66. data/lib/puppet/http/service/compiler.rb +249 -16
  67. data/lib/puppet/http/service/file_server.rb +141 -20
  68. data/lib/puppet/http/service/report.rb +47 -17
  69. data/lib/puppet/http/session.rb +96 -7
  70. data/lib/puppet/indirector.rb +1 -1
  71. data/lib/puppet/indirector/catalog/rest.rb +34 -0
  72. data/lib/puppet/indirector/exec.rb +1 -1
  73. data/lib/puppet/indirector/facts/facter.rb +3 -3
  74. data/lib/puppet/indirector/facts/rest.rb +42 -0
  75. data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
  76. data/lib/puppet/indirector/file_content/http.rb +5 -0
  77. data/lib/puppet/indirector/file_content/rest.rb +30 -0
  78. data/lib/puppet/indirector/file_metadata/http.rb +28 -8
  79. data/lib/puppet/indirector/file_metadata/rest.rb +52 -0
  80. data/lib/puppet/indirector/hiera.rb +4 -0
  81. data/lib/puppet/indirector/indirection.rb +1 -1
  82. data/lib/puppet/indirector/node/rest.rb +24 -0
  83. data/lib/puppet/indirector/report/processor.rb +2 -2
  84. data/lib/puppet/indirector/report/rest.rb +19 -0
  85. data/lib/puppet/indirector/report/yaml.rb +23 -0
  86. data/lib/puppet/indirector/request.rb +1 -1
  87. data/lib/puppet/indirector/rest.rb +12 -0
  88. data/lib/puppet/indirector/status/rest.rb +18 -0
  89. data/lib/puppet/loaders.rb +6 -0
  90. data/lib/puppet/metatype/manager.rb +80 -80
  91. data/lib/puppet/module.rb +1 -2
  92. data/lib/puppet/network/format_support.rb +2 -2
  93. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  94. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  95. data/lib/puppet/network/http/base_pool.rb +7 -2
  96. data/lib/puppet/network/http/compression.rb +7 -0
  97. data/lib/puppet/network/http/connection.rb +2 -0
  98. data/lib/puppet/network/http/connection_adapter.rb +184 -0
  99. data/lib/puppet/network/http/nocache_pool.rb +1 -0
  100. data/lib/puppet/network/http/pool.rb +8 -5
  101. data/lib/puppet/network/http/route.rb +2 -2
  102. data/lib/puppet/network/http_pool.rb +2 -1
  103. data/lib/puppet/node/environment.rb +22 -5
  104. data/lib/puppet/pal/catalog_compiler.rb +5 -0
  105. data/lib/puppet/pal/pal_impl.rb +30 -31
  106. data/lib/puppet/parameter.rb +1 -1
  107. data/lib/puppet/parser/ast/leaf.rb +5 -5
  108. data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
  109. data/lib/puppet/parser/compiler.rb +43 -33
  110. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  111. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  112. data/lib/puppet/parser/environment_compiler.rb +4 -1
  113. data/lib/puppet/parser/functions.rb +18 -9
  114. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  115. data/lib/puppet/parser/functions/filter.rb +1 -0
  116. data/lib/puppet/parser/resource.rb +3 -2
  117. data/lib/puppet/parser/resource/param.rb +6 -0
  118. data/lib/puppet/parser/type_loader.rb +2 -2
  119. data/lib/puppet/pops/adaptable.rb +7 -13
  120. data/lib/puppet/pops/adapters.rb +8 -4
  121. data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
  122. data/lib/puppet/pops/issues.rb +5 -0
  123. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  124. data/lib/puppet/pops/loaders.rb +24 -15
  125. data/lib/puppet/pops/lookup/context.rb +1 -1
  126. data/lib/puppet/pops/lookup/hiera_config.rb +14 -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/validation/checker4_0.rb +29 -15
  130. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  131. data/lib/puppet/provider/file/windows.rb +1 -1
  132. data/lib/puppet/provider/group/groupadd.rb +9 -4
  133. data/lib/puppet/provider/group/windows_adsi.rb +3 -3
  134. data/lib/puppet/provider/package/aix.rb +17 -2
  135. data/lib/puppet/provider/package/apt.rb +98 -1
  136. data/lib/puppet/provider/package/aptitude.rb +1 -1
  137. data/lib/puppet/provider/package/dnfmodule.rb +61 -14
  138. data/lib/puppet/provider/package/gem.rb +45 -9
  139. data/lib/puppet/provider/package/pacman.rb +2 -5
  140. data/lib/puppet/provider/package/pip.rb +143 -48
  141. data/lib/puppet/provider/package/pip3.rb +0 -2
  142. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  143. data/lib/puppet/provider/package/pkgng.rb +16 -4
  144. data/lib/puppet/provider/package/portage.rb +2 -2
  145. data/lib/puppet/provider/package/puppet_gem.rb +11 -2
  146. data/lib/puppet/provider/package/rpm.rb +6 -213
  147. data/lib/puppet/provider/package/yum.rb +100 -20
  148. data/lib/puppet/provider/package/zypper.rb +62 -1
  149. data/lib/puppet/provider/service/systemd.rb +22 -4
  150. data/lib/puppet/provider/service/windows.rb +23 -7
  151. data/lib/puppet/provider/user/aix.rb +1 -1
  152. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  153. data/lib/puppet/provider/user/useradd.rb +16 -5
  154. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  155. data/lib/puppet/reports/http.rb +15 -9
  156. data/lib/puppet/resource.rb +2 -1
  157. data/lib/puppet/resource/type.rb +8 -0
  158. data/lib/puppet/resource/type_collection.rb +20 -16
  159. data/lib/puppet/runtime.rb +31 -1
  160. data/lib/puppet/settings.rb +3 -1
  161. data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
  162. data/lib/puppet/ssl.rb +1 -0
  163. data/lib/puppet/ssl/host.rb +4 -4
  164. data/lib/puppet/ssl/oids.rb +1 -0
  165. data/lib/puppet/ssl/ssl_context.rb +2 -2
  166. data/lib/puppet/ssl/ssl_provider.rb +20 -1
  167. data/lib/puppet/ssl/state_machine.rb +81 -35
  168. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  169. data/lib/puppet/ssl/verifier_adapter.rb +9 -1
  170. data/lib/puppet/test/test_helper.rb +21 -14
  171. data/lib/puppet/transaction.rb +2 -2
  172. data/lib/puppet/transaction/persistence.rb +1 -1
  173. data/lib/puppet/transaction/report.rb +3 -3
  174. data/lib/puppet/trusted_external.rb +29 -1
  175. data/lib/puppet/type.rb +21 -8
  176. data/lib/puppet/type/file.rb +51 -13
  177. data/lib/puppet/type/file/checksum.rb +4 -4
  178. data/lib/puppet/type/file/source.rb +75 -64
  179. data/lib/puppet/type/notify.rb +2 -2
  180. data/lib/puppet/type/package.rb +41 -3
  181. data/lib/puppet/type/service.rb +59 -8
  182. data/lib/puppet/type/user.rb +19 -29
  183. data/lib/puppet/util.rb +41 -3
  184. data/lib/puppet/util/at_fork.rb +1 -1
  185. data/lib/puppet/util/autoload.rb +13 -25
  186. data/lib/puppet/util/character_encoding.rb +9 -5
  187. data/lib/puppet/util/checksums.rb +19 -4
  188. data/lib/puppet/util/execution.rb +2 -2
  189. data/lib/puppet/util/fileparsing.rb +2 -2
  190. data/lib/puppet/util/instance_loader.rb +14 -10
  191. data/lib/puppet/util/log/destinations.rb +1 -10
  192. data/lib/puppet/util/package/version/debian.rb +175 -0
  193. data/lib/puppet/util/package/version/gem.rb +15 -0
  194. data/lib/puppet/util/package/version/pip.rb +167 -0
  195. data/lib/puppet/util/package/version/range.rb +53 -0
  196. data/lib/puppet/util/package/version/range/eq.rb +14 -0
  197. data/lib/puppet/util/package/version/range/gt.rb +14 -0
  198. data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
  199. data/lib/puppet/util/package/version/range/lt.rb +14 -0
  200. data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
  201. data/lib/puppet/util/package/version/range/min_max.rb +21 -0
  202. data/lib/puppet/util/package/version/range/simple.rb +11 -0
  203. data/lib/puppet/util/package/version/rpm.rb +73 -0
  204. data/lib/puppet/util/pidlock.rb +13 -7
  205. data/lib/puppet/util/platform.rb +5 -0
  206. data/lib/puppet/util/provider_features.rb +1 -1
  207. data/lib/puppet/util/reference.rb +1 -1
  208. data/lib/puppet/util/rpm_compare.rb +193 -0
  209. data/lib/puppet/util/windows.rb +1 -0
  210. data/lib/puppet/util/windows/adsi.rb +2 -2
  211. data/lib/puppet/util/windows/api_types.rb +60 -33
  212. data/lib/puppet/util/windows/eventlog.rb +1 -6
  213. data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
  214. data/lib/puppet/util/windows/principal.rb +8 -6
  215. data/lib/puppet/util/windows/process.rb +15 -14
  216. data/lib/puppet/util/windows/registry.rb +11 -11
  217. data/lib/puppet/util/windows/security.rb +5 -4
  218. data/lib/puppet/util/windows/service.rb +43 -26
  219. data/lib/puppet/util/windows/sid.rb +3 -3
  220. data/lib/puppet/util/windows/user.rb +242 -8
  221. data/lib/puppet/version.rb +1 -1
  222. data/locales/puppet.pot +641 -511
  223. data/man/man5/puppet.conf.5 +75 -10
  224. data/man/man8/puppet-agent.8 +7 -7
  225. data/man/man8/puppet-apply.8 +1 -1
  226. data/man/man8/puppet-catalog.8 +1 -1
  227. data/man/man8/puppet-config.8 +1 -1
  228. data/man/man8/puppet-describe.8 +1 -1
  229. data/man/man8/puppet-device.8 +2 -2
  230. data/man/man8/puppet-doc.8 +1 -1
  231. data/man/man8/puppet-epp.8 +1 -1
  232. data/man/man8/puppet-facts.8 +1 -1
  233. data/man/man8/puppet-filebucket.8 +17 -2
  234. data/man/man8/puppet-generate.8 +1 -1
  235. data/man/man8/puppet-help.8 +6 -3
  236. data/man/man8/puppet-key.8 +1 -1
  237. data/man/man8/puppet-lookup.8 +2 -2
  238. data/man/man8/puppet-man.8 +1 -1
  239. data/man/man8/puppet-module.8 +4 -1
  240. data/man/man8/puppet-node.8 +1 -1
  241. data/man/man8/puppet-parser.8 +1 -1
  242. data/man/man8/puppet-plugin.8 +1 -1
  243. data/man/man8/puppet-report.8 +1 -1
  244. data/man/man8/puppet-resource.8 +1 -1
  245. data/man/man8/puppet-script.8 +1 -1
  246. data/man/man8/puppet-ssl.8 +2 -2
  247. data/man/man8/puppet-status.8 +1 -1
  248. data/man/man8/puppet.8 +2 -2
  249. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  250. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  251. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +67 -0
  252. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -0
  253. data/spec/fixtures/ssl/unknown-ca-key.pem +67 -0
  254. data/spec/fixtures/ssl/unknown-ca.pem +59 -0
  255. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  256. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  257. data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-installed.txt → dnf-module-list.txt} +8 -0
  258. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
  259. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
  260. data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
  261. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
  262. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +1 -67
  263. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +1 -69
  264. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +1 -69
  265. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +1 -67
  266. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +1 -65
  267. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +1 -67
  268. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +1 -67
  269. data/spec/integration/application/agent_spec.rb +475 -0
  270. data/spec/integration/application/apply_spec.rb +279 -150
  271. data/spec/integration/application/config_spec.rb +74 -0
  272. data/spec/integration/application/doc_spec.rb +16 -6
  273. data/spec/integration/application/filebucket_spec.rb +239 -0
  274. data/spec/integration/application/help_spec.rb +42 -0
  275. data/spec/integration/application/lookup_spec.rb +13 -0
  276. data/spec/integration/application/module_spec.rb +68 -0
  277. data/spec/integration/application/plugin_spec.rb +123 -0
  278. data/spec/integration/data_binding_spec.rb +82 -0
  279. data/spec/integration/defaults_spec.rb +1 -2
  280. data/spec/integration/directory_environments_spec.rb +17 -17
  281. data/spec/integration/http/client_spec.rb +47 -37
  282. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  283. data/spec/integration/indirector/report/yaml.rb +83 -0
  284. data/spec/integration/network/http_pool_spec.rb +93 -20
  285. data/spec/integration/node/environment_spec.rb +15 -0
  286. data/spec/integration/parser/compiler_spec.rb +11 -0
  287. data/spec/integration/type/file_spec.rb +1 -1
  288. data/spec/integration/util/execution_spec.rb +22 -0
  289. data/spec/integration/util/windows/adsi_spec.rb +6 -1
  290. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
  291. data/spec/integration/util/windows/process_spec.rb +26 -32
  292. data/spec/integration/util/windows/registry_spec.rb +7 -7
  293. data/spec/integration/util/windows/user_spec.rb +47 -5
  294. data/spec/integration/util_spec.rb +7 -33
  295. data/spec/lib/puppet/test_ca.rb +2 -2
  296. data/spec/lib/puppet_spec/https.rb +16 -7
  297. data/spec/lib/puppet_spec/matchers.rb +0 -80
  298. data/spec/lib/puppet_spec/puppetserver.rb +127 -0
  299. data/spec/shared_contexts/https.rb +29 -0
  300. data/spec/unit/agent_spec.rb +80 -26
  301. data/spec/unit/application/agent_spec.rb +12 -9
  302. data/spec/unit/application/describe_spec.rb +88 -50
  303. data/spec/unit/application/device_spec.rb +2 -2
  304. data/spec/unit/application/face_base_spec.rb +6 -4
  305. data/spec/unit/application/facts_spec.rb +39 -10
  306. data/spec/unit/application/filebucket_spec.rb +22 -2
  307. data/spec/unit/application/man_spec.rb +52 -0
  308. data/spec/unit/application/resource_spec.rb +3 -1
  309. data/spec/unit/application/ssl_spec.rb +15 -2
  310. data/spec/unit/configurer/downloader_spec.rb +10 -0
  311. data/spec/unit/configurer/fact_handler_spec.rb +4 -4
  312. data/spec/unit/configurer/plugin_handler_spec.rb +36 -19
  313. data/spec/unit/configurer_spec.rb +64 -46
  314. data/spec/unit/confine_spec.rb +2 -1
  315. data/spec/unit/context/trusted_information_spec.rb +25 -2
  316. data/spec/unit/daemon_spec.rb +5 -64
  317. data/spec/unit/defaults_spec.rb +24 -1
  318. data/spec/unit/environments_spec.rb +8 -0
  319. data/spec/unit/face/config_spec.rb +3 -1
  320. data/spec/unit/face/module/search_spec.rb +17 -0
  321. data/spec/unit/face/plugin_spec.rb +12 -10
  322. data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
  323. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  324. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  325. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  326. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
  327. data/spec/unit/file_system/uniquefile_spec.rb +29 -0
  328. data/spec/unit/file_system_spec.rb +10 -0
  329. data/spec/unit/functions/lookup_spec.rb +13 -0
  330. data/spec/unit/http/client_spec.rb +321 -36
  331. data/spec/unit/http/external_client_spec.rb +201 -0
  332. data/spec/unit/http/resolver_spec.rb +34 -3
  333. data/spec/unit/http/response_spec.rb +75 -0
  334. data/spec/unit/http/service/ca_spec.rb +53 -12
  335. data/spec/unit/http/service/compiler_spec.rb +332 -28
  336. data/spec/unit/http/service/file_server_spec.rb +100 -12
  337. data/spec/unit/http/service/report_spec.rb +19 -9
  338. data/spec/unit/http/service_spec.rb +94 -6
  339. data/spec/unit/http/session_spec.rb +159 -8
  340. data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
  341. data/spec/unit/indirector/catalog/rest_spec.rb +59 -2
  342. data/spec/unit/indirector/facts/rest_spec.rb +79 -24
  343. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -2
  344. data/spec/unit/indirector/file_content/rest_spec.rb +53 -2
  345. data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
  346. data/spec/unit/indirector/file_metadata/rest_spec.rb +110 -2
  347. data/spec/unit/indirector/node/rest_spec.rb +57 -2
  348. data/spec/unit/indirector/report/rest_spec.rb +58 -51
  349. data/spec/unit/indirector/request_spec.rb +1 -1
  350. data/spec/unit/indirector/resource/ral_spec.rb +7 -8
  351. data/spec/unit/indirector/rest_spec.rb +13 -0
  352. data/spec/unit/indirector/status/rest_spec.rb +43 -2
  353. data/spec/unit/interface_spec.rb +3 -3
  354. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  355. data/spec/unit/network/format_support_spec.rb +3 -2
  356. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
  357. data/spec/unit/network/http/connection_spec.rb +552 -190
  358. data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
  359. data/spec/unit/network/http/pool_spec.rb +59 -13
  360. data/spec/unit/network/http_pool_spec.rb +63 -57
  361. data/spec/unit/network/http_spec.rb +1 -1
  362. data/spec/unit/node/environment_spec.rb +33 -0
  363. data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
  364. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  365. data/spec/unit/parser/scope_spec.rb +1 -1
  366. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
  367. data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
  368. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  369. data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
  370. data/spec/unit/provider/group/groupadd_spec.rb +22 -8
  371. data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
  372. data/spec/unit/provider/package/aix_spec.rb +29 -0
  373. data/spec/unit/provider/package/apt_spec.rb +107 -0
  374. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  375. data/spec/unit/provider/package/dnfmodule_spec.rb +54 -15
  376. data/spec/unit/provider/package/gem_spec.rb +40 -0
  377. data/spec/unit/provider/package/pacman_spec.rb +6 -21
  378. data/spec/unit/provider/package/pip_spec.rb +68 -19
  379. data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
  380. data/spec/unit/provider/package/pkgng_spec.rb +38 -0
  381. data/spec/unit/provider/package/portage_spec.rb +5 -0
  382. data/spec/unit/provider/package/puppet_gem_spec.rb +12 -1
  383. data/spec/unit/provider/package/rpm_spec.rb +0 -212
  384. data/spec/unit/provider/package/yum_spec.rb +243 -1
  385. data/spec/unit/provider/package/zypper_spec.rb +98 -0
  386. data/spec/unit/provider/service/init_spec.rb +42 -0
  387. data/spec/unit/provider/service/openbsd_spec.rb +9 -0
  388. data/spec/unit/provider/service/openwrt_spec.rb +1 -0
  389. data/spec/unit/provider/service/redhat_spec.rb +9 -0
  390. data/spec/unit/provider/service/systemd_spec.rb +93 -18
  391. data/spec/unit/provider/service/windows_spec.rb +50 -14
  392. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  393. data/spec/unit/provider/user/useradd_spec.rb +30 -16
  394. data/spec/unit/provider/user/windows_adsi_spec.rb +85 -3
  395. data/spec/unit/puppet_pal_2pec.rb +11 -0
  396. data/spec/unit/puppet_pal_catalog_spec.rb +43 -0
  397. data/spec/unit/puppet_spec.rb +33 -0
  398. data/spec/unit/reports/http_spec.rb +70 -52
  399. data/spec/unit/reports/store_spec.rb +17 -13
  400. data/spec/unit/resource_spec.rb +3 -3
  401. data/spec/unit/settings/autosign_setting_spec.rb +1 -1
  402. data/spec/unit/settings/http_extra_headers_spec.rb +64 -0
  403. data/spec/unit/ssl/host_spec.rb +4 -2
  404. data/spec/unit/ssl/oids_spec.rb +1 -0
  405. data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
  406. data/spec/unit/ssl/state_machine_spec.rb +99 -13
  407. data/spec/unit/test/test_helper_spec.rb +17 -0
  408. data/spec/unit/transaction/persistence_spec.rb +15 -0
  409. data/spec/unit/transaction/report_spec.rb +5 -1
  410. data/spec/unit/transaction_spec.rb +0 -2
  411. data/spec/unit/type/file/ensure_spec.rb +1 -2
  412. data/spec/unit/type/file/source_spec.rb +89 -38
  413. data/spec/unit/type/file_spec.rb +122 -96
  414. data/spec/unit/type/service_spec.rb +218 -8
  415. data/spec/unit/type/user_spec.rb +32 -3
  416. data/spec/unit/type_spec.rb +50 -0
  417. data/spec/unit/util/at_fork_spec.rb +3 -2
  418. data/spec/unit/util/autoload_spec.rb +2 -1
  419. data/spec/unit/util/character_encoding_spec.rb +4 -4
  420. data/spec/unit/util/checksums_spec.rb +16 -0
  421. data/spec/unit/util/command_line_spec.rb +11 -6
  422. data/spec/unit/util/log/destinations_spec.rb +1 -29
  423. data/spec/unit/util/package/version/debian_spec.rb +83 -0
  424. data/spec/unit/util/package/version/pip_spec.rb +464 -0
  425. data/spec/unit/util/package/version/range_spec.rb +175 -0
  426. data/spec/unit/util/package/version/rpm_spec.rb +121 -0
  427. data/spec/unit/util/pidlock_spec.rb +102 -54
  428. data/spec/unit/util/rpm_compare_spec.rb +196 -0
  429. data/spec/unit/util/windows/adsi_spec.rb +4 -4
  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/windows/sid_spec.rb +2 -2
  433. data/spec/unit/util_spec.rb +3 -3
  434. data/spec/unit/x509/cert_provider_spec.rb +1 -1
  435. data/tasks/generate_cert_fixtures.rake +15 -1
  436. data/tasks/manpages.rake +5 -35
  437. metadata +84 -52
  438. data/COMMITTERS.md +0 -244
  439. data/spec/integration/faces/config_spec.rb +0 -91
  440. data/spec/integration/faces/documentation_spec.rb +0 -57
  441. data/spec/integration/faces/plugin_spec.rb +0 -61
  442. data/spec/integration/file_bucket/file_spec.rb +0 -50
  443. data/spec/integration/file_serving/content_spec.rb +0 -7
  444. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  445. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  446. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  447. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  448. data/spec/integration/module_tool/forge_spec.rb +0 -64
  449. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  450. data/spec/integration/provider/service/init_spec.rb +0 -48
  451. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  452. data/spec/integration/provider/service/windows_spec.rb +0 -50
  453. data/spec/integration/reference/providers_spec.rb +0 -21
  454. data/spec/integration/reports_spec.rb +0 -13
  455. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  456. data/spec/integration/ssl/host_spec.rb +0 -72
  457. data/spec/integration/ssl/key_spec.rb +0 -99
  458. data/spec/integration/test/test_helper_spec.rb +0 -31
  459. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  460. data/spec/unit/face/man_spec.rb +0 -25
  461. data/spec/unit/man_spec.rb +0 -31
@@ -39,4 +39,26 @@ describe Puppet::Network::HTTP::NoCachePool do
39
39
  it 'has a close method' do
40
40
  Puppet::Network::HTTP::NoCachePool.new.close
41
41
  end
42
+
43
+ it 'logs a deprecation warning' do
44
+ http = double('http', start: nil, finish: nil, started?: true)
45
+
46
+ factory = Puppet::Network::HTTP::Factory.new
47
+ allow(factory).to receive(:create_connection).and_return(http)
48
+ Puppet::Network::HTTP::NoCachePool.new(factory)
49
+
50
+ expect(@logs).to include(an_object_having_attributes(level: :warning, message: /Puppet::Network::HTTP::NoCachePool is deprecated/))
51
+ end
52
+
53
+ it 'omits the warning when deprecations are disabled' do
54
+ Puppet[:disable_warnings] = 'deprecations'
55
+
56
+ http = double('http', start: nil, finish: nil, started?: true)
57
+
58
+ factory = Puppet::Network::HTTP::Factory.new
59
+ allow(factory).to receive(:create_connection).and_return(http)
60
+ Puppet::Network::HTTP::NoCachePool.new(factory)
61
+
62
+ expect(@logs).to eq([])
63
+ end
42
64
  end
@@ -26,17 +26,25 @@ describe Puppet::Network::HTTP::Pool do
26
26
  end
27
27
 
28
28
  def create_pool
29
- Puppet::Network::HTTP::Pool.new
29
+ Puppet::Network::HTTP::Pool.new(15)
30
30
  end
31
31
 
32
32
  def create_pool_with_connections(site, *connections)
33
- pool = Puppet::Network::HTTP::Pool.new
33
+ pool = Puppet::Network::HTTP::Pool.new(15)
34
34
  connections.each do |conn|
35
35
  pool.release(site, verifier, conn)
36
36
  end
37
37
  pool
38
38
  end
39
39
 
40
+ def create_pool_with_http_connections(site, *connections)
41
+ pool = Puppet::Network::HTTP::Pool.new(15)
42
+ connections.each do |conn|
43
+ pool.release(site, nil, conn)
44
+ end
45
+ pool
46
+ end
47
+
40
48
  def create_pool_with_expired_connections(site, *connections)
41
49
  # setting keepalive timeout to -1 ensures any newly added
42
50
  # connections have already expired
@@ -51,6 +59,10 @@ describe Puppet::Network::HTTP::Pool do
51
59
  double(site.addr, :started? => false, :start => nil, :finish => nil, :use_ssl? => true, :verify_mode => OpenSSL::SSL::VERIFY_PEER)
52
60
  end
53
61
 
62
+ def create_http_connection(site)
63
+ double(site.addr, :started? => false, :start => nil, :finish => nil, :use_ssl? => false)
64
+ end
65
+
54
66
  context 'when yielding a connection' do
55
67
  it 'yields a connection' do
56
68
  conn = create_connection(site)
@@ -174,7 +186,7 @@ describe Puppet::Network::HTTP::Pool do
174
186
  pool.with_connection(site, verifier) {|c| }
175
187
  end
176
188
 
177
- it "doesn't add a closed connection back to the pool" do
189
+ it "doesn't add a closed connection back to the pool" do
178
190
  http = Net::HTTP.new(site.addr)
179
191
  http.use_ssl = true
180
192
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER
@@ -184,7 +196,7 @@ describe Puppet::Network::HTTP::Pool do
184
196
 
185
197
  pool.with_connection(site, verifier) {|c| c.finish}
186
198
 
187
- expect(pool.pool[site]).to be_empty
199
+ expect(pool.pool[site]).to be_nil
188
200
  end
189
201
  end
190
202
  end
@@ -194,7 +206,6 @@ describe Puppet::Network::HTTP::Pool do
194
206
  conn = create_connection(site)
195
207
  pool = create_pool
196
208
  expect(pool.factory).to receive(:create_connection).with(site).and_return(conn)
197
- expect(pool).to receive(:setsockopts)
198
209
 
199
210
  expect(pool.borrow(site, verifier)).to eq(conn)
200
211
  end
@@ -214,15 +225,37 @@ describe Puppet::Network::HTTP::Pool do
214
225
 
215
226
  conn = create_connection(site)
216
227
  expect(pool.factory).to receive(:create_connection).with(site).and_return(conn)
217
- expect(pool).to receive(:setsockopts)
218
228
 
219
229
  expect(pool.borrow(site, verifier)).to eq(conn)
220
230
  end
221
231
 
232
+ it 'returns a new HTTP connection if the cached connection is HTTPS' do
233
+ https_site = Puppet::Network::HTTP::Site.new('https', 'www.example.com', 443)
234
+ old_conn = create_connection(https_site)
235
+ pool = create_pool_with_connections(https_site, old_conn)
236
+
237
+ http_site = Puppet::Network::HTTP::Site.new('http', 'www.example.com', 443)
238
+ new_conn = create_http_connection(http_site)
239
+ allow(pool.factory).to receive(:create_connection).with(http_site).and_return(new_conn)
240
+
241
+ expect(pool.borrow(http_site, nil)).to eq(new_conn)
242
+ end
243
+
244
+ it 'returns a new HTTPS connection if the cached connection is HTTP' do
245
+ http_site = Puppet::Network::HTTP::Site.new('http', 'www.example.com', 443)
246
+ old_conn = create_http_connection(http_site)
247
+ pool = create_pool_with_http_connections(http_site, old_conn)
248
+
249
+ https_site = Puppet::Network::HTTP::Site.new('https', 'www.example.com', 443)
250
+ new_conn = create_connection(https_site)
251
+ allow(pool.factory).to receive(:create_connection).with(https_site).and_return(new_conn)
252
+
253
+ expect(pool.borrow(https_site, verifier)).to eq(new_conn)
254
+ end
255
+
222
256
  it 'returns a new connection if the ssl contexts are different' do
223
257
  old_conn = create_connection(site)
224
258
  pool = create_pool_with_connections(site, old_conn)
225
- allow(pool).to receive(:setsockopts)
226
259
 
227
260
  new_conn = create_connection(site)
228
261
  allow(pool.factory).to receive(:create_connection).with(site).and_return(new_conn)
@@ -237,7 +270,6 @@ describe Puppet::Network::HTTP::Pool do
237
270
  it 'returns a cached connection if the ssl contexts are the same' do
238
271
  old_conn = create_connection(site)
239
272
  pool = create_pool_with_connections(site, old_conn)
240
- allow(pool).to receive(:setsockopts)
241
273
 
242
274
  expect(pool.factory).not_to receive(:create_connection)
243
275
 
@@ -246,13 +278,21 @@ describe Puppet::Network::HTTP::Pool do
246
278
  expect(pool.borrow(site, new_verifier)).to equal(old_conn)
247
279
  end
248
280
 
281
+ it 'returns a cached connection if both connections are http' do
282
+ http_site = Puppet::Network::HTTP::Site.new('http', 'www.example.com', 80)
283
+ old_conn = create_http_connection(http_site)
284
+ pool = create_pool_with_http_connections(http_site, old_conn)
285
+
286
+ # 'equal' tests that it's the same object
287
+ expect(pool.borrow(http_site, nil)).to equal(old_conn)
288
+ end
289
+
249
290
  it 'returns started connections' do
250
291
  conn = create_connection(site)
251
292
  expect(conn).to receive(:start)
252
293
 
253
294
  pool = create_pool
254
295
  expect(pool.factory).to receive(:create_connection).with(site).and_return(conn)
255
- expect(pool).to receive(:setsockopts)
256
296
 
257
297
  expect(pool.borrow(site, verifier)).to eq(conn)
258
298
  end
@@ -279,8 +319,7 @@ describe Puppet::Network::HTTP::Pool do
279
319
  expect(conn).to receive(:finish)
280
320
 
281
321
  pool = create_pool_with_expired_connections(site, conn)
282
- expect(pool.factory).to receive(:create_connection).and_return(double('conn', :start => nil))
283
- expect(pool).to receive(:setsockopts)
322
+ expect(pool.factory).to receive(:create_connection).and_return(double('conn', :start => nil, :use_ssl? => true))
284
323
 
285
324
  pool.borrow(site, verifier)
286
325
  end
@@ -293,11 +332,18 @@ describe Puppet::Network::HTTP::Pool do
293
332
  expect(conn).to receive(:finish).and_raise(IOError, 'read timeout')
294
333
 
295
334
  pool = create_pool_with_expired_connections(site, conn)
296
- expect(pool.factory).to receive(:create_connection).and_return(double('open_conn', :start => nil))
297
- expect(pool).to receive(:setsockopts)
335
+ expect(pool.factory).to receive(:create_connection).and_return(double('open_conn', :start => nil, :use_ssl? => true))
298
336
 
299
337
  pool.borrow(site, verifier)
300
338
  end
339
+
340
+ it 'deletes the session when the last connection is borrowed' do
341
+ conn = create_connection(site)
342
+ pool = create_pool_with_connections(site, conn)
343
+ pool.borrow(site, verifier)
344
+
345
+ expect(pool.pool[site]).to be_nil
346
+ end
301
347
  end
302
348
 
303
349
  context 'when releasing a connection' do
@@ -1,41 +1,65 @@
1
1
  require 'spec_helper'
2
2
  require 'puppet/network/http_pool'
3
3
 
4
+ class Puppet::Network::HttpPool::FooClient
5
+ def initialize(host, port, options = {})
6
+ @host = host
7
+ @port = port
8
+ end
9
+ attr_reader :host, :port
10
+ end
11
+
4
12
  describe Puppet::Network::HttpPool do
5
- before :each do
6
- Puppet::SSL::Key.indirection.terminus_class = :memory
7
- Puppet::SSL::CertificateRequest.indirection.terminus_class = :memory
13
+ include PuppetSpec::Files
14
+
15
+ describe "when registering an http client class" do
16
+ let(:http_impl) { Puppet::Network::HttpPool::FooClient }
17
+
18
+ around :each do |example|
19
+ orig_class = Puppet::Network::HttpPool.http_client_class
20
+ begin
21
+ example.run
22
+ ensure
23
+ Puppet::Network::HttpPool.http_client_class = orig_class
24
+ end
25
+ end
26
+
27
+ it "returns instances of the http client class" do
28
+ Puppet::Network::HttpPool.http_client_class = http_impl
29
+ http = Puppet::Network::HttpPool.http_instance("me", 54321)
30
+ expect(http).to be_an_instance_of(http_impl)
31
+ expect(http.host).to eq('me')
32
+ expect(http.port).to eq(54321)
33
+ end
34
+
35
+ it "uses the default http client" do
36
+ expect(Puppet.runtime[:http]).to be_an_instance_of(Puppet::HTTP::Client)
37
+ end
38
+
39
+ it "switches to the external client implementation" do
40
+ Puppet::Network::HttpPool.http_client_class = http_impl
41
+
42
+ expect(Puppet.runtime[:http]).to be_an_instance_of(Puppet::HTTP::ExternalClient)
43
+ end
44
+
45
+ it "always uses an explicitly registered http implementation" do
46
+ Puppet::Network::HttpPool.http_client_class = http_impl
47
+
48
+ new_impl = double('new_http_impl')
49
+ Puppet.initialize_settings([], true, true, http: new_impl)
50
+
51
+ expect(Puppet.runtime[:http]).to eq(new_impl)
52
+ end
8
53
  end
9
54
 
10
55
  describe "when managing http instances" do
11
56
  it "should return an http instance created with the passed host and port" do
12
57
  http = Puppet::Network::HttpPool.http_instance("me", 54321)
13
- expect(http).to be_an_instance_of Puppet::Network::HTTP::Connection
58
+ expect(http).to be_a_kind_of Puppet::Network::HTTP::Connection
14
59
  expect(http.address).to eq('me')
15
60
  expect(http.port).to eq(54321)
16
61
  end
17
62
 
18
- it "should support using an alternate http client implementation" do
19
- begin
20
- class FooClient
21
- def initialize(host, port, options = {})
22
- @host = host
23
- @port = port
24
- end
25
- attr_reader :host, :port
26
- end
27
-
28
- orig_class = Puppet::Network::HttpPool.http_client_class
29
- Puppet::Network::HttpPool.http_client_class = FooClient
30
- http = Puppet::Network::HttpPool.http_instance("me", 54321)
31
- expect(http).to be_an_instance_of FooClient
32
- expect(http.host).to eq('me')
33
- expect(http.port).to eq(54321)
34
- ensure
35
- Puppet::Network::HttpPool.http_client_class = orig_class
36
- end
37
- end
38
-
39
63
  it "should enable ssl on the http instance by default" do
40
64
  expect(Puppet::Network::HttpPool.http_instance("me", 54321)).to be_use_ssl
41
65
  end
@@ -82,53 +106,35 @@ describe Puppet::Network::HttpPool do
82
106
  end
83
107
 
84
108
  describe 'peer verification' do
85
- def setup_standard_ssl_configuration
86
- ca_cert_file = File.expand_path('/path/to/ssl/certs/ca_cert.pem')
87
-
88
- Puppet[:ssl_client_ca_auth] = ca_cert_file
89
- allow(Puppet::FileSystem).to receive(:exist?).with(ca_cert_file).and_return(true)
90
- end
91
-
92
- def setup_standard_hostcert
93
- host_cert_file = File.expand_path('/path/to/ssl/certs/host_cert.pem')
94
- allow(Puppet::FileSystem).to receive(:exist?).with(host_cert_file).and_return(true)
95
-
96
- Puppet[:hostcert] = host_cert_file
97
- end
98
-
99
- def setup_standard_ssl_host
100
- cert = double('cert', :content => 'real_cert')
101
- key = double('key', :content => 'real_key')
102
- host = double('host', :certificate => cert, :key => key, :ssl_store => double('store'))
103
109
 
104
- allow(Puppet::SSL::Host).to receive(:localhost).and_return(host)
105
- end
110
+ before(:each) do
111
+ Puppet[:ssldir] = tmpdir('ssl')
112
+ Puppet.settings.use(:main)
106
113
 
107
- before do
108
- setup_standard_ssl_configuration
109
- setup_standard_hostcert
110
- setup_standard_ssl_host
114
+ Puppet[:certname] = 'signed'
115
+ File.write(Puppet[:localcacert], cert_fixture('ca.pem'))
116
+ File.write(Puppet[:hostcrl], crl_fixture('crl.pem'))
117
+ File.write(Puppet[:hostcert], cert_fixture('signed.pem'))
118
+ File.write(Puppet[:hostprivkey], key_fixture('signed-key.pem'))
111
119
  end
112
120
 
113
121
  it 'enables peer verification by default' do
114
- response = Net::HTTPOK.new('1.1', 200, 'body')
122
+ stub_request(:get, "https://me:54321")
123
+
115
124
  conn = Puppet::Network::HttpPool.http_instance("me", 54321, true)
116
- expect(conn).to receive(:execute_request) do |http, _|
125
+ expect_any_instance_of(Net::HTTP).to receive(:start) do |http|
117
126
  expect(http.verify_mode).to eq(OpenSSL::SSL::VERIFY_PEER)
118
-
119
- response
120
127
  end
121
128
 
122
129
  conn.get('/')
123
130
  end
124
131
 
125
132
  it 'can disable peer verification' do
126
- response = Net::HTTPOK.new('1.1', 200, 'body')
133
+ stub_request(:get, "https://me:54321")
134
+
127
135
  conn = Puppet::Network::HttpPool.http_instance("me", 54321, true, false)
128
- expect(conn).to receive(:execute_request) do |http, _|
136
+ expect_any_instance_of(Net::HTTP).to receive(:start) do |http|
129
137
  expect(http.verify_mode).to eq(OpenSSL::SSL::VERIFY_NONE)
130
-
131
- response
132
138
  end
133
139
 
134
140
  conn.get('/')
@@ -4,6 +4,6 @@ require 'puppet/network/http'
4
4
  describe Puppet::Network::HTTP do
5
5
  it 'defines an http_pool context' do
6
6
  pool = Puppet.lookup(:http_pool)
7
- expect(pool).to be_a(Puppet::Network::HTTP::NoCachePool)
7
+ expect(pool).to be_a(Puppet::Network::HTTP::Pool)
8
8
  end
9
9
  end
@@ -422,6 +422,39 @@ describe Puppet::Node::Environment do
422
422
 
423
423
  env.modules
424
424
  end
425
+
426
+ it "includes the Bolt project in modules if it's defined" do
427
+ path = tmpdir('project')
428
+ PuppetSpec::Modules.generate_files('bolt_project', path)
429
+ project = Struct.new("Project", :name, :path, :load_as_module?).new('bolt_project', path, true)
430
+
431
+ Puppet.override(bolt_project: project) do
432
+ %w{foo bar}.each do |mod_name|
433
+ PuppetSpec::Modules.generate_files(mod_name, first_modulepath)
434
+ end
435
+ %w{bee baz}.each do |mod_name|
436
+ PuppetSpec::Modules.generate_files(mod_name, second_modulepath)
437
+ end
438
+ expect(env.modules.collect{|mod| mod.name}.sort).to eq(%w{bolt_project foo bar bee baz}.sort)
439
+ end
440
+ end
441
+
442
+ it "does not include the Bolt project in modules if load_as_module? is false" do
443
+ path = tmpdir('project')
444
+ PuppetSpec::Modules.generate_files('bolt_project', path)
445
+ project = Struct.new("Project", :name, :path, :load_as_module?).new('bolt_project', path, false)
446
+
447
+ Puppet.override(bolt_project: project) do
448
+ %w{foo bar}.each do |mod_name|
449
+ PuppetSpec::Modules.generate_files(mod_name, first_modulepath)
450
+ end
451
+ %w{bee baz}.each do |mod_name|
452
+ PuppetSpec::Modules.generate_files(mod_name, second_modulepath)
453
+ end
454
+ expect(env.modules.collect{|mod| mod.name}.sort).to eq(%w{foo bar bee baz}.sort)
455
+ end
456
+
457
+ end
425
458
  end
426
459
  end
427
460
  end
@@ -12,7 +12,7 @@ describe 'Puppet::Parser::AST::BlockExpression' do
12
12
  NO_SCOPE = nil
13
13
 
14
14
  def depth_probe
15
- StackDepthAST.new({})
15
+ StackDepthAST.new
16
16
  end
17
17
 
18
18
  def sequence_probe(name)
@@ -366,6 +366,13 @@ EOS
366
366
  }.to raise_error(/'Cap\[cap\]' is exported by both 'Prod\[one\]' and 'Prod\[two\]'/)
367
367
  end
368
368
 
369
+ it "issues deprecation warnings" do
370
+ expect {compile_collect_log(MANIFEST_WO_NODE)}.not_to raise_error
371
+ expect(warnings).to include(/Capability Mapping is deprecated/) # there are two of these
372
+ expect(warnings).to include(/Application is deprecated/)
373
+ expect(warnings).to include(/Site Definition is deprecated/)
374
+ end
375
+
369
376
  context "for producing node" do
370
377
  let(:compiled_node) { Puppet::Node.new('first', :environment => env) }
371
378
  let(:compiled_catalog) { compile_to_catalog(MANIFEST, compiled_node)}
@@ -105,7 +105,7 @@ describe Puppet::Parser::Scope do
105
105
 
106
106
  it "should fail if something that isn't a compiler is supplied" do
107
107
  expect {
108
- Puppet::Parser::Scope.new(:compiler => true)
108
+ Puppet::Parser::Scope.new(nil)
109
109
  }.to raise_error(Puppet::DevError, /you must pass a compiler instance/)
110
110
  end
111
111
 
@@ -1578,7 +1578,10 @@ describe 'Puppet::Pops::Evaluator::EvaluatorImpl' do
1578
1578
  let(:applicator) { double('apply_executor') }
1579
1579
 
1580
1580
  it 'invokes an apply_executor' do
1581
- expect(applicator).to receive(:apply).with(['arg1', 'arg2'], nil, scope).and_return(:result)
1581
+ expect(applicator).to receive(:apply).with(
1582
+ ['arg1', 'arg2'],
1583
+ instance_of(Puppet::Pops::Model::BlockExpression),
1584
+ scope).and_return(:result)
1582
1585
  src = "apply('arg1', 'arg2') { }"
1583
1586
  Puppet.override(apply_executor: applicator) do
1584
1587
  expect(parser.evaluate_string(scope, src)).to eq(:result)
@@ -1595,6 +1598,17 @@ describe 'Puppet::Pops::Evaluator::EvaluatorImpl' do
1595
1598
  expect(parser.evaluate_string(scope, src)).to eq(:result)
1596
1599
  end
1597
1600
  end
1601
+
1602
+ it 'returns a BlockExpression with an empty apply block' do
1603
+ expect(applicator).to receive(:apply).with(
1604
+ [['arg1']],
1605
+ instance_of(Puppet::Pops::Model::BlockExpression),
1606
+ scope).and_return(:result)
1607
+ src = "apply(['arg1']) { }"
1608
+ Puppet.override(apply_executor: applicator) do
1609
+ expect(parser.evaluate_string(scope, src)).to eq(:result)
1610
+ end
1611
+ end
1598
1612
  end
1599
1613
  end
1600
1614