puppet 6.22.1 → 6.25.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (415) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +5 -5
  3. data/Gemfile +2 -2
  4. data/Gemfile.lock +20 -20
  5. data/README.md +4 -4
  6. data/{ext → examples/enc}/regexp_nodes/classes/databases +0 -0
  7. data/{ext → examples/enc}/regexp_nodes/classes/webservers +0 -0
  8. data/{ext → examples/enc}/regexp_nodes/environment/development +0 -0
  9. data/{ext → examples/enc}/regexp_nodes/parameters/service/prod +0 -0
  10. data/{ext → examples/enc}/regexp_nodes/parameters/service/qa +0 -0
  11. data/{ext → examples/enc}/regexp_nodes/parameters/service/sandbox +0 -0
  12. data/{ext → examples/enc}/regexp_nodes/regexp_nodes.rb +0 -0
  13. data/{ext → examples}/nagios/check_puppet.rb +2 -2
  14. data/ext/README.md +13 -0
  15. data/ext/osx/puppet.plist +2 -0
  16. data/ext/project_data.yaml +1 -0
  17. data/lib/puppet/application/agent.rb +16 -5
  18. data/lib/puppet/application/apply.rb +22 -3
  19. data/lib/puppet/application/device.rb +2 -1
  20. data/lib/puppet/application/filebucket.rb +1 -0
  21. data/lib/puppet/application/resource.rb +32 -16
  22. data/lib/puppet/application/script.rb +2 -1
  23. data/lib/puppet/application/ssl.rb +1 -0
  24. data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
  25. data/lib/puppet/configurer/downloader.rb +2 -1
  26. data/lib/puppet/configurer.rb +144 -56
  27. data/lib/puppet/confine/variable.rb +1 -1
  28. data/lib/puppet/defaults.rb +47 -33
  29. data/lib/puppet/environments.rb +75 -25
  30. data/lib/puppet/face/facts.rb +1 -1
  31. data/lib/puppet/face/help/action.erb +1 -0
  32. data/lib/puppet/face/help/face.erb +1 -0
  33. data/lib/puppet/face/node/clean.rb +11 -0
  34. data/lib/puppet/facter_impl.rb +96 -0
  35. data/lib/puppet/file_serving/configuration/parser.rb +2 -0
  36. data/lib/puppet/file_serving/configuration.rb +3 -0
  37. data/lib/puppet/file_serving/fileset.rb +14 -2
  38. data/lib/puppet/file_serving/mount/file.rb +4 -4
  39. data/lib/puppet/file_serving/mount/scripts.rb +24 -0
  40. data/lib/puppet/file_system/file_impl.rb +3 -1
  41. data/lib/puppet/file_system/windows.rb +2 -2
  42. data/lib/puppet/forge.rb +4 -4
  43. data/lib/puppet/functions/all.rb +1 -1
  44. data/lib/puppet/functions/camelcase.rb +1 -1
  45. data/lib/puppet/functions/capitalize.rb +2 -2
  46. data/lib/puppet/functions/downcase.rb +2 -2
  47. data/lib/puppet/functions/empty.rb +8 -0
  48. data/lib/puppet/functions/find_template.rb +2 -2
  49. data/lib/puppet/functions/get.rb +5 -5
  50. data/lib/puppet/functions/group_by.rb +13 -5
  51. data/lib/puppet/functions/lest.rb +1 -1
  52. data/lib/puppet/functions/new.rb +100 -100
  53. data/lib/puppet/functions/partition.rb +4 -4
  54. data/lib/puppet/functions/require.rb +5 -5
  55. data/lib/puppet/functions/sort.rb +3 -3
  56. data/lib/puppet/functions/strftime.rb +1 -0
  57. data/lib/puppet/functions/tree_each.rb +7 -9
  58. data/lib/puppet/functions/type.rb +4 -4
  59. data/lib/puppet/functions/unwrap.rb +17 -2
  60. data/lib/puppet/functions/upcase.rb +2 -2
  61. data/lib/puppet/http/client.rb +1 -1
  62. data/lib/puppet/http/redirector.rb +5 -0
  63. data/lib/puppet/http/resolver/server_list.rb +15 -4
  64. data/lib/puppet/http/service/compiler.rb +75 -1
  65. data/lib/puppet/http/service/file_server.rb +2 -1
  66. data/lib/puppet/indirector/catalog/compiler.rb +25 -6
  67. data/lib/puppet/indirector/catalog/rest.rb +1 -0
  68. data/lib/puppet/indirector/facts/facter.rb +6 -6
  69. data/lib/puppet/indirector/file_metadata/rest.rb +1 -0
  70. data/lib/puppet/indirector/indirection.rb +1 -1
  71. data/lib/puppet/indirector/resource/ral.rb +6 -1
  72. data/lib/puppet/indirector/terminus.rb +4 -0
  73. data/lib/puppet/interface/documentation.rb +1 -0
  74. data/lib/puppet/module/plan.rb +0 -1
  75. data/lib/puppet/module/task.rb +1 -1
  76. data/lib/puppet/module.rb +1 -0
  77. data/lib/puppet/module_tool/applications/installer.rb +12 -4
  78. data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
  79. data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
  80. data/lib/puppet/module_tool/errors/shared.rb +17 -0
  81. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  82. data/lib/puppet/node/environment.rb +10 -11
  83. data/lib/puppet/pal/pal_impl.rb +1 -1
  84. data/lib/puppet/parser/functions/fqdn_rand.rb +14 -6
  85. data/lib/puppet/parser/resource.rb +1 -1
  86. data/lib/puppet/parser/scope.rb +1 -0
  87. data/lib/puppet/parser/templatewrapper.rb +1 -0
  88. data/lib/puppet/pops/evaluator/closure.rb +7 -5
  89. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +1 -0
  90. data/lib/puppet/pops/lookup/lookup_adapter.rb +3 -2
  91. data/lib/puppet/pops/model/ast.rb +1 -0
  92. data/lib/puppet/pops/model/factory.rb +2 -1
  93. data/lib/puppet/pops/parser/eparser.rb +201 -201
  94. data/lib/puppet/pops/parser/lexer2.rb +92 -91
  95. data/lib/puppet/pops/parser/slurp_support.rb +1 -0
  96. data/lib/puppet/pops/serialization/to_data_converter.rb +18 -6
  97. data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
  98. data/lib/puppet/pops/types/p_sem_ver_type.rb +8 -2
  99. data/lib/puppet/pops/types/p_sensitive_type.rb +10 -0
  100. data/lib/puppet/pops/types/type_formatter.rb +4 -3
  101. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  102. data/lib/puppet/pops/types/types.rb +1 -1
  103. data/lib/puppet/provider/aix_object.rb +1 -1
  104. data/lib/puppet/provider/exec/posix.rb +16 -4
  105. data/lib/puppet/provider/group/groupadd.rb +5 -2
  106. data/lib/puppet/provider/package/nim.rb +11 -6
  107. data/lib/puppet/provider/package/pip.rb +15 -3
  108. data/lib/puppet/provider/package/pkg.rb +19 -2
  109. data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
  110. data/lib/puppet/provider/package/yum.rb +1 -1
  111. data/lib/puppet/provider/parsedfile.rb +3 -0
  112. data/lib/puppet/provider/service/base.rb +1 -1
  113. data/lib/puppet/provider/service/init.rb +5 -5
  114. data/lib/puppet/provider/service/launchd.rb +2 -2
  115. data/lib/puppet/provider/service/redhat.rb +1 -1
  116. data/lib/puppet/provider/service/smf.rb +3 -3
  117. data/lib/puppet/provider/service/systemd.rb +15 -5
  118. data/lib/puppet/provider/service/upstart.rb +5 -5
  119. data/lib/puppet/provider/service/windows.rb +38 -0
  120. data/lib/puppet/provider/user/aix.rb +44 -1
  121. data/lib/puppet/provider/user/directoryservice.rb +26 -13
  122. data/lib/puppet/provider/user/useradd.rb +72 -16
  123. data/lib/puppet/provider.rb +1 -1
  124. data/lib/puppet/reference/configuration.rb +1 -1
  125. data/lib/puppet/reference/providers.rb +2 -2
  126. data/lib/puppet/resource/catalog.rb +1 -1
  127. data/lib/puppet/resource/type_collection.rb +1 -0
  128. data/lib/puppet/resource.rb +38 -5
  129. data/lib/puppet/runtime.rb +11 -1
  130. data/lib/puppet/settings.rb +32 -9
  131. data/lib/puppet/test/test_helper.rb +4 -1
  132. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  133. data/lib/puppet/transaction/persistence.rb +11 -1
  134. data/lib/puppet/transaction/report.rb +15 -1
  135. data/lib/puppet/type/exec.rb +35 -5
  136. data/lib/puppet/type/file/mode.rb +6 -0
  137. data/lib/puppet/type/file/selcontext.rb +1 -1
  138. data/lib/puppet/type/file.rb +25 -7
  139. data/lib/puppet/type/filebucket.rb +3 -3
  140. data/lib/puppet/type/group.rb +0 -1
  141. data/lib/puppet/type/resources.rb +1 -1
  142. data/lib/puppet/type/service.rb +26 -41
  143. data/lib/puppet/type/tidy.rb +22 -3
  144. data/lib/puppet/type/user.rb +38 -21
  145. data/lib/puppet/type.rb +1 -1
  146. data/lib/puppet/util/command_line.rb +1 -1
  147. data/lib/puppet/util/filetype.rb +2 -2
  148. data/lib/puppet/util/json.rb +3 -0
  149. data/lib/puppet/util/log.rb +1 -2
  150. data/lib/puppet/util/logging.rb +1 -25
  151. data/lib/puppet/util/pidlock.rb +1 -1
  152. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  153. data/lib/puppet/util/selinux.rb +30 -4
  154. data/lib/puppet/util/suidmanager.rb +1 -2
  155. data/lib/puppet/util/symbolic_file_mode.rb +29 -17
  156. data/lib/puppet/util/tagging.rb +1 -0
  157. data/lib/puppet/util/windows/service.rb +0 -5
  158. data/lib/puppet/util/windows/sid.rb +3 -1
  159. data/lib/puppet/util/windows/user.rb +0 -2
  160. data/lib/puppet/util/windows.rb +3 -0
  161. data/lib/puppet/util.rb +4 -3
  162. data/lib/puppet/version.rb +1 -1
  163. data/lib/puppet.rb +5 -9
  164. data/locales/puppet.pot +408 -364
  165. data/man/man5/puppet.conf.5 +303 -275
  166. data/man/man8/puppet-agent.8 +4 -1
  167. data/man/man8/puppet-apply.8 +1 -1
  168. data/man/man8/puppet-catalog.8 +9 -9
  169. data/man/man8/puppet-config.8 +1 -1
  170. data/man/man8/puppet-describe.8 +1 -1
  171. data/man/man8/puppet-device.8 +1 -1
  172. data/man/man8/puppet-doc.8 +1 -1
  173. data/man/man8/puppet-epp.8 +1 -1
  174. data/man/man8/puppet-facts.8 +8 -8
  175. data/man/man8/puppet-filebucket.8 +1 -1
  176. data/man/man8/puppet-generate.8 +1 -1
  177. data/man/man8/puppet-help.8 +1 -1
  178. data/man/man8/puppet-key.8 +7 -7
  179. data/man/man8/puppet-lookup.8 +1 -1
  180. data/man/man8/puppet-man.8 +1 -1
  181. data/man/man8/puppet-module.8 +3 -3
  182. data/man/man8/puppet-node.8 +5 -5
  183. data/man/man8/puppet-parser.8 +1 -1
  184. data/man/man8/puppet-plugin.8 +1 -1
  185. data/man/man8/puppet-report.8 +5 -5
  186. data/man/man8/puppet-resource.8 +1 -1
  187. data/man/man8/puppet-script.8 +1 -1
  188. data/man/man8/puppet-ssl.8 +1 -1
  189. data/man/man8/puppet-status.8 +4 -4
  190. data/man/man8/puppet.8 +2 -2
  191. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +2 -1
  192. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +3 -0
  193. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +4 -0
  194. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +3 -0
  195. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +8 -0
  196. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +25 -0
  197. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +19 -0
  198. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +20 -0
  199. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +8 -0
  200. data/spec/fixtures/ssl/127.0.0.1-key.pem +107 -57
  201. data/spec/fixtures/ssl/127.0.0.1.pem +52 -31
  202. data/spec/fixtures/ssl/bad-basic-constraints.pem +57 -35
  203. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +57 -35
  204. data/spec/fixtures/ssl/ca.pem +57 -35
  205. data/spec/fixtures/ssl/crl.pem +28 -18
  206. data/spec/fixtures/ssl/ec-key.pem +11 -11
  207. data/spec/fixtures/ssl/ec.pem +33 -24
  208. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  209. data/spec/fixtures/ssl/encrypted-key.pem +108 -58
  210. data/spec/fixtures/ssl/intermediate-agent-crl.pem +28 -19
  211. data/spec/fixtures/ssl/intermediate-agent.pem +57 -36
  212. data/spec/fixtures/ssl/intermediate-crl.pem +31 -21
  213. data/spec/fixtures/ssl/intermediate.pem +57 -36
  214. data/spec/fixtures/ssl/oid-key.pem +117 -0
  215. data/spec/fixtures/ssl/oid.pem +69 -0
  216. data/spec/fixtures/ssl/pluto-key.pem +107 -57
  217. data/spec/fixtures/ssl/pluto.pem +52 -30
  218. data/spec/fixtures/ssl/request-key.pem +107 -57
  219. data/spec/fixtures/ssl/request.pem +47 -26
  220. data/spec/fixtures/ssl/revoked-key.pem +107 -57
  221. data/spec/fixtures/ssl/revoked.pem +52 -30
  222. data/spec/fixtures/ssl/signed-key.pem +107 -57
  223. data/spec/fixtures/ssl/signed.pem +52 -30
  224. data/spec/fixtures/ssl/tampered-cert.pem +52 -30
  225. data/spec/fixtures/ssl/tampered-csr.pem +47 -26
  226. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +5 -0
  227. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +107 -57
  228. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +50 -29
  229. data/spec/fixtures/ssl/unknown-ca-key.pem +107 -57
  230. data/spec/fixtures/ssl/unknown-ca.pem +55 -33
  231. data/spec/integration/application/agent_spec.rb +141 -37
  232. data/spec/integration/application/filebucket_spec.rb +16 -0
  233. data/spec/integration/application/module_spec.rb +21 -0
  234. data/spec/integration/application/resource_spec.rb +64 -0
  235. data/spec/integration/application/ssl_spec.rb +20 -0
  236. data/spec/integration/configurer_spec.rb +18 -2
  237. data/spec/integration/environments/settings_interpolation_spec.rb +0 -4
  238. data/spec/integration/indirector/facts/facter_spec.rb +93 -39
  239. data/spec/integration/l10n/compiler_spec.rb +37 -0
  240. data/spec/integration/parser/pcore_resource_spec.rb +10 -0
  241. data/spec/integration/transaction/report_spec.rb +1 -1
  242. data/spec/integration/type/exec_spec.rb +70 -45
  243. data/spec/integration/type/file_spec.rb +2 -2
  244. data/spec/integration/type/package_spec.rb +6 -6
  245. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  246. data/spec/integration/util/windows/process_spec.rb +1 -9
  247. data/spec/lib/puppet/test_ca.rb +7 -2
  248. data/spec/lib/puppet_spec/modules.rb +13 -2
  249. data/spec/lib/puppet_spec/puppetserver.rb +15 -0
  250. data/spec/lib/puppet_spec/settings.rb +1 -0
  251. data/spec/shared_behaviours/documentation_on_faces.rb +0 -2
  252. data/spec/shared_contexts/l10n.rb +27 -0
  253. data/spec/spec_helper.rb +1 -10
  254. data/spec/unit/application/agent_spec.rb +7 -2
  255. data/spec/unit/application/apply_spec.rb +76 -56
  256. data/spec/unit/application/resource_spec.rb +29 -0
  257. data/spec/unit/configurer/downloader_spec.rb +6 -0
  258. data/spec/unit/configurer_spec.rb +256 -57
  259. data/spec/unit/defaults_spec.rb +1 -0
  260. data/spec/unit/environments_spec.rb +184 -0
  261. data/spec/unit/facter_impl_spec.rb +31 -0
  262. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  263. data/spec/unit/file_serving/configuration/parser_spec.rb +23 -0
  264. data/spec/unit/file_serving/configuration_spec.rb +14 -4
  265. data/spec/unit/file_serving/fileset_spec.rb +60 -0
  266. data/spec/unit/file_serving/mount/scripts_spec.rb +69 -0
  267. data/spec/unit/file_system_spec.rb +13 -0
  268. data/spec/unit/functions/assert_type_spec.rb +1 -1
  269. data/spec/unit/functions/empty_spec.rb +10 -0
  270. data/spec/unit/functions/logging_spec.rb +1 -0
  271. data/spec/unit/functions/lookup_spec.rb +64 -0
  272. data/spec/unit/functions/unwrap_spec.rb +8 -0
  273. data/spec/unit/functions4_spec.rb +2 -2
  274. data/spec/unit/gettext/config_spec.rb +12 -0
  275. data/spec/unit/http/client_spec.rb +58 -1
  276. data/spec/unit/http/service/compiler_spec.rb +131 -0
  277. data/spec/unit/indirector/catalog/compiler_spec.rb +101 -10
  278. data/spec/unit/indirector/catalog/rest_spec.rb +8 -0
  279. data/spec/unit/indirector/indirection_spec.rb +10 -3
  280. data/spec/unit/indirector/resource/ral_spec.rb +40 -75
  281. data/spec/unit/interface/action_spec.rb +0 -9
  282. data/spec/unit/module_spec.rb +15 -1
  283. data/spec/unit/module_tool/applications/installer_spec.rb +51 -12
  284. data/spec/unit/network/authstore_spec.rb +0 -15
  285. data/spec/unit/network/formats_spec.rb +6 -0
  286. data/spec/unit/parser/functions/fqdn_rand_spec.rb +15 -1
  287. data/spec/unit/parser/templatewrapper_spec.rb +12 -2
  288. data/spec/unit/pops/parser/parse_containers_spec.rb +0 -11
  289. data/spec/unit/pops/serialization/to_from_hr_spec.rb +58 -0
  290. data/spec/unit/pops/serialization/to_stringified_spec.rb +5 -0
  291. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +18 -0
  292. data/spec/unit/pops/types/p_sensitive_type_spec.rb +18 -0
  293. data/spec/unit/pops/types/type_calculator_spec.rb +6 -0
  294. data/spec/unit/provider/package/gem_spec.rb +1 -1
  295. data/spec/unit/provider/package/nim_spec.rb +42 -0
  296. data/spec/unit/provider/package/pip2_spec.rb +1 -1
  297. data/spec/unit/provider/package/pip3_spec.rb +1 -1
  298. data/spec/unit/provider/package/pip_spec.rb +38 -1
  299. data/spec/unit/provider/package/pkg_spec.rb +29 -4
  300. data/spec/unit/provider/package/puppet_gem_spec.rb +1 -1
  301. data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
  302. data/spec/unit/provider/parsedfile_spec.rb +10 -0
  303. data/spec/unit/provider/service/init_spec.rb +1 -0
  304. data/spec/unit/provider/service/launchd_spec.rb +11 -0
  305. data/spec/unit/provider/service/openwrt_spec.rb +3 -1
  306. data/spec/unit/provider/service/systemd_spec.rb +43 -9
  307. data/spec/unit/provider/service/windows_spec.rb +202 -0
  308. data/spec/unit/provider/user/aix_spec.rb +100 -0
  309. data/spec/unit/provider/user/directoryservice_spec.rb +68 -36
  310. data/spec/unit/provider/user/useradd_spec.rb +43 -2
  311. data/spec/unit/provider_spec.rb +4 -4
  312. data/spec/unit/puppet_spec.rb +12 -4
  313. data/spec/unit/resource/catalog_spec.rb +14 -1
  314. data/spec/unit/resource_spec.rb +58 -2
  315. data/spec/unit/settings_spec.rb +97 -56
  316. data/spec/unit/ssl/certificate_request_spec.rb +8 -14
  317. data/spec/unit/ssl/state_machine_spec.rb +19 -5
  318. data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -2
  319. data/spec/unit/transaction_spec.rb +18 -20
  320. data/spec/unit/type/exec_spec.rb +76 -29
  321. data/spec/unit/type/file/selinux_spec.rb +3 -3
  322. data/spec/unit/type/file/source_spec.rb +4 -4
  323. data/spec/unit/type/service_spec.rb +86 -188
  324. data/spec/unit/type/tidy_spec.rb +24 -7
  325. data/spec/unit/type/user_spec.rb +45 -0
  326. data/spec/unit/type_spec.rb +2 -2
  327. data/spec/unit/util/logging_spec.rb +2 -0
  328. data/spec/unit/util/selinux_spec.rb +87 -16
  329. data/spec/unit/util/windows/sid_spec.rb +39 -4
  330. data/tasks/generate_cert_fixtures.rake +12 -3
  331. data/tasks/parallel.rake +3 -3
  332. metadata +49 -95
  333. data/ext/README.environment +0 -8
  334. data/ext/dbfix.sql +0 -132
  335. data/ext/debian/README.Debian +0 -8
  336. data/ext/debian/README.source +0 -2
  337. data/ext/debian/TODO.Debian +0 -1
  338. data/ext/debian/changelog.erb +0 -1122
  339. data/ext/debian/compat +0 -1
  340. data/ext/debian/control +0 -144
  341. data/ext/debian/copyright +0 -339
  342. data/ext/debian/docs +0 -1
  343. data/ext/debian/fileserver.conf +0 -41
  344. data/ext/debian/puppet-common.dirs +0 -13
  345. data/ext/debian/puppet-common.install +0 -3
  346. data/ext/debian/puppet-common.lintian-overrides +0 -5
  347. data/ext/debian/puppet-common.manpages +0 -28
  348. data/ext/debian/puppet-common.postinst +0 -35
  349. data/ext/debian/puppet-common.postrm +0 -33
  350. data/ext/debian/puppet-el.dirs +0 -1
  351. data/ext/debian/puppet-el.emacsen-install +0 -25
  352. data/ext/debian/puppet-el.emacsen-remove +0 -11
  353. data/ext/debian/puppet-el.emacsen-startup +0 -9
  354. data/ext/debian/puppet-el.install +0 -1
  355. data/ext/debian/puppet-testsuite.install +0 -2
  356. data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
  357. data/ext/debian/puppet.lintian-overrides +0 -3
  358. data/ext/debian/puppet.logrotate +0 -20
  359. data/ext/debian/puppet.postinst +0 -20
  360. data/ext/debian/puppet.postrm +0 -20
  361. data/ext/debian/puppet.preinst +0 -20
  362. data/ext/debian/puppetmaster-common.install +0 -2
  363. data/ext/debian/puppetmaster-common.manpages +0 -2
  364. data/ext/debian/puppetmaster-common.postinst +0 -6
  365. data/ext/debian/puppetmaster-passenger.dirs +0 -4
  366. data/ext/debian/puppetmaster-passenger.postinst +0 -162
  367. data/ext/debian/puppetmaster-passenger.postrm +0 -61
  368. data/ext/debian/puppetmaster.README.debian +0 -17
  369. data/ext/debian/puppetmaster.default +0 -14
  370. data/ext/debian/puppetmaster.init +0 -137
  371. data/ext/debian/puppetmaster.lintian-overrides +0 -3
  372. data/ext/debian/puppetmaster.postinst +0 -20
  373. data/ext/debian/puppetmaster.postrm +0 -5
  374. data/ext/debian/puppetmaster.preinst +0 -22
  375. data/ext/debian/rules +0 -132
  376. data/ext/debian/source/format +0 -1
  377. data/ext/debian/source/options +0 -1
  378. data/ext/debian/vim-puppet.README.Debian +0 -13
  379. data/ext/debian/vim-puppet.dirs +0 -5
  380. data/ext/debian/vim-puppet.yaml +0 -7
  381. data/ext/debian/watch +0 -2
  382. data/ext/freebsd/puppetd +0 -26
  383. data/ext/freebsd/puppetmasterd +0 -26
  384. data/ext/gentoo/conf.d/puppet +0 -5
  385. data/ext/gentoo/conf.d/puppetmaster +0 -12
  386. data/ext/gentoo/init.d/puppet +0 -38
  387. data/ext/gentoo/init.d/puppetmaster +0 -51
  388. data/ext/gentoo/puppet/fileserver.conf +0 -41
  389. data/ext/ips/puppet-agent +0 -44
  390. data/ext/ips/puppet-master +0 -44
  391. data/ext/ips/puppet.p5m.erb +0 -12
  392. data/ext/ips/puppetagent.xml +0 -42
  393. data/ext/ips/puppetmaster.xml +0 -42
  394. data/ext/ips/rules +0 -19
  395. data/ext/ips/transforms +0 -34
  396. data/ext/ldap/puppet.schema +0 -24
  397. data/ext/logcheck/puppet +0 -23
  398. data/ext/osx/file_mapping.yaml +0 -33
  399. data/ext/osx/postflight.erb +0 -109
  400. data/ext/osx/preflight.erb +0 -52
  401. data/ext/osx/prototype.plist.erb +0 -38
  402. data/ext/redhat/fileserver.conf +0 -41
  403. data/ext/redhat/logrotate +0 -21
  404. data/ext/redhat/puppet.spec.erb +0 -842
  405. data/ext/redhat/server.init +0 -128
  406. data/ext/redhat/server.sysconfig +0 -13
  407. data/ext/solaris/pkginfo +0 -6
  408. data/ext/solaris/smf/puppetd.xml +0 -77
  409. data/ext/solaris/smf/puppetmasterd.xml +0 -77
  410. data/ext/solaris/smf/svc-puppetd +0 -71
  411. data/ext/solaris/smf/svc-puppetmasterd +0 -67
  412. data/ext/suse/puppet.spec +0 -310
  413. data/ext/suse/server.init +0 -173
  414. data/ext/yaml_nodes.rb +0 -105
  415. data/spec/unit/indirector/store_configs_spec.rb +0 -7
@@ -36,7 +36,7 @@ module PuppetSpec::Modules
36
36
  end
37
37
  end
38
38
 
39
- if plans = options[:plans]
39
+ if (plans = options[:plans])
40
40
  plans_dir = File.join(module_dir, 'plans')
41
41
  FileUtils.mkdir_p(plans_dir)
42
42
  plans.each do |plan_file|
@@ -48,6 +48,17 @@ module PuppetSpec::Modules
48
48
  end
49
49
  end
50
50
 
51
+ if (scripts = options[:scripts])
52
+ scripts_dir = File.join(module_dir, 'scripts')
53
+ FileUtils.mkdir_p(scripts_dir)
54
+ scripts.each do |script_file|
55
+ if script_file.is_a?(String)
56
+ script_file = { :name => script_file, :content => "" }
57
+ end
58
+ File.write(File.join(scripts_dir, script_file[:name]), script_file[:content])
59
+ end
60
+ end
61
+
51
62
  (options[:files] || {}).each do |fname, content|
52
63
  path = File.join(module_dir, fname)
53
64
  FileUtils.mkdir_p(File.dirname(path))
@@ -61,7 +72,7 @@ module PuppetSpec::Modules
61
72
  module_dir = File.join(dir, name)
62
73
  FileUtils.mkdir_p(module_dir)
63
74
 
64
- if metadata = options[:metadata]
75
+ if (metadata = options[:metadata])
65
76
  File.open(File.join(module_dir, 'metadata.json'), 'w') do |f|
66
77
  f.write(metadata.to_json)
67
78
  end
@@ -31,6 +31,19 @@ class PuppetSpec::Puppetserver
31
31
  end
32
32
  end
33
33
 
34
+ class FileMetadataServlet < WEBrick::HTTPServlet::AbstractServlet
35
+ def do_GET request, response
36
+ response['Content-Type'] = 'application/json'
37
+ response.body = "{\"path\":\"/etc/puppetlabs/code/environments/production/modules\",\"relative_path\":\".\",\"links\":\"follow\",\"owner\":0,\"group\":0,\"mode\":493,\"checksum\":{\"type\":\"ctime\",\"value\":\"{ctime}2020-03-06 20:14:25 UTC\"},\"type\":\"directory\",\"destination\":null}"
38
+ end
39
+ end
40
+
41
+ class FileContentServlet < WEBrick::HTTPServlet::AbstractServlet
42
+ def do_GET request, response
43
+ response.status = 404
44
+ end
45
+ end
46
+
34
47
  class ReportServlet < WEBrick::HTTPServlet::AbstractServlet
35
48
  def do_PUT request, response
36
49
  response['Content-Type'] = 'application/json'
@@ -106,7 +119,9 @@ class PuppetSpec::Puppetserver
106
119
  register_mount('/status/v1/simple/master', proc { |req, res| }, nil)
107
120
  register_mount('/puppet/v3/node', mounts[:node], NodeServlet)
108
121
  register_mount('/puppet/v3/catalog', mounts[:catalog], CatalogServlet)
122
+ register_mount('/puppet/v3/file_metadata', mounts[:file_metadata], FileMetadataServlet)
109
123
  register_mount('/puppet/v3/file_metadatas', mounts[:file_metadatas], FileMetadatasServlet)
124
+ register_mount('/puppet/v3/file_content', mounts[:file_content], FileContentServlet)
110
125
  register_mount('/puppet/v3/static_file_content', mounts[:static_file_content], StaticFileContentServlet)
111
126
  register_mount('/puppet/v3/report', mounts[:report], ReportServlet)
112
127
  register_mount('/puppet/v3/file_bucket_file', mounts[:filebucket], FilebucketServlet)
@@ -20,6 +20,7 @@ module PuppetSpec::Settings
20
20
  end.freeze
21
21
 
22
22
  def set_puppet_conf(confdir, settings)
23
+ FileUtils.mkdir_p(confdir)
23
24
  write_file(File.join(confdir, "puppet.conf"), settings)
24
25
  end
25
26
 
@@ -176,8 +176,6 @@ shared_examples_for "documentation on faces" do
176
176
  subject.license = "foo"
177
177
  expect(subject.license).to eq("foo")
178
178
  end
179
-
180
- it "should accept symbols to specify existing licenses..."
181
179
  end
182
180
 
183
181
  describe "#copyright" do
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.shared_context('l10n') do |locale|
4
+ before :all do
5
+ @old_locale = Locale.current
6
+ Locale.current = locale
7
+ Puppet::GettextConfig.setup_locale
8
+
9
+ # overwrite stubs with real implementation
10
+ ::Object.send(:remove_method, :_)
11
+ ::Object.send(:remove_method, :n_)
12
+ class ::Object
13
+ include FastGettext::Translation
14
+ end
15
+ end
16
+
17
+ after :all do
18
+ Locale.current = @old_locale
19
+
20
+ # restore stubs
21
+ load File.expand_path(File.join(__dir__, '../../lib/puppet/gettext/stubs.rb'))
22
+ end
23
+
24
+ before :each do
25
+ Puppet[:disable_i18n] = false
26
+ end
27
+ end
data/spec/spec_helper.rb CHANGED
@@ -68,16 +68,7 @@ VCR.turn_off!
68
68
  RSpec.configure do |config|
69
69
  include PuppetSpec::Fixtures
70
70
 
71
- # Examples or groups can selectively tag themselves as broken.
72
- # For example;
73
- #
74
- # rbv = "#{RUBY_VERSION}-p#{RbConfig::CONFIG['PATCHLEVEL']}"
75
- # describe "mostly working", :broken => false unless rbv == "1.9.3-p327" do
76
- # it "parses a valid IP" do
77
- # IPAddr.new("::2:3:4:5:6:7:8")
78
- # end
79
- # end
80
- exclude_filters = {:broken => true}
71
+ exclude_filters = {}
81
72
  exclude_filters[:benchmark] = true unless ENV['BENCHMARK']
82
73
  config.filter_run_excluding exclude_filters
83
74
 
@@ -546,11 +546,16 @@ describe Puppet::Application::Agent do
546
546
  @puppetd.options[:digest] = :MD5
547
547
  end
548
548
 
549
+ def expected_fingerprint(name, x509)
550
+ digest = OpenSSL::Digest.new(name).hexdigest(x509.to_der)
551
+ digest.scan(/../).join(':').upcase
552
+ end
553
+
549
554
  it "should fingerprint the certificate if it exists" do
550
555
  cert = cert_fixture('signed.pem')
551
556
  allow_any_instance_of(Puppet::X509::CertProvider).to receive(:load_client_cert).and_return(cert)
552
557
 
553
- expect(@puppetd).to receive(:puts).with('(MD5) E2:BA:9A:EF:20:A8:7D:10:8D:82:9A:61:5D:FD:5B:33')
558
+ expect(@puppetd).to receive(:puts).with("(MD5) #{expected_fingerprint('md5', cert)}")
554
559
 
555
560
  @puppetd.fingerprint
556
561
  end
@@ -560,7 +565,7 @@ describe Puppet::Application::Agent do
560
565
  allow_any_instance_of(Puppet::X509::CertProvider).to receive(:load_client_cert).and_return(nil)
561
566
  allow_any_instance_of(Puppet::X509::CertProvider).to receive(:load_request).and_return(request)
562
567
 
563
- expect(@puppetd).to receive(:puts).with('(MD5) B8:4C:FB:31:AE:17:86:E3:AD:53:97:CA:F6:3C:4A:CB')
568
+ expect(@puppetd).to receive(:puts).with("(MD5) #{expected_fingerprint('md5', request)}")
564
569
 
565
570
  @puppetd.fingerprint
566
571
  end
@@ -10,21 +10,22 @@ describe Puppet::Application::Apply do
10
10
 
11
11
  before :each do
12
12
  @apply = Puppet::Application[:apply]
13
- allow(Puppet::Util::Log).to receive(:newdestination)
14
13
  Puppet[:reports] = "none"
15
14
  end
16
15
 
17
- [:debug,:loadclasses,:test,:verbose,:use_nodes,:detailed_exitcodes,:catalog, :write_catalog_summary].each do |option|
18
- it "should declare handle_#{option} method" do
19
- expect(@apply).to respond_to("handle_#{option}".to_sym)
20
- end
21
-
16
+ [:debug,:loadclasses,:test,:verbose,:use_nodes,:detailed_exitcodes,:catalog].each do |option|
22
17
  it "should store argument value when calling handle_#{option}" do
23
18
  expect(@apply.options).to receive(:[]=).with(option, 'arg')
24
19
  @apply.send("handle_#{option}".to_sym, 'arg')
25
20
  end
26
21
  end
27
22
 
23
+ it "should handle write_catalog_summary" do
24
+ @apply.send(:handle_write_catalog_summary, true)
25
+
26
+ expect(Puppet[:write_catalog_summary]).to eq(true)
27
+ end
28
+
28
29
  it "should set the code to the provided code when :execute is used" do
29
30
  expect(@apply.options).to receive(:[]=).with(:code, 'arg')
30
31
  @apply.send("handle_execute".to_sym, 'arg')
@@ -53,23 +54,18 @@ describe Puppet::Application::Apply do
53
54
  end
54
55
 
55
56
  describe "with --test" do
56
- it "should call setup_test" do
57
- @apply.options[:test] = true
58
- expect(@apply).to receive(:setup_test)
59
-
60
- @apply.setup
61
- end
62
-
63
57
  it "should set options[:verbose] to true" do
64
58
  @apply.setup_test
65
59
 
66
60
  expect(@apply.options[:verbose]).to eq(true)
67
61
  end
62
+
68
63
  it "should set options[:show_diff] to true" do
69
64
  Puppet.settings.override_default(:show_diff, false)
70
65
  @apply.setup_test
71
66
  expect(Puppet[:show_diff]).to eq(true)
72
67
  end
68
+
73
69
  it "should set options[:detailed_exitcodes] to true" do
74
70
  @apply.setup_test
75
71
 
@@ -155,7 +151,7 @@ describe Puppet::Application::Apply do
155
151
  end
156
152
 
157
153
  describe "when executing" do
158
- it "should dispatch to 'apply' if it was called with 'apply'" do
154
+ it "should dispatch to 'apply' if it was called with a catalog" do
159
155
  @apply.options[:catalog] = "foo"
160
156
 
161
157
  expect(@apply).to receive(:apply)
@@ -213,47 +209,52 @@ describe Puppet::Application::Apply do
213
209
  @apply.options[:code] = "code to run"
214
210
  expect(Puppet).to receive(:[]=).with(:code,"code to run")
215
211
 
216
- expect { @apply.main }.to exit_with 0
212
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
217
213
  end
218
214
 
219
215
  it "should set the code to run from STDIN if no arguments" do
220
- allow(@apply.command_line).to receive(:args).and_return([])
216
+ @apply.command_line.args = []
221
217
  allow(STDIN).to receive(:read).and_return("code to run")
222
218
 
223
219
  expect(Puppet).to receive(:[]=).with(:code,"code to run")
224
220
 
225
- expect { @apply.main }.to exit_with 0
221
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
226
222
  end
227
223
 
228
224
  it "should raise an error if a file is passed on command line and the file does not exist" do
229
225
  noexist = tmpfile('noexist.pp')
230
- allow(@apply.command_line).to receive(:args).and_return([noexist])
231
- expect { @apply.main }.to raise_error(RuntimeError, "Could not find file #{noexist}")
226
+ @apply.command_line.args << noexist
227
+ expect {
228
+ @apply.run
229
+ }.to exit_with(1)
230
+ .and output(anything).to_stdout
231
+ .and output(/Could not find file #{noexist}/).to_stderr
232
232
  end
233
233
 
234
234
  it "should set the manifest to the first file and warn other files will be skipped" do
235
235
  manifest = tmpfile('starwarsIV')
236
236
  FileUtils.touch(manifest)
237
237
 
238
- allow(@apply.command_line).to receive(:args).and_return([manifest, 'starwarsI', 'starwarsII'])
239
-
240
- expect { @apply.main }.to exit_with 0
241
-
242
- msg = @logs.find {|m| m.message =~ /Only one file can be applied per run/ }
243
- expect(msg.message).to eq('Only one file can be applied per run. Skipping starwarsI, starwarsII')
244
- expect(msg.level).to eq(:warning)
238
+ @apply.command_line.args << manifest << 'starwarsI' << 'starwarsII'
239
+ expect {
240
+ @apply.run
241
+ }.to exit_with(0)
242
+ .and output(anything).to_stdout
243
+ .and output(/Warning: Only one file can be applied per run. Skipping starwarsI, starwarsII/).to_stderr
245
244
  end
246
245
 
247
246
  it "should splay" do
248
247
  expect(@apply).to receive(:splay)
249
248
 
250
- expect { @apply.main }.to exit_with 0
249
+ expect {
250
+ @apply.run
251
+ }.to exit_with(0).and output(anything).to_stdout
251
252
  end
252
253
 
253
- it "should raise an error if we can't find the node" do
254
+ it "should exit with 1 if we can't find the node" do
254
255
  expect(Puppet::Node.indirection).to receive(:find).and_return(nil)
255
256
 
256
- expect { @apply.main }.to raise_error(RuntimeError, /Could not find node/)
257
+ expect { @apply.run }.to exit_with(1).and output(/Could not find node/).to_stderr
257
258
  end
258
259
 
259
260
  it "should load custom classes if loadclasses" do
@@ -264,18 +265,18 @@ describe Puppet::Application::Apply do
264
265
 
265
266
  expect(@node).to receive(:classes=).with(['class'])
266
267
 
267
- expect { @apply.main }.to exit_with 0
268
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
268
269
  end
269
270
 
270
271
  it "should compile the catalog" do
271
272
  expect(Puppet::Resource::Catalog.indirection).to receive(:find).and_return(@catalog)
272
273
 
273
- expect { @apply.main }.to exit_with 0
274
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
274
275
  end
275
276
 
276
277
  it 'should called the DeferredResolver to resolve any Deferred values' do
277
278
  expect(Puppet::Pops::Evaluator::DeferredResolver).to receive(:resolve_and_replace).with(any_args)
278
- expect { @apply.main }.to exit_with 0
279
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
279
280
  end
280
281
 
281
282
  it 'should make the Puppet::Pops::Loaders available when applying the compiled catalog' do
@@ -285,47 +286,67 @@ describe Puppet::Application::Apply do
285
286
  fail('Loaders not found') unless Puppet.lookup(:loaders) { nil }.is_a?(Puppet::Pops::Loaders)
286
287
  true
287
288
  end.and_return(0)
288
- expect { @apply.main }.to exit_with 0
289
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
289
290
  end
290
291
 
291
292
  it "should transform the catalog to ral" do
292
293
  expect(@catalog).to receive(:to_ral).and_return(@catalog)
293
294
 
294
- expect { @apply.main }.to exit_with 0
295
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
295
296
  end
296
297
 
297
298
  it "should finalize the catalog" do
298
299
  expect(@catalog).to receive(:finalize)
299
300
 
300
- expect { @apply.main }.to exit_with 0
301
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
301
302
  end
302
303
 
303
304
  it "should not save the classes or resource file by default" do
304
305
  expect(@catalog).not_to receive(:write_class_file)
305
306
  expect(@catalog).not_to receive(:write_resource_file)
306
- expect { @apply.main }.to exit_with 0
307
+
308
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
307
309
  end
308
310
 
309
- it "should save the classes and resources files when requested" do
310
- @apply.options[:write_catalog_summary] = true
311
+ it "should save the classes and resources files when requested on the command line using dashes" do
312
+ expect(@catalog).to receive(:write_class_file).once
313
+ expect(@catalog).to receive(:write_resource_file).once
314
+
315
+ # dashes are parsed by the application's OptionParser
316
+ @apply.command_line.args = ['--write-catalog-summary']
317
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
318
+ end
319
+
320
+ it "should save the classes and resources files when requested on the command line using underscores" do
321
+ expect(@catalog).to receive(:write_class_file).once
322
+ expect(@catalog).to receive(:write_resource_file).once
323
+
324
+ # underscores are parsed by the settings PuppetOptionParser
325
+ @apply.command_line.args = ['--write_catalog_summary']
326
+ Puppet.initialize_settings(['--write_catalog_summary'])
327
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
328
+ end
329
+
330
+ it "should save the classes and resources files when specified as a setting" do
331
+ Puppet[:write_catalog_summary] = true
311
332
 
312
333
  expect(@catalog).to receive(:write_class_file).once
313
334
  expect(@catalog).to receive(:write_resource_file).once
314
335
 
315
- expect { @apply.main }.to exit_with 0
336
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
316
337
  end
317
338
 
318
339
  it "should call the prerun and postrun commands on a Configurer instance" do
319
340
  expect_any_instance_of(Puppet::Configurer).to receive(:execute_prerun_command).and_return(true)
320
341
  expect_any_instance_of(Puppet::Configurer).to receive(:execute_postrun_command).and_return(true)
321
342
 
322
- expect { @apply.main }.to exit_with 0
343
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
323
344
  end
324
345
 
325
346
  it "should apply the catalog" do
326
347
  expect(@catalog).to receive(:apply).and_return(double('transaction'))
327
348
 
328
- expect { @apply.main }.to exit_with 0
349
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
329
350
  end
330
351
 
331
352
  it "should save the last run summary" do
@@ -334,7 +355,7 @@ describe Puppet::Application::Apply do
334
355
  allow(Puppet::Transaction::Report).to receive(:new).and_return(report)
335
356
 
336
357
  expect_any_instance_of(Puppet::Configurer).to receive(:save_last_run_summary).with(report)
337
- expect { @apply.main }.to exit_with 0
358
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
338
359
  end
339
360
 
340
361
  describe "when using node_name_fact" do
@@ -347,27 +368,27 @@ describe Puppet::Application::Apply do
347
368
  end
348
369
 
349
370
  it "should set the facts name based on the node_name_fact" do
350
- expect { @apply.main }.to exit_with 0
371
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
351
372
  expect(@facts.name).to eq('other_node_name')
352
373
  end
353
374
 
354
375
  it "should set the node_name_value based on the node_name_fact" do
355
- expect { @apply.main }.to exit_with 0
376
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
356
377
  expect(Puppet[:node_name_value]).to eq('other_node_name')
357
378
  end
358
379
 
359
380
  it "should merge in our node the loaded facts" do
360
381
  @facts.values.merge!('key' => 'value')
361
382
 
362
- expect { @apply.main }.to exit_with 0
383
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
363
384
 
364
385
  expect(@node.parameters['key']).to eq('value')
365
386
  end
366
387
 
367
- it "should raise an error if we can't find the facts" do
388
+ it "should exit if we can't find the facts" do
368
389
  expect(Puppet::Node::Facts.indirection).to receive(:find).and_return(nil)
369
390
 
370
- expect { @apply.main }.to raise_error(RuntimeError, /Could not find facts/)
391
+ expect { @apply.run }.to exit_with(1).and output(/Could not find facts/).to_stderr
371
392
  end
372
393
  end
373
394
 
@@ -380,14 +401,14 @@ describe Puppet::Application::Apply do
380
401
  Puppet[:noop] = false
381
402
  allow_any_instance_of(Puppet::Transaction::Report).to receive(:exit_status).and_return(666)
382
403
 
383
- expect { @apply.main }.to exit_with 666
404
+ expect { @apply.run }.to exit_with(666).and output(anything).to_stdout
384
405
  end
385
406
 
386
407
  it "should exit with report's computed exit status, even if --noop is set" do
387
408
  Puppet[:noop] = true
388
409
  allow_any_instance_of(Puppet::Transaction::Report).to receive(:exit_status).and_return(666)
389
410
 
390
- expect { @apply.main }.to exit_with 666
411
+ expect { @apply.run }.to exit_with(666).and output(anything).to_stdout
391
412
  end
392
413
 
393
414
  it "should always exit with 0 if option is disabled" do
@@ -395,7 +416,7 @@ describe Puppet::Application::Apply do
395
416
  report = double('report', :exit_status => 666)
396
417
  allow(@transaction).to receive(:report).and_return(report)
397
418
 
398
- expect { @apply.main }.to exit_with 0
419
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
399
420
  end
400
421
 
401
422
  it "should always exit with 0 if --noop" do
@@ -403,7 +424,7 @@ describe Puppet::Application::Apply do
403
424
  report = double('report', :exit_status => 666)
404
425
  allow(@transaction).to receive(:report).and_return(report)
405
426
 
406
- expect { @apply.main }.to exit_with 0
427
+ expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
407
428
  end
408
429
  end
409
430
  end
@@ -503,16 +524,15 @@ describe Puppet::Application::Apply do
503
524
  }
504
525
  CODE
505
526
 
506
- @apply.options[:write_catalog_summary] = true
507
-
527
+ Puppet.settings[:write_catalog_summary] = true
508
528
  Puppet.settings[:resourcefile] = resourcefile
509
529
  Puppet.settings[:classfile] = classfile
510
530
 
511
531
  #We don't actually need the resource to do anything, we are using it's properties in other parts of the workflow.
512
- allow(Puppet::Util::Execution).to receive(:execute)
513
-
514
- expect { @apply.main }.to exit_with 0
532
+ allow_any_instance_of(Puppet::Type.type(:exec).defaultprovider).to receive(:which).and_return('cat')
533
+ allow(Puppet::Util::Execution).to receive(:execute).and_return(double(exitstatus: 0, output: ''))
515
534
 
535
+ expect { @apply.run }.to exit_with(0).and output(%r{Exec\[do it\]/returns: executed successfully}).to_stdout
516
536
  result = File.read(resourcefile)
517
537
 
518
538
  expect(result).not_to match(/secret_file_name/)
@@ -129,6 +129,35 @@ describe Puppet::Application::Resource do
129
129
  end
130
130
 
131
131
  describe "when printing output" do
132
+ it "should not emit puppet class tags when printing yaml" do
133
+ Puppet::Type.newtype(:stringify) do
134
+ ensurable
135
+ newparam(:name, isnamevar: true)
136
+ newproperty(:string)
137
+ end
138
+
139
+ Puppet::Type.type(:stringify).provide(:stringify) do
140
+ def exists?
141
+ true
142
+ end
143
+
144
+ def string
145
+ Puppet::Util::Execution::ProcessOutput.new('test', 0)
146
+ end
147
+ end
148
+
149
+ @resource_app.options[:to_yaml] = true
150
+ allow(@resource_app.command_line).to receive(:args).and_return(['stringify', 'hello', 'ensure=present', 'string=asd'])
151
+ expect(@resource_app).to receive(:puts).with(<<~YAML)
152
+ ---
153
+ stringify:
154
+ hello:
155
+ ensure: present
156
+ string: test
157
+ YAML
158
+ expect { @resource_app.main }.not_to raise_error
159
+ end
160
+
132
161
  it "should ensure all values to be printed are in the external encoding" do
133
162
  resources = [
134
163
  Puppet::Type.type(:user).new(:name => "\u2603".force_encoding(Encoding::UTF_8)).to_resource,
@@ -81,6 +81,12 @@ describe Puppet::Configurer::Downloader do
81
81
  expect(file[:source_permissions]).to eq(:ignore)
82
82
  end
83
83
 
84
+ it "should ignore the max file limit" do
85
+ file = generate_file_resource
86
+
87
+ expect(file[:max_files]).to eq(-1)
88
+ end
89
+
84
90
  describe "on POSIX", :if => Puppet.features.posix? do
85
91
  it "should allow source_permissions to be overridden" do
86
92
  file = generate_file_resource(:source_permissions => :use)