puppet 6.29.0 → 7.0.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 (811) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +16 -2
  3. data/CONTRIBUTING.md +5 -5
  4. data/Gemfile +5 -7
  5. data/Gemfile.lock +52 -143
  6. data/README.md +5 -5
  7. data/conf/fileserver.conf +5 -10
  8. data/ext/README.environment +8 -0
  9. data/ext/build_defaults.yaml +1 -1
  10. data/ext/dbfix.sql +132 -0
  11. data/ext/debian/README.Debian +8 -0
  12. data/ext/debian/README.source +2 -0
  13. data/ext/debian/TODO.Debian +1 -0
  14. data/ext/debian/changelog.erb +1122 -0
  15. data/ext/debian/compat +1 -0
  16. data/ext/debian/control +144 -0
  17. data/ext/debian/copyright +339 -0
  18. data/ext/debian/docs +1 -0
  19. data/ext/debian/fileserver.conf +41 -0
  20. data/ext/debian/puppet-common.dirs +13 -0
  21. data/ext/debian/puppet-common.install +3 -0
  22. data/ext/debian/puppet-common.lintian-overrides +5 -0
  23. data/ext/debian/puppet-common.manpages +28 -0
  24. data/ext/debian/puppet-common.postinst +35 -0
  25. data/ext/debian/puppet-common.postrm +33 -0
  26. data/ext/debian/puppet-el.dirs +1 -0
  27. data/ext/debian/puppet-el.emacsen-install +25 -0
  28. data/ext/debian/puppet-el.emacsen-remove +11 -0
  29. data/ext/debian/puppet-el.emacsen-startup +9 -0
  30. data/ext/debian/puppet-el.install +1 -0
  31. data/ext/debian/puppet-testsuite.install +2 -0
  32. data/ext/debian/puppet-testsuite.lintian-overrides +4 -0
  33. data/ext/debian/puppet.lintian-overrides +3 -0
  34. data/ext/debian/puppet.logrotate +20 -0
  35. data/ext/debian/puppet.postinst +20 -0
  36. data/ext/debian/puppet.postrm +20 -0
  37. data/ext/debian/puppet.preinst +20 -0
  38. data/ext/debian/puppetmaster-common.install +2 -0
  39. data/ext/debian/puppetmaster-common.manpages +2 -0
  40. data/ext/debian/puppetmaster-common.postinst +6 -0
  41. data/ext/debian/puppetmaster-passenger.dirs +4 -0
  42. data/ext/debian/puppetmaster-passenger.postinst +162 -0
  43. data/ext/debian/puppetmaster-passenger.postrm +61 -0
  44. data/ext/debian/puppetmaster.README.debian +17 -0
  45. data/ext/debian/puppetmaster.default +14 -0
  46. data/ext/debian/puppetmaster.init +137 -0
  47. data/ext/debian/puppetmaster.lintian-overrides +3 -0
  48. data/ext/debian/puppetmaster.postinst +20 -0
  49. data/ext/debian/puppetmaster.postrm +5 -0
  50. data/ext/debian/puppetmaster.preinst +22 -0
  51. data/ext/debian/rules +132 -0
  52. data/ext/debian/source/format +1 -0
  53. data/ext/debian/source/options +1 -0
  54. data/ext/debian/vim-puppet.README.Debian +13 -0
  55. data/ext/debian/vim-puppet.dirs +5 -0
  56. data/ext/debian/vim-puppet.yaml +7 -0
  57. data/ext/debian/watch +2 -0
  58. data/ext/freebsd/puppetd +26 -0
  59. data/ext/freebsd/puppetmasterd +26 -0
  60. data/ext/gentoo/conf.d/puppet +5 -0
  61. data/ext/gentoo/conf.d/puppetmaster +12 -0
  62. data/ext/gentoo/init.d/puppet +38 -0
  63. data/ext/gentoo/init.d/puppetmaster +51 -0
  64. data/ext/gentoo/puppet/fileserver.conf +41 -0
  65. data/ext/ips/puppet-agent +44 -0
  66. data/ext/ips/puppet-master +44 -0
  67. data/ext/ips/puppet.p5m.erb +12 -0
  68. data/ext/ips/puppetagent.xml +42 -0
  69. data/ext/ips/puppetmaster.xml +42 -0
  70. data/ext/ips/rules +19 -0
  71. data/ext/ips/transforms +34 -0
  72. data/ext/ldap/puppet.schema +24 -0
  73. data/ext/logcheck/puppet +23 -0
  74. data/{examples → ext}/nagios/check_puppet.rb +2 -2
  75. data/ext/osx/file_mapping.yaml +28 -0
  76. data/ext/osx/postflight.erb +109 -0
  77. data/ext/osx/preflight.erb +52 -0
  78. data/ext/osx/prototype.plist.erb +38 -0
  79. data/ext/osx/puppet.plist +0 -2
  80. data/ext/project_data.yaml +2 -16
  81. data/ext/redhat/fileserver.conf +41 -0
  82. data/ext/redhat/logrotate +21 -0
  83. data/ext/redhat/puppet.spec.erb +841 -0
  84. data/ext/redhat/server.init +128 -0
  85. data/ext/redhat/server.sysconfig +13 -0
  86. data/{examples/enc → ext}/regexp_nodes/classes/databases +0 -0
  87. data/{examples/enc → ext}/regexp_nodes/classes/webservers +0 -0
  88. data/{examples/enc → ext}/regexp_nodes/environment/development +0 -0
  89. data/{examples/enc → ext}/regexp_nodes/parameters/service/prod +0 -0
  90. data/{examples/enc → ext}/regexp_nodes/parameters/service/qa +0 -0
  91. data/{examples/enc → ext}/regexp_nodes/parameters/service/sandbox +0 -0
  92. data/{examples/enc → ext}/regexp_nodes/regexp_nodes.rb +0 -0
  93. data/ext/solaris/pkginfo +6 -0
  94. data/ext/solaris/smf/puppetd.xml +77 -0
  95. data/ext/solaris/smf/puppetmasterd.xml +77 -0
  96. data/ext/solaris/smf/svc-puppetd +71 -0
  97. data/ext/solaris/smf/svc-puppetmasterd +67 -0
  98. data/ext/suse/puppet.spec +310 -0
  99. data/ext/suse/server.init +173 -0
  100. data/ext/windows/service/daemon.rb +6 -5
  101. data/ext/yaml_nodes.rb +105 -0
  102. data/install.rb +21 -17
  103. data/lib/puppet/agent.rb +11 -47
  104. data/lib/puppet/application/agent.rb +16 -18
  105. data/lib/puppet/application/apply.rb +4 -24
  106. data/lib/puppet/application/device.rb +100 -106
  107. data/lib/puppet/application/filebucket.rb +13 -10
  108. data/lib/puppet/application/lookup.rb +24 -74
  109. data/lib/puppet/application/resource.rb +16 -32
  110. data/lib/puppet/application/script.rb +0 -2
  111. data/lib/puppet/application/ssl.rb +1 -13
  112. data/lib/puppet/application.rb +178 -108
  113. data/lib/puppet/application_support.rb +0 -7
  114. data/lib/puppet/concurrent/thread_local_singleton.rb +3 -6
  115. data/lib/puppet/configurer/downloader.rb +1 -2
  116. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  117. data/lib/puppet/configurer.rb +86 -183
  118. data/lib/puppet/confine/variable.rb +1 -1
  119. data/lib/puppet/defaults.rb +130 -244
  120. data/lib/puppet/environments.rb +82 -146
  121. data/lib/puppet/face/facts.rb +5 -103
  122. data/lib/puppet/face/generate.rb +0 -2
  123. data/lib/puppet/face/help/action.erb +0 -1
  124. data/lib/puppet/face/help/face.erb +0 -1
  125. data/lib/puppet/face/help.rb +1 -1
  126. data/lib/puppet/face/node/clean.rb +0 -11
  127. data/lib/puppet/face/plugin.rb +5 -8
  128. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  129. data/lib/puppet/ffi/windows/constants.rb +404 -0
  130. data/lib/puppet/ffi/windows/functions.rb +628 -0
  131. data/lib/puppet/ffi/windows/structs.rb +338 -0
  132. data/lib/puppet/ffi/windows.rb +12 -0
  133. data/lib/puppet/file_serving/configuration/parser.rb +3 -34
  134. data/lib/puppet/file_serving/configuration.rb +0 -8
  135. data/lib/puppet/file_serving/fileset.rb +2 -14
  136. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  137. data/lib/puppet/file_serving/metadata.rb +0 -3
  138. data/lib/puppet/file_serving/mount/file.rb +4 -4
  139. data/lib/puppet/file_serving/mount.rb +1 -2
  140. data/lib/puppet/file_system/file_impl.rb +8 -10
  141. data/lib/puppet/file_system/jruby.rb +1 -1
  142. data/lib/puppet/file_system/memory_file.rb +1 -8
  143. data/lib/puppet/file_system/windows.rb +6 -8
  144. data/lib/puppet/file_system.rb +1 -1
  145. data/lib/puppet/forge/repository.rb +0 -1
  146. data/lib/puppet/forge.rb +4 -4
  147. data/lib/puppet/functions/all.rb +1 -1
  148. data/lib/puppet/functions/camelcase.rb +1 -1
  149. data/lib/puppet/functions/capitalize.rb +2 -2
  150. data/lib/puppet/functions/downcase.rb +2 -2
  151. data/lib/puppet/functions/empty.rb +0 -8
  152. data/lib/puppet/functions/find_template.rb +2 -2
  153. data/lib/puppet/functions/get.rb +5 -5
  154. data/lib/puppet/functions/group_by.rb +5 -13
  155. data/lib/puppet/functions/lest.rb +1 -1
  156. data/lib/puppet/functions/new.rb +100 -100
  157. data/lib/puppet/functions/next.rb +1 -18
  158. data/lib/puppet/functions/partition.rb +4 -12
  159. data/lib/puppet/functions/require.rb +5 -5
  160. data/lib/puppet/functions/sort.rb +3 -3
  161. data/lib/puppet/functions/strftime.rb +0 -1
  162. data/lib/puppet/functions/tree_each.rb +10 -7
  163. data/lib/puppet/functions/type.rb +4 -4
  164. data/lib/puppet/functions/unwrap.rb +2 -17
  165. data/lib/puppet/functions/upcase.rb +2 -2
  166. data/lib/puppet/functions/versioncmp.rb +2 -6
  167. data/lib/puppet/generate/models/type/type.rb +4 -1
  168. data/lib/puppet/generate/type.rb +0 -9
  169. data/lib/puppet/http/client.rb +167 -137
  170. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  171. data/lib/puppet/http/errors.rb +16 -0
  172. data/lib/puppet/http/external_client.rb +5 -7
  173. data/lib/puppet/{network/http → http}/factory.rb +8 -15
  174. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  175. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  176. data/lib/puppet/http/proxy.rb +137 -0
  177. data/lib/puppet/http/redirector.rb +4 -17
  178. data/lib/puppet/http/resolver/server_list.rb +10 -25
  179. data/lib/puppet/http/resolver/settings.rb +4 -7
  180. data/lib/puppet/http/resolver/srv.rb +7 -11
  181. data/lib/puppet/http/resolver.rb +5 -15
  182. data/lib/puppet/http/response.rb +36 -54
  183. data/lib/puppet/http/response_converter.rb +24 -0
  184. data/lib/puppet/http/response_net_http.rb +42 -0
  185. data/lib/puppet/http/retry_after_handler.rb +4 -13
  186. data/lib/puppet/http/service/ca.rb +11 -22
  187. data/lib/puppet/http/service/compiler.rb +23 -144
  188. data/lib/puppet/http/service/file_server.rb +19 -29
  189. data/lib/puppet/http/service/puppetserver.rb +26 -12
  190. data/lib/puppet/http/service/report.rb +8 -10
  191. data/lib/puppet/http/service.rb +12 -26
  192. data/lib/puppet/http/session.rb +11 -20
  193. data/lib/puppet/{network/http → http}/site.rb +1 -2
  194. data/lib/puppet/http.rb +22 -13
  195. data/lib/puppet/indirector/catalog/compiler.rb +6 -25
  196. data/lib/puppet/indirector/catalog/rest.rb +2 -5
  197. data/lib/puppet/indirector/facts/facter.rb +6 -6
  198. data/lib/puppet/indirector/facts/rest.rb +3 -22
  199. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  200. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  201. data/lib/puppet/indirector/file_metadata/rest.rb +3 -10
  202. data/lib/puppet/indirector/file_server.rb +1 -8
  203. data/lib/puppet/indirector/generic_http.rb +0 -11
  204. data/lib/puppet/indirector/indirection.rb +1 -1
  205. data/lib/puppet/indirector/node/rest.rb +2 -4
  206. data/lib/puppet/indirector/report/rest.rb +3 -8
  207. data/lib/puppet/indirector/request.rb +0 -101
  208. data/lib/puppet/indirector/resource/ral.rb +1 -6
  209. data/lib/puppet/indirector/rest.rb +12 -263
  210. data/lib/puppet/indirector/terminus.rb +0 -4
  211. data/lib/puppet/interface/documentation.rb +0 -1
  212. data/lib/puppet/module/plan.rb +1 -0
  213. data/lib/puppet/module/task.rb +1 -1
  214. data/lib/puppet/module.rb +0 -1
  215. data/lib/puppet/module_tool/applications/installer.rb +2 -56
  216. data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
  217. data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
  218. data/lib/puppet/module_tool/applications.rb +0 -1
  219. data/lib/puppet/module_tool/errors/shared.rb +2 -34
  220. data/lib/puppet/network/authconfig.rb +2 -96
  221. data/lib/puppet/network/authorization.rb +13 -35
  222. data/lib/puppet/network/formats.rb +0 -67
  223. data/lib/puppet/network/http/api/indirected_routes.rb +3 -21
  224. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  225. data/lib/puppet/network/http/connection.rb +247 -316
  226. data/lib/puppet/network/http/handler.rb +0 -1
  227. data/lib/puppet/network/http.rb +3 -3
  228. data/lib/puppet/network/http_pool.rb +16 -34
  229. data/lib/puppet/node/environment.rb +11 -10
  230. data/lib/puppet/node.rb +2 -31
  231. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  232. data/lib/puppet/pal/pal_impl.rb +4 -2
  233. data/lib/puppet/parser/ast/leaf.rb +2 -3
  234. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  235. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  236. data/lib/puppet/parser/compiler.rb +0 -198
  237. data/lib/puppet/parser/functions/fqdn_rand.rb +6 -14
  238. data/lib/puppet/parser/resource.rb +1 -70
  239. data/lib/puppet/parser/scope.rb +0 -1
  240. data/lib/puppet/parser/templatewrapper.rb +1 -2
  241. data/lib/puppet/pops/evaluator/closure.rb +5 -7
  242. data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
  243. data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
  244. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -4
  245. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  246. data/lib/puppet/pops/issues.rb +0 -5
  247. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  248. data/lib/puppet/pops/lookup/lookup_adapter.rb +2 -3
  249. data/lib/puppet/pops/model/ast.pp +0 -42
  250. data/lib/puppet/pops/model/ast.rb +0 -291
  251. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  252. data/lib/puppet/pops/model/factory.rb +1 -47
  253. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  254. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  255. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  256. data/lib/puppet/pops/parser/code_merger.rb +4 -4
  257. data/lib/puppet/pops/parser/egrammar.ra +0 -58
  258. data/lib/puppet/pops/parser/eparser.rb +1685 -1896
  259. data/lib/puppet/pops/parser/lexer2.rb +91 -92
  260. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  261. data/lib/puppet/pops/parser/slurp_support.rb +0 -1
  262. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  263. data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
  264. data/lib/puppet/pops/types/p_sem_ver_type.rb +2 -8
  265. data/lib/puppet/pops/types/p_sensitive_type.rb +0 -10
  266. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  267. data/lib/puppet/pops/types/type_formatter.rb +3 -4
  268. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  269. data/lib/puppet/pops/types/type_parser.rb +0 -4
  270. data/lib/puppet/pops/types/types.rb +1 -2
  271. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  272. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  273. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  274. data/lib/puppet/property/list.rb +1 -1
  275. data/lib/puppet/provider/aix_object.rb +1 -1
  276. data/lib/puppet/provider/exec/posix.rb +4 -16
  277. data/lib/puppet/provider/group/groupadd.rb +10 -18
  278. data/lib/puppet/provider/nameservice.rb +0 -18
  279. data/lib/puppet/provider/package/apt.rb +2 -34
  280. data/lib/puppet/provider/package/aptitude.rb +0 -6
  281. data/lib/puppet/provider/package/dnfmodule.rb +1 -1
  282. data/lib/puppet/provider/package/dpkg.rb +0 -10
  283. data/lib/puppet/provider/package/gem.rb +23 -3
  284. data/lib/puppet/provider/package/nim.rb +6 -11
  285. data/lib/puppet/provider/package/pip.rb +3 -16
  286. data/lib/puppet/provider/package/pkg.rb +2 -23
  287. data/lib/puppet/provider/package/portage.rb +1 -1
  288. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  289. data/lib/puppet/provider/package/puppetserver_gem.rb +17 -8
  290. data/lib/puppet/provider/package/windows/exe_package.rb +1 -30
  291. data/lib/puppet/provider/package/windows/package.rb +1 -2
  292. data/lib/puppet/provider/package/windows.rb +1 -14
  293. data/lib/puppet/provider/package/yum.rb +1 -1
  294. data/lib/puppet/provider/parsedfile.rb +0 -3
  295. data/lib/puppet/provider/service/base.rb +1 -1
  296. data/lib/puppet/provider/service/debian.rb +0 -2
  297. data/lib/puppet/provider/service/init.rb +9 -10
  298. data/lib/puppet/provider/service/launchd.rb +2 -2
  299. data/lib/puppet/provider/service/redhat.rb +1 -1
  300. data/lib/puppet/provider/service/smf.rb +194 -76
  301. data/lib/puppet/provider/service/systemd.rb +6 -16
  302. data/lib/puppet/provider/service/upstart.rb +5 -5
  303. data/lib/puppet/provider/service/windows.rb +0 -38
  304. data/lib/puppet/provider/user/aix.rb +3 -46
  305. data/lib/puppet/provider/user/directoryservice.rb +11 -39
  306. data/lib/puppet/provider/user/useradd.rb +24 -134
  307. data/lib/puppet/provider.rb +1 -14
  308. data/lib/puppet/reference/configuration.rb +8 -7
  309. data/lib/puppet/reference/indirection.rb +1 -1
  310. data/lib/puppet/reference/providers.rb +2 -2
  311. data/lib/puppet/resource/catalog.rb +2 -15
  312. data/lib/puppet/resource/type.rb +3 -119
  313. data/lib/puppet/resource/type_collection.rb +3 -49
  314. data/lib/puppet/resource.rb +6 -127
  315. data/lib/puppet/runtime.rb +2 -13
  316. data/lib/puppet/settings/environment_conf.rb +0 -1
  317. data/lib/puppet/settings/integer_setting.rb +17 -0
  318. data/lib/puppet/settings/port_setting.rb +15 -0
  319. data/lib/puppet/settings/priority_setting.rb +5 -4
  320. data/lib/puppet/settings.rb +82 -98
  321. data/lib/puppet/ssl/base.rb +3 -5
  322. data/lib/puppet/ssl/certificate.rb +0 -6
  323. data/lib/puppet/ssl/certificate_request.rb +1 -12
  324. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  325. data/lib/puppet/ssl/oids.rb +3 -1
  326. data/lib/puppet/ssl/ssl_provider.rb +36 -75
  327. data/lib/puppet/ssl/state_machine.rb +20 -14
  328. data/lib/puppet/ssl/verifier.rb +2 -6
  329. data/lib/puppet/ssl.rb +10 -6
  330. data/lib/puppet/test/test_helper.rb +2 -7
  331. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  332. data/lib/puppet/transaction/persistence.rb +1 -21
  333. data/lib/puppet/transaction/report.rb +3 -19
  334. data/lib/puppet/transaction.rb +1 -7
  335. data/lib/puppet/type/exec.rb +6 -36
  336. data/lib/puppet/type/file/checksum.rb +1 -1
  337. data/lib/puppet/type/file/data_sync.rb +1 -1
  338. data/lib/puppet/type/file/mode.rb +0 -6
  339. data/lib/puppet/type/file/selcontext.rb +1 -1
  340. data/lib/puppet/type/file/source.rb +1 -1
  341. data/lib/puppet/type/file.rb +12 -32
  342. data/lib/puppet/type/filebucket.rb +4 -4
  343. data/lib/puppet/type/group.rb +1 -0
  344. data/lib/puppet/type/package.rb +8 -16
  345. data/lib/puppet/type/resources.rb +1 -1
  346. data/lib/puppet/type/service.rb +41 -26
  347. data/lib/puppet/type/tidy.rb +3 -22
  348. data/lib/puppet/type/user.rb +13 -35
  349. data/lib/puppet/type.rb +1 -77
  350. data/lib/puppet/util/autoload.rb +8 -1
  351. data/lib/puppet/util/command_line.rb +1 -1
  352. data/lib/puppet/util/execution.rb +0 -11
  353. data/lib/puppet/util/filetype.rb +2 -2
  354. data/lib/puppet/util/http_proxy.rb +2 -215
  355. data/lib/puppet/util/json.rb +0 -20
  356. data/lib/puppet/util/log.rb +4 -8
  357. data/lib/puppet/util/logging.rb +25 -1
  358. data/lib/puppet/util/monkey_patches.rb +2 -59
  359. data/lib/puppet/util/package.rb +16 -25
  360. data/lib/puppet/util/pidlock.rb +1 -1
  361. data/lib/puppet/util/posix.rb +5 -54
  362. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  363. data/lib/puppet/util/rdoc.rb +0 -7
  364. data/lib/puppet/util/retry_action.rb +1 -1
  365. data/lib/puppet/util/run_mode.rb +9 -1
  366. data/lib/puppet/util/selinux.rb +4 -30
  367. data/lib/puppet/util/suidmanager.rb +2 -1
  368. data/lib/puppet/util/symbolic_file_mode.rb +17 -29
  369. data/lib/puppet/util/tagging.rb +0 -1
  370. data/lib/puppet/util/windows/adsi.rb +0 -46
  371. data/lib/puppet/util/windows/daemon.rb +360 -0
  372. data/lib/puppet/util/windows/error.rb +1 -0
  373. data/lib/puppet/util/windows/eventlog.rb +4 -9
  374. data/lib/puppet/util/windows/file.rb +8 -242
  375. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  376. data/lib/puppet/util/windows/principal.rb +2 -9
  377. data/lib/puppet/util/windows/process.rb +4 -226
  378. data/lib/puppet/util/windows/service.rb +11 -457
  379. data/lib/puppet/util/windows/sid.rb +2 -6
  380. data/lib/puppet/util/windows/string.rb +12 -13
  381. data/lib/puppet/util/windows/user.rb +2 -0
  382. data/lib/puppet/util/windows.rb +3 -11
  383. data/lib/puppet/util/yaml.rb +1 -42
  384. data/lib/puppet/util.rb +5 -5
  385. data/lib/puppet/vendor/require_vendored.rb +0 -1
  386. data/lib/puppet/version.rb +1 -1
  387. data/lib/puppet/x509/cert_provider.rb +29 -1
  388. data/lib/puppet/x509.rb +5 -1
  389. data/lib/puppet.rb +34 -27
  390. data/locales/puppet.pot +9633 -5
  391. data/man/man5/puppet.conf.5 +286 -401
  392. data/man/man8/puppet-agent.8 +2 -5
  393. data/man/man8/puppet-apply.8 +2 -2
  394. data/man/man8/puppet-catalog.8 +9 -9
  395. data/man/man8/puppet-config.8 +1 -1
  396. data/man/man8/puppet-describe.8 +1 -1
  397. data/man/man8/puppet-device.8 +2 -2
  398. data/man/man8/puppet-doc.8 +1 -1
  399. data/man/man8/puppet-epp.8 +1 -1
  400. data/man/man8/puppet-facts.8 +8 -51
  401. data/man/man8/puppet-filebucket.8 +4 -4
  402. data/man/man8/puppet-generate.8 +1 -1
  403. data/man/man8/puppet-help.8 +1 -1
  404. data/man/man8/puppet-lookup.8 +6 -9
  405. data/man/man8/puppet-module.8 +3 -60
  406. data/man/man8/puppet-node.8 +5 -5
  407. data/man/man8/puppet-parser.8 +1 -1
  408. data/man/man8/puppet-plugin.8 +1 -1
  409. data/man/man8/puppet-report.8 +5 -5
  410. data/man/man8/puppet-resource.8 +1 -1
  411. data/man/man8/puppet-script.8 +2 -2
  412. data/man/man8/puppet-ssl.8 +1 -5
  413. data/man/man8/puppet.8 +2 -2
  414. data/spec/fixtures/ssl/127.0.0.1-key.pem +57 -107
  415. data/spec/fixtures/ssl/127.0.0.1.pem +31 -52
  416. data/spec/fixtures/ssl/bad-basic-constraints.pem +35 -57
  417. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +35 -57
  418. data/spec/fixtures/ssl/ca.pem +35 -57
  419. data/spec/fixtures/ssl/crl.pem +18 -28
  420. data/spec/fixtures/ssl/ec-key.pem +11 -11
  421. data/spec/fixtures/ssl/ec.pem +24 -33
  422. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  423. data/spec/fixtures/ssl/encrypted-key.pem +58 -108
  424. data/spec/fixtures/ssl/intermediate-agent-crl.pem +19 -28
  425. data/spec/fixtures/ssl/intermediate-agent.pem +36 -57
  426. data/spec/fixtures/ssl/intermediate-crl.pem +21 -31
  427. data/spec/fixtures/ssl/intermediate.pem +36 -57
  428. data/spec/fixtures/ssl/pluto-key.pem +57 -107
  429. data/spec/fixtures/ssl/pluto.pem +30 -52
  430. data/spec/fixtures/ssl/request-key.pem +57 -107
  431. data/spec/fixtures/ssl/request.pem +26 -47
  432. data/spec/fixtures/ssl/revoked-key.pem +57 -107
  433. data/spec/fixtures/ssl/revoked.pem +30 -52
  434. data/spec/fixtures/ssl/signed-key.pem +57 -107
  435. data/spec/fixtures/ssl/signed.pem +30 -52
  436. data/spec/fixtures/ssl/tampered-cert.pem +30 -52
  437. data/spec/fixtures/ssl/tampered-csr.pem +26 -47
  438. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +57 -107
  439. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +29 -50
  440. data/spec/fixtures/ssl/unknown-ca-key.pem +57 -107
  441. data/spec/fixtures/ssl/unknown-ca.pem +33 -55
  442. data/spec/fixtures/unit/forge/bacula.json +1 -1
  443. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  444. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
  445. data/spec/integration/application/agent_spec.rb +50 -406
  446. data/spec/integration/application/apply_spec.rb +1 -20
  447. data/spec/integration/application/filebucket_spec.rb +16 -32
  448. data/spec/integration/application/help_spec.rb +2 -0
  449. data/spec/integration/application/lookup_spec.rb +50 -81
  450. data/spec/integration/application/module_spec.rb +0 -21
  451. data/spec/integration/application/plugin_spec.rb +24 -2
  452. data/spec/integration/configurer_spec.rb +2 -18
  453. data/spec/integration/defaults_spec.rb +14 -3
  454. data/spec/integration/environments/settings_interpolation_spec.rb +4 -0
  455. data/spec/integration/http/client_spec.rb +4 -63
  456. data/spec/integration/indirector/direct_file_server_spec.rb +3 -1
  457. data/spec/integration/indirector/facts/facter_spec.rb +39 -93
  458. data/spec/integration/network/http_pool_spec.rb +3 -21
  459. data/spec/integration/parser/catalog_spec.rb +0 -38
  460. data/spec/integration/parser/node_spec.rb +0 -9
  461. data/spec/integration/parser/pcore_resource_spec.rb +0 -47
  462. data/spec/integration/resource/type_collection_spec.rb +6 -2
  463. data/spec/integration/transaction/report_spec.rb +1 -1
  464. data/spec/integration/transaction_spec.rb +9 -4
  465. data/spec/integration/type/exec_spec.rb +45 -70
  466. data/spec/integration/type/file_spec.rb +7 -6
  467. data/spec/integration/type/package_spec.rb +6 -6
  468. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  469. data/spec/integration/util/windows/adsi_spec.rb +1 -21
  470. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  471. data/spec/integration/util/windows/principal_spec.rb +0 -21
  472. data/spec/integration/util/windows/process_spec.rb +9 -1
  473. data/spec/integration/util/windows/registry_spec.rb +10 -6
  474. data/spec/integration/util/windows/security_spec.rb +1 -1
  475. data/spec/lib/matchers/include.rb +27 -0
  476. data/spec/lib/matchers/include_spec.rb +32 -0
  477. data/spec/lib/puppet/test_ca.rb +2 -7
  478. data/spec/lib/puppet_spec/https.rb +1 -1
  479. data/spec/lib/puppet_spec/modules.rb +2 -13
  480. data/spec/lib/puppet_spec/puppetserver.rb +3 -55
  481. data/spec/lib/puppet_spec/settings.rb +1 -1
  482. data/spec/shared_behaviours/documentation_on_faces.rb +2 -0
  483. data/spec/spec_helper.rb +17 -13
  484. data/spec/unit/agent_spec.rb +8 -38
  485. data/spec/unit/application/agent_spec.rb +19 -33
  486. data/spec/unit/application/apply_spec.rb +56 -76
  487. data/spec/unit/application/facts_spec.rb +12 -456
  488. data/spec/unit/application/filebucket_spec.rb +43 -39
  489. data/spec/unit/application/lookup_spec.rb +10 -131
  490. data/spec/unit/application/resource_spec.rb +0 -29
  491. data/spec/unit/application/ssl_spec.rb +2 -25
  492. data/spec/unit/application_spec.rb +9 -51
  493. data/spec/unit/certificate_factory_spec.rb +1 -1
  494. data/spec/unit/configurer/downloader_spec.rb +6 -8
  495. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  496. data/spec/unit/configurer_spec.rb +68 -327
  497. data/spec/unit/confine/feature_spec.rb +1 -1
  498. data/spec/unit/confine_spec.rb +2 -8
  499. data/spec/unit/context/trusted_information_spec.rb +2 -6
  500. data/spec/unit/daemon_spec.rb +11 -2
  501. data/spec/unit/defaults_spec.rb +68 -55
  502. data/spec/unit/environments_spec.rb +68 -408
  503. data/spec/unit/face/generate_spec.rb +0 -64
  504. data/spec/unit/face/node_spec.rb +11 -0
  505. data/spec/unit/face/plugin_spec.rb +73 -33
  506. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  507. data/spec/unit/file_bucket/file_spec.rb +1 -1
  508. data/spec/unit/file_serving/configuration/parser_spec.rb +15 -41
  509. data/spec/unit/file_serving/configuration_spec.rb +10 -26
  510. data/spec/unit/file_serving/fileset_spec.rb +0 -60
  511. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  512. data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
  513. data/spec/unit/file_system_spec.rb +4 -56
  514. data/spec/unit/forge/module_release_spec.rb +10 -5
  515. data/spec/unit/functions/assert_type_spec.rb +1 -1
  516. data/spec/unit/functions/camelcase_spec.rb +1 -1
  517. data/spec/unit/functions/capitalize_spec.rb +1 -1
  518. data/spec/unit/functions/downcase_spec.rb +1 -1
  519. data/spec/unit/functions/empty_spec.rb +0 -10
  520. data/spec/unit/functions/logging_spec.rb +0 -1
  521. data/spec/unit/functions/lookup_spec.rb +0 -64
  522. data/spec/unit/functions/unwrap_spec.rb +0 -8
  523. data/spec/unit/functions/upcase_spec.rb +1 -1
  524. data/spec/unit/functions/versioncmp_spec.rb +4 -40
  525. data/spec/unit/functions4_spec.rb +2 -2
  526. data/spec/unit/gettext/config_spec.rb +0 -12
  527. data/spec/unit/http/client_spec.rb +8 -84
  528. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  529. data/spec/unit/http/external_client_spec.rb +4 -4
  530. data/spec/unit/{network/http → http}/factory_spec.rb +5 -30
  531. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  532. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  533. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  534. data/spec/unit/http/resolver_spec.rb +13 -13
  535. data/spec/unit/http/service/compiler_spec.rb +0 -193
  536. data/spec/unit/http/service/file_server_spec.rb +3 -3
  537. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  538. data/spec/unit/http/service_spec.rb +0 -1
  539. data/spec/unit/http/session_spec.rb +16 -14
  540. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  541. data/spec/unit/indirector/catalog/compiler_spec.rb +10 -101
  542. data/spec/unit/indirector/catalog/rest_spec.rb +0 -8
  543. data/spec/unit/indirector/face_spec.rb +1 -0
  544. data/spec/unit/indirector/facts/facter_spec.rb +3 -0
  545. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  546. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
  547. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  548. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  549. data/spec/unit/indirector/file_server_spec.rb +1 -15
  550. data/spec/unit/indirector/indirection_spec.rb +15 -18
  551. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  552. data/spec/unit/indirector/request_spec.rb +0 -264
  553. data/spec/unit/indirector/resource/ral_spec.rb +75 -40
  554. data/spec/unit/indirector/rest_spec.rb +98 -752
  555. data/spec/unit/indirector/store_configs_spec.rb +7 -0
  556. data/spec/unit/indirector_spec.rb +2 -2
  557. data/spec/unit/interface/action_spec.rb +9 -0
  558. data/spec/unit/module_spec.rb +1 -15
  559. data/spec/unit/module_tool/applications/installer_spec.rb +0 -105
  560. data/spec/unit/network/authconfig_spec.rb +2 -129
  561. data/spec/unit/network/authorization_spec.rb +2 -55
  562. data/spec/unit/network/formats_spec.rb +4 -51
  563. data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
  564. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  565. data/spec/unit/network/http/api_spec.rb +10 -0
  566. data/spec/unit/network/http/connection_spec.rb +19 -41
  567. data/spec/unit/network/http/handler_spec.rb +0 -1
  568. data/spec/unit/network/http_pool_spec.rb +0 -4
  569. data/spec/unit/node/environment_spec.rb +33 -21
  570. data/spec/unit/node_spec.rb +2 -60
  571. data/spec/unit/parser/compiler_spec.rb +19 -3
  572. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  573. data/spec/unit/parser/functions/fqdn_rand_spec.rb +1 -15
  574. data/spec/unit/parser/resource_spec.rb +8 -14
  575. data/spec/unit/parser/templatewrapper_spec.rb +5 -16
  576. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  577. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  578. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  579. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  580. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  581. data/spec/unit/pops/parser/parse_containers_spec.rb +13 -2
  582. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  583. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  584. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  585. data/spec/unit/pops/serialization/to_stringified_spec.rb +0 -5
  586. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +0 -18
  587. data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -18
  588. data/spec/unit/pops/types/type_calculator_spec.rb +6 -12
  589. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  590. data/spec/unit/pops/validator/validator_spec.rb +61 -51
  591. data/spec/unit/pops/visitor_spec.rb +1 -1
  592. data/spec/unit/property_spec.rb +0 -1
  593. data/spec/unit/provider/group/groupadd_spec.rb +2 -5
  594. data/spec/unit/provider/nameservice_spec.rb +64 -122
  595. data/spec/unit/provider/package/apt_spec.rb +23 -28
  596. data/spec/unit/provider/package/aptitude_spec.rb +1 -1
  597. data/spec/unit/provider/package/base_spec.rb +5 -6
  598. data/spec/unit/provider/package/dnfmodule_spec.rb +1 -10
  599. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  600. data/spec/unit/provider/package/gem_spec.rb +33 -1
  601. data/spec/unit/provider/package/nim_spec.rb +0 -42
  602. data/spec/unit/provider/package/pacman_spec.rb +12 -18
  603. data/spec/unit/provider/package/pip2_spec.rb +1 -1
  604. data/spec/unit/provider/package/pip3_spec.rb +1 -1
  605. data/spec/unit/provider/package/pip_spec.rb +12 -44
  606. data/spec/unit/provider/package/pkg_spec.rb +4 -29
  607. data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
  608. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -3
  609. data/spec/unit/provider/package/puppetserver_gem_spec.rb +3 -3
  610. data/spec/unit/provider/package/windows/exe_package_spec.rb +0 -17
  611. data/spec/unit/provider/parsedfile_spec.rb +0 -10
  612. data/spec/unit/provider/service/gentoo_spec.rb +5 -6
  613. data/spec/unit/provider/service/init_spec.rb +9 -16
  614. data/spec/unit/provider/service/launchd_spec.rb +0 -11
  615. data/spec/unit/provider/service/openwrt_spec.rb +29 -23
  616. data/spec/unit/provider/service/redhat_spec.rb +2 -3
  617. data/spec/unit/provider/service/smf_spec.rb +401 -165
  618. data/spec/unit/provider/service/systemd_spec.rb +9 -54
  619. data/spec/unit/provider/service/windows_spec.rb +0 -203
  620. data/spec/unit/provider/user/aix_spec.rb +0 -105
  621. data/spec/unit/provider/user/directoryservice_spec.rb +36 -68
  622. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  623. data/spec/unit/provider/user/pw_spec.rb +0 -2
  624. data/spec/unit/provider/user/useradd_spec.rb +5 -114
  625. data/spec/unit/provider_spec.rb +12 -22
  626. data/spec/unit/puppet_spec.rb +4 -12
  627. data/spec/unit/resource/catalog_spec.rb +2 -15
  628. data/spec/unit/resource/type_collection_spec.rb +2 -22
  629. data/spec/unit/resource/type_spec.rb +1 -1
  630. data/spec/unit/resource_spec.rb +12 -125
  631. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  632. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  633. data/spec/unit/settings/port_setting_spec.rb +31 -0
  634. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  635. data/spec/unit/settings_spec.rb +79 -110
  636. data/spec/unit/ssl/base_spec.rb +37 -3
  637. data/spec/unit/ssl/certificate_request_spec.rb +21 -45
  638. data/spec/unit/ssl/certificate_spec.rb +2 -11
  639. data/spec/unit/ssl/ssl_provider_spec.rb +3 -80
  640. data/spec/unit/ssl/state_machine_spec.rb +5 -21
  641. data/spec/unit/ssl/verifier_spec.rb +0 -21
  642. data/spec/unit/transaction/additional_resource_generator_spec.rb +9 -3
  643. data/spec/unit/transaction/event_manager_spec.rb +11 -14
  644. data/spec/unit/transaction/persistence_spec.rb +0 -51
  645. data/spec/unit/transaction/report_spec.rb +0 -2
  646. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  647. data/spec/unit/transaction_spec.rb +55 -96
  648. data/spec/unit/type/exec_spec.rb +29 -76
  649. data/spec/unit/type/file/checksum_spec.rb +6 -6
  650. data/spec/unit/type/file/content_spec.rb +2 -1
  651. data/spec/unit/type/file/ensure_spec.rb +1 -1
  652. data/spec/unit/type/file/mode_spec.rb +1 -1
  653. data/spec/unit/type/file/selinux_spec.rb +5 -3
  654. data/spec/unit/type/file/source_spec.rb +4 -5
  655. data/spec/unit/type/file_spec.rb +18 -6
  656. data/spec/unit/type/group_spec.rb +6 -13
  657. data/spec/unit/type/package_spec.rb +1 -1
  658. data/spec/unit/type/resources_spec.rb +7 -7
  659. data/spec/unit/type/service_spec.rb +189 -87
  660. data/spec/unit/type/tidy_spec.rb +8 -24
  661. data/spec/unit/type_spec.rb +24 -4
  662. data/spec/unit/util/at_fork_spec.rb +2 -2
  663. data/spec/unit/util/autoload_spec.rb +1 -5
  664. data/spec/unit/util/backups_spec.rb +2 -3
  665. data/spec/unit/util/execution_spec.rb +11 -44
  666. data/spec/unit/util/inifile_spec.rb +14 -6
  667. data/spec/unit/util/log_spec.rb +7 -8
  668. data/spec/unit/util/logging_spec.rb +3 -5
  669. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  670. data/spec/unit/util/posix_spec.rb +15 -363
  671. data/spec/unit/util/run_mode_spec.rb +21 -121
  672. data/spec/unit/util/selinux_spec.rb +68 -163
  673. data/spec/unit/util/storage_spec.rb +1 -3
  674. data/spec/unit/util/suidmanager_spec.rb +41 -44
  675. data/spec/unit/util/windows/sid_spec.rb +0 -41
  676. data/spec/unit/util/windows/string_spec.rb +1 -3
  677. data/spec/unit/util/yaml_spec.rb +13 -92
  678. data/spec/unit/util_spec.rb +6 -31
  679. data/tasks/generate_cert_fixtures.rake +7 -17
  680. data/tasks/parallel.rake +3 -3
  681. metadata +138 -239
  682. data/conf/auth.conf +0 -150
  683. data/ext/README.md +0 -13
  684. data/lib/puppet/application/cert.rb +0 -76
  685. data/lib/puppet/application/key.rb +0 -4
  686. data/lib/puppet/application/man.rb +0 -4
  687. data/lib/puppet/application/status.rb +0 -4
  688. data/lib/puppet/face/key.rb +0 -16
  689. data/lib/puppet/face/man.rb +0 -145
  690. data/lib/puppet/face/module/build.rb +0 -14
  691. data/lib/puppet/face/module/generate.rb +0 -14
  692. data/lib/puppet/face/module/search.rb +0 -103
  693. data/lib/puppet/face/status.rb +0 -51
  694. data/lib/puppet/facter_impl.rb +0 -96
  695. data/lib/puppet/ffi/posix/constants.rb +0 -14
  696. data/lib/puppet/ffi/posix/functions.rb +0 -24
  697. data/lib/puppet/ffi/posix.rb +0 -10
  698. data/lib/puppet/file_serving/mount/scripts.rb +0 -24
  699. data/lib/puppet/indirector/certificate/file.rb +0 -9
  700. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  701. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  702. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  703. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  704. data/lib/puppet/indirector/file_content/http.rb +0 -22
  705. data/lib/puppet/indirector/key/file.rb +0 -46
  706. data/lib/puppet/indirector/key/memory.rb +0 -7
  707. data/lib/puppet/indirector/ssl_file.rb +0 -162
  708. data/lib/puppet/indirector/status/local.rb +0 -12
  709. data/lib/puppet/indirector/status/rest.rb +0 -27
  710. data/lib/puppet/indirector/status.rb +0 -3
  711. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  712. data/lib/puppet/network/auth_config_parser.rb +0 -90
  713. data/lib/puppet/network/authstore.rb +0 -283
  714. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  715. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  716. data/lib/puppet/network/http/base_pool.rb +0 -36
  717. data/lib/puppet/network/http/compression.rb +0 -127
  718. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  719. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  720. data/lib/puppet/network/rest_controller.rb +0 -2
  721. data/lib/puppet/network/rights.rb +0 -210
  722. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  723. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  724. data/lib/puppet/parser/environment_compiler.rb +0 -202
  725. data/lib/puppet/pops/types/enumeration.rb +0 -16
  726. data/lib/puppet/resource/capability_finder.rb +0 -154
  727. data/lib/puppet/rest/errors.rb +0 -15
  728. data/lib/puppet/rest/response.rb +0 -35
  729. data/lib/puppet/rest/route.rb +0 -85
  730. data/lib/puppet/rest/routes.rb +0 -135
  731. data/lib/puppet/settings/alias_setting.rb +0 -37
  732. data/lib/puppet/ssl/host.rb +0 -505
  733. data/lib/puppet/ssl/key.rb +0 -61
  734. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  735. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  736. data/lib/puppet/ssl/validator.rb +0 -61
  737. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  738. data/lib/puppet/status.rb +0 -40
  739. data/lib/puppet/util/connection.rb +0 -88
  740. data/lib/puppet/util/fact_dif.rb +0 -81
  741. data/lib/puppet/util/ssl.rb +0 -83
  742. data/lib/puppet/util/windows/api_types.rb +0 -309
  743. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  744. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  745. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  746. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  747. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  748. data/lib/puppet/vendor/pathspec/README.md +0 -53
  749. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  750. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  751. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  752. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  753. data/man/man8/puppet-key.8 +0 -126
  754. data/man/man8/puppet-man.8 +0 -76
  755. data/man/man8/puppet-status.8 +0 -108
  756. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -92
  757. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +0 -3
  758. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +0 -4
  759. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +0 -3
  760. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +0 -8
  761. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +0 -25
  762. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +0 -19
  763. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +0 -20
  764. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +0 -8
  765. data/spec/fixtures/ssl/oid-key.pem +0 -117
  766. data/spec/fixtures/ssl/oid.pem +0 -69
  767. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +0 -5
  768. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +0 -9
  769. data/spec/integration/application/resource_spec.rb +0 -68
  770. data/spec/integration/application/ssl_spec.rb +0 -20
  771. data/spec/integration/l10n/compiler_spec.rb +0 -37
  772. data/spec/integration/network/authconfig_spec.rb +0 -256
  773. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  774. data/spec/shared_contexts/l10n.rb +0 -32
  775. data/spec/unit/application/man_spec.rb +0 -52
  776. data/spec/unit/capability_spec.rb +0 -414
  777. data/spec/unit/concurrent/thread_local_singleton_spec.rb +0 -39
  778. data/spec/unit/face/key_spec.rb +0 -9
  779. data/spec/unit/face/module/search_spec.rb +0 -231
  780. data/spec/unit/face/status_spec.rb +0 -9
  781. data/spec/unit/facter_impl_spec.rb +0 -31
  782. data/spec/unit/file_serving/mount/scripts_spec.rb +0 -69
  783. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  784. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  785. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  786. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  787. data/spec/unit/indirector/key/file_spec.rb +0 -78
  788. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  789. data/spec/unit/indirector/status/local_spec.rb +0 -10
  790. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  791. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  792. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  793. data/spec/unit/network/authstore_spec.rb +0 -407
  794. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  795. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  796. data/spec/unit/network/http/compression_spec.rb +0 -240
  797. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  798. data/spec/unit/network/http_spec.rb +0 -9
  799. data/spec/unit/network/rights_spec.rb +0 -439
  800. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  801. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
  802. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  803. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  804. data/spec/unit/rest/route_spec.rb +0 -132
  805. data/spec/unit/ssl/host_spec.rb +0 -645
  806. data/spec/unit/ssl/key_spec.rb +0 -173
  807. data/spec/unit/ssl/validator_spec.rb +0 -278
  808. data/spec/unit/status_spec.rb +0 -45
  809. data/spec/unit/util/json_spec.rb +0 -126
  810. data/spec/unit/util/ssl_spec.rb +0 -91
  811. data/spec/unit/util/windows_spec.rb +0 -23
data/spec/spec_helper.rb CHANGED
@@ -68,14 +68,26 @@ VCR.turn_off!
68
68
  RSpec.configure do |config|
69
69
  include PuppetSpec::Fixtures
70
70
 
71
- exclude_filters = {}
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}
72
81
  exclude_filters[:benchmark] = true unless ENV['BENCHMARK']
73
82
  config.filter_run_excluding exclude_filters
74
83
 
75
84
  config.filter_run_when_matching :focus
76
85
 
77
86
  config.mock_with :rspec do |mocks|
78
- mocks.verify_partial_doubles = true
87
+ # We really should have this on, but it breaks a _lot_ of tests. We'll
88
+ # need to go through and fix those tests first before it can be enabled
89
+ # for real.
90
+ mocks.verify_partial_doubles = false
79
91
  end
80
92
 
81
93
  tmpdir = Puppet::FileSystem.expand_path(Dir.mktmpdir("rspecrun"))
@@ -136,6 +148,7 @@ RSpec.configure do |config|
136
148
 
137
149
  base = PuppetSpec::Files.tmpdir('tmp_settings')
138
150
  Puppet[:vardir] = File.join(base, 'var')
151
+ Puppet[:publicdir] = File.join(base, 'public')
139
152
  Puppet[:confdir] = File.join(base, 'etc')
140
153
  Puppet[:codedir] = File.join(base, 'code')
141
154
  Puppet[:logdir] = "$vardir/log"
@@ -143,6 +156,7 @@ RSpec.configure do |config|
143
156
  Puppet[:hiera_config] = File.join(base, 'hiera')
144
157
 
145
158
  FileUtils.mkdir_p Puppet[:statedir]
159
+ FileUtils.mkdir_p Puppet[:publicdir]
146
160
 
147
161
  Puppet::Test::TestHelper.before_each_test()
148
162
  end
@@ -151,20 +165,10 @@ RSpec.configure do |config|
151
165
  PUPPET_FACTER_2_GCE_URL = %r{^http://metadata/computeMetadata/v1(beta1)?}.freeze
152
166
  PUPPET_FACTER_3_GCE_URL = "http://metadata.google.internal/computeMetadata/v1/?recursive=true&alt=json".freeze
153
167
 
154
- # Facter azure metadata endpoint
155
- PUPPET_FACTER_AZ_URL = "http://169.254.169.254/metadata/instance?api-version=2020-09-01"
156
-
157
- # Facter EC2 endpoint
158
- PUPPET_FACTER_EC2_METADATA_URL = 'http://169.254.169.254/latest/meta-data/'
159
- PUPPET_FACTER_EC2_USERDATA_URL = 'http://169.254.169.254/latest/user-data/'
160
-
161
168
  config.around :each do |example|
162
- # Ignore requests from Facter to external services
169
+ # Ignore requests from Facter GCE fact in Travis
163
170
  stub_request(:get, PUPPET_FACTER_2_GCE_URL)
164
171
  stub_request(:get, PUPPET_FACTER_3_GCE_URL)
165
- stub_request(:get, PUPPET_FACTER_AZ_URL)
166
- stub_request(:get, PUPPET_FACTER_EC2_METADATA_URL)
167
- stub_request(:get, PUPPET_FACTER_EC2_USERDATA_URL)
168
172
 
169
173
  # Enable VCR if the example is tagged with `:vcr` metadata.
170
174
  if example.metadata[:vcr]
@@ -3,13 +3,9 @@ require 'puppet/agent'
3
3
  require 'puppet/configurer'
4
4
 
5
5
  class AgentTestClient
6
- def initialize(transaction_uuid = nil, job_id = nil)
7
- end
8
-
9
- def run(client_args)
6
+ def run
10
7
  # no-op
11
8
  end
12
-
13
9
  def stop
14
10
  # no-op
15
11
  end
@@ -24,8 +20,6 @@ end
24
20
 
25
21
  describe Puppet::Agent do
26
22
  before do
27
- allow(Puppet::Status.indirection).to receive(:find).and_return(Puppet::Status.new("version" => Puppet.version))
28
-
29
23
  @agent = Puppet::Agent.new(AgentTestClient, false)
30
24
 
31
25
  # make Puppet::Application safe for stubbing; restore in an :after block; silence warnings for this.
@@ -38,10 +32,6 @@ describe Puppet::Agent do
38
32
  end
39
33
  end
40
34
  end
41
-
42
- ssl_context = Puppet::SSL::SSLContext.new
43
- machine = instance_double("Puppet::SSL::StateMachine", ensure_client_certificate: ssl_context)
44
- allow(Puppet::SSL::StateMachine).to receive(:new).and_return(machine)
45
35
  end
46
36
 
47
37
  after do
@@ -59,10 +49,11 @@ describe Puppet::Agent do
59
49
 
60
50
  it "should create an instance of its client class and run it when asked to run" do
61
51
  client = double('client')
62
- allow(AgentTestClient).to receive(:new).with(nil, nil).and_return(client)
52
+ expect(AgentTestClient).to receive(:new).and_return(client)
63
53
 
64
- allow(@agent).to receive(:disabled?).and_return(false)
65
54
  expect(client).to receive(:run)
55
+
56
+ allow(@agent).to receive(:disabled?).and_return(false)
66
57
  @agent.run
67
58
  end
68
59
 
@@ -99,12 +90,11 @@ describe Puppet::Agent do
99
90
 
100
91
  describe "when being run" do
101
92
  before do
93
+ allow(AgentTestClient).to receive(:lockfile_path).and_return("/my/lock")
102
94
  allow(@agent).to receive(:disabled?).and_return(false)
103
95
  end
104
96
 
105
97
  it "should splay" do
106
- Puppet[:splay] = true
107
-
108
98
  expect(@agent).to receive(:splay)
109
99
 
110
100
  @agent.run
@@ -187,26 +177,6 @@ describe Puppet::Agent do
187
177
  expect(@agent.run).to eq(:result)
188
178
  end
189
179
 
190
- it "should check if it's disabled after splaying and log a message" do
191
- Puppet[:splay] = true
192
- Puppet[:splaylimit] = '5s'
193
- Puppet[:onetime] = true
194
-
195
- expect(@agent).to receive(:disabled?).and_return(false, true)
196
-
197
- allow(Puppet).to receive(:notice).and_call_original
198
- expect(Puppet).to receive(:notice).with(/Skipping run of .*; administratively disabled.*/)
199
- @agent.run
200
- end
201
-
202
- it "should check if it's disabled after acquiring the lock and log a message" do
203
- expect(@agent).to receive(:disabled?).and_return(false, true)
204
-
205
- allow(Puppet).to receive(:notice).and_call_original
206
- expect(Puppet).to receive(:notice).with(/Skipping run of .*; administratively disabled.*/)
207
- @agent.run
208
- end
209
-
210
180
  describe "and a puppet agent is already running" do
211
181
  before(:each) do
212
182
  allow_any_instance_of(Object).to receive(:sleep)
@@ -216,14 +186,14 @@ describe Puppet::Agent do
216
186
  allow(lockfile).to receive(:lock).and_return(false)
217
187
  end
218
188
 
219
- it "should notify that a run is already in progress" do
189
+ it "should notify that a run is already in progres" do
220
190
  client = AgentTestClient.new
221
191
  expect(AgentTestClient).to receive(:new).and_return(client)
222
192
  expect(Puppet).to receive(:notice).with(/Run of .* already in progress; skipping .* exists/)
223
193
  @agent.run
224
194
  end
225
195
 
226
- it "should inform that a run is already in progress and try to run every X seconds if waitforlock is used" do
196
+ it "should inform that a run is already in progres and try to run every X seconds if waitforlock is used" do
227
197
  # so the locked file exists
228
198
  allow(File).to receive(:file?).and_return(true)
229
199
  # so we don't have to wait again for the run to exit (default maxwaitforcert is 60)
@@ -252,7 +222,7 @@ describe Puppet::Agent do
252
222
  @agent.run
253
223
  end
254
224
  end
255
-
225
+
256
226
  describe "when should_fork is true", :if => Puppet.features.posix? && RUBY_PLATFORM != 'java' do
257
227
  before do
258
228
  @agent = Puppet::Agent.new(AgentTestClient, true)
@@ -4,11 +4,6 @@ require 'puppet/agent'
4
4
  require 'puppet/application/agent'
5
5
  require 'puppet/daemon'
6
6
 
7
- class TestAgentClientClass
8
- def initialize(transaction_uuid = nil, job_id = nil); end
9
- def run(options = {}); end
10
- end
11
-
12
7
  describe Puppet::Application::Agent do
13
8
  include PuppetSpec::Files
14
9
 
@@ -17,20 +12,13 @@ describe Puppet::Application::Agent do
17
12
  before :each do
18
13
  @puppetd = Puppet::Application[:agent]
19
14
 
20
- @client = TestAgentClientClass.new
21
- allow(TestAgentClientClass).to receive(:new).and_return(@client)
22
-
23
- @agent = Puppet::Agent.new(TestAgentClientClass, false)
15
+ @agent = double('agent')
24
16
  allow(Puppet::Agent).to receive(:new).and_return(@agent)
25
17
 
26
- Puppet[:pidfile] = tmpfile('pidfile')
27
- @daemon = Puppet::Daemon.new(@agent, Puppet::Util::Pidlock.new(Puppet[:pidfile]))
18
+ @daemon = Puppet::Daemon.new(@agent, nil)
28
19
  allow(@daemon).to receive(:daemonize)
20
+ allow(@daemon).to receive(:start)
29
21
  allow(@daemon).to receive(:stop)
30
- # simulate one run so we don't infinite looptwo runs of the agent, then return so we don't infinite loop
31
- allow(@daemon).to receive(:run_event_loop) do
32
- @agent.run(splay: false)
33
- end
34
22
  allow(Puppet::Daemon).to receive(:new).and_return(@daemon)
35
23
  Puppet[:daemonize] = false
36
24
 
@@ -104,6 +92,10 @@ describe Puppet::Application::Agent do
104
92
  end
105
93
 
106
94
  describe "when handling options" do
95
+ before do
96
+ allow(@puppetd.command_line).to receive(:args).and_return([])
97
+ end
98
+
107
99
  [:enable, :debug, :fqdn, :test, :verbose, :digest].each do |option|
108
100
  it "should declare handle_#{option} method" do
109
101
  expect(@puppetd).to respond_to("handle_#{option}".to_sym)
@@ -135,34 +127,32 @@ describe Puppet::Application::Agent do
135
127
  end
136
128
 
137
129
  it "should set waitforcert to 0 with --onetime and if --waitforcert wasn't given" do
138
- allow(@client).to receive(:run).and_return(2)
130
+ allow(@agent).to receive(:run).and_return(2)
139
131
  Puppet[:onetime] = true
140
132
 
141
- expect(Puppet::SSL::StateMachine).to receive(:new).with(hash_including(waitforcert: 0)).and_return(machine)
133
+ expect(Puppet::SSL::StateMachine).to receive(:new).with(waitforcert: 0).and_return(machine)
142
134
 
143
135
  expect { execute_agent }.to exit_with 0
144
136
  end
145
137
 
146
138
  it "should use supplied waitforcert when --onetime is specified" do
147
- allow(@client).to receive(:run).and_return(2)
139
+ allow(@agent).to receive(:run).and_return(2)
148
140
  Puppet[:onetime] = true
149
141
  @puppetd.handle_waitforcert(60)
150
142
 
151
- expect(Puppet::SSL::StateMachine).to receive(:new).with(hash_including(waitforcert: 60)).and_return(machine)
143
+ expect(Puppet::SSL::StateMachine).to receive(:new).with(waitforcert: 60).and_return(machine)
152
144
 
153
145
  expect { execute_agent }.to exit_with 0
154
146
  end
155
147
 
156
148
  it "should use a default value for waitforcert when --onetime and --waitforcert are not specified" do
157
- allow(@client).to receive(:run).and_return(2)
158
-
159
- expect(Puppet::SSL::StateMachine).to receive(:new).with(hash_including(waitforcert: 120)).and_return(machine)
149
+ expect(Puppet::SSL::StateMachine).to receive(:new).with(waitforcert: 120).and_return(machine)
160
150
 
161
151
  execute_agent
162
152
  end
163
153
 
164
154
  it "should register ssl OIDs" do
165
- expect(Puppet::SSL::StateMachine).to receive(:new).with(hash_including(waitforcert: 120)).and_return(machine)
155
+ expect(Puppet::SSL::StateMachine).to receive(:new).with(waitforcert: 120).and_return(double(ensure_client_certificate: nil))
166
156
  expect(Puppet::SSL::Oids).to receive(:register_puppet_oids)
167
157
 
168
158
  execute_agent
@@ -171,7 +161,7 @@ describe Puppet::Application::Agent do
171
161
  it "should use the waitforcert setting when checking for a signed certificate" do
172
162
  Puppet[:waitforcert] = 10
173
163
 
174
- expect(Puppet::SSL::StateMachine).to receive(:new).with(hash_including(waitforcert: 10)).and_return(machine)
164
+ expect(Puppet::SSL::StateMachine).to receive(:new).with(waitforcert: 10).and_return(machine)
175
165
 
176
166
  execute_agent
177
167
  end
@@ -212,6 +202,7 @@ describe Puppet::Application::Agent do
212
202
  allow(Puppet::Resource::Catalog.indirection).to receive(:terminus_class=)
213
203
  allow(Puppet::Resource::Catalog.indirection).to receive(:cache_class=)
214
204
  allow(Puppet::Node::Facts.indirection).to receive(:terminus_class=)
205
+ allow(Puppet).to receive(:settraps)
215
206
  end
216
207
 
217
208
  it "should not run with extra arguments" do
@@ -423,9 +414,9 @@ describe Puppet::Application::Agent do
423
414
  end
424
415
 
425
416
  it "should wait for a certificate" do
426
- Puppet[:waitforcert] = 123
417
+ @puppetd.options[:waitforcert] = 123
427
418
 
428
- expect(Puppet::SSL::StateMachine).to receive(:new).with(hash_including(waitforcert: 123)).and_return(machine)
419
+ expect(Puppet::SSL::StateMachine).to receive(:new).with(waitforcert: 123).and_return(machine)
429
420
 
430
421
  execute_agent
431
422
  end
@@ -556,16 +547,11 @@ describe Puppet::Application::Agent do
556
547
  @puppetd.options[:digest] = :MD5
557
548
  end
558
549
 
559
- def expected_fingerprint(name, x509)
560
- digest = OpenSSL::Digest.new(name).hexdigest(x509.to_der)
561
- digest.scan(/../).join(':').upcase
562
- end
563
-
564
550
  it "should fingerprint the certificate if it exists" do
565
551
  cert = cert_fixture('signed.pem')
566
552
  allow_any_instance_of(Puppet::X509::CertProvider).to receive(:load_client_cert).and_return(cert)
567
553
 
568
- expect(@puppetd).to receive(:puts).with("(MD5) #{expected_fingerprint('md5', cert)}")
554
+ expect(@puppetd).to receive(:puts).with('(MD5) E2:BA:9A:EF:20:A8:7D:10:8D:82:9A:61:5D:FD:5B:33')
569
555
 
570
556
  @puppetd.fingerprint
571
557
  end
@@ -575,7 +561,7 @@ describe Puppet::Application::Agent do
575
561
  allow_any_instance_of(Puppet::X509::CertProvider).to receive(:load_client_cert).and_return(nil)
576
562
  allow_any_instance_of(Puppet::X509::CertProvider).to receive(:load_request).and_return(request)
577
563
 
578
- expect(@puppetd).to receive(:puts).with("(MD5) #{expected_fingerprint('md5', request)}")
564
+ expect(@puppetd).to receive(:puts).with('(MD5) B8:4C:FB:31:AE:17:86:E3:AD:53:97:CA:F6:3C:4A:CB')
579
565
 
580
566
  @puppetd.fingerprint
581
567
  end
@@ -10,22 +10,21 @@ 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)
13
14
  Puppet[:reports] = "none"
14
15
  end
15
16
 
16
- [:debug,:loadclasses,:test,:verbose,:use_nodes,:detailed_exitcodes,:catalog].each do |option|
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
+
17
22
  it "should store argument value when calling handle_#{option}" do
18
23
  expect(@apply.options).to receive(:[]=).with(option, 'arg')
19
24
  @apply.send("handle_#{option}".to_sym, 'arg')
20
25
  end
21
26
  end
22
27
 
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
-
29
28
  it "should set the code to the provided code when :execute is used" do
30
29
  expect(@apply.options).to receive(:[]=).with(:code, 'arg')
31
30
  @apply.send("handle_execute".to_sym, 'arg')
@@ -54,18 +53,23 @@ describe Puppet::Application::Apply do
54
53
  end
55
54
 
56
55
  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
+
57
63
  it "should set options[:verbose] to true" do
58
64
  @apply.setup_test
59
65
 
60
66
  expect(@apply.options[:verbose]).to eq(true)
61
67
  end
62
-
63
68
  it "should set options[:show_diff] to true" do
64
69
  Puppet.settings.override_default(:show_diff, false)
65
70
  @apply.setup_test
66
71
  expect(Puppet[:show_diff]).to eq(true)
67
72
  end
68
-
69
73
  it "should set options[:detailed_exitcodes] to true" do
70
74
  @apply.setup_test
71
75
 
@@ -151,7 +155,7 @@ describe Puppet::Application::Apply do
151
155
  end
152
156
 
153
157
  describe "when executing" do
154
- it "should dispatch to 'apply' if it was called with a catalog" do
158
+ it "should dispatch to 'apply' if it was called with 'apply'" do
155
159
  @apply.options[:catalog] = "foo"
156
160
 
157
161
  expect(@apply).to receive(:apply)
@@ -209,52 +213,47 @@ describe Puppet::Application::Apply do
209
213
  @apply.options[:code] = "code to run"
210
214
  expect(Puppet).to receive(:[]=).with(:code,"code to run")
211
215
 
212
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
216
+ expect { @apply.main }.to exit_with 0
213
217
  end
214
218
 
215
219
  it "should set the code to run from STDIN if no arguments" do
216
- @apply.command_line.args = []
220
+ allow(@apply.command_line).to receive(:args).and_return([])
217
221
  allow(STDIN).to receive(:read).and_return("code to run")
218
222
 
219
223
  expect(Puppet).to receive(:[]=).with(:code,"code to run")
220
224
 
221
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
225
+ expect { @apply.main }.to exit_with 0
222
226
  end
223
227
 
224
228
  it "should raise an error if a file is passed on command line and the file does not exist" do
225
229
  noexist = tmpfile('noexist.pp')
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
230
+ allow(@apply.command_line).to receive(:args).and_return([noexist])
231
+ expect { @apply.main }.to raise_error(RuntimeError, "Could not find file #{noexist}")
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
- @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
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)
244
245
  end
245
246
 
246
247
  it "should splay" do
247
248
  expect(@apply).to receive(:splay)
248
249
 
249
- expect {
250
- @apply.run
251
- }.to exit_with(0).and output(anything).to_stdout
250
+ expect { @apply.main }.to exit_with 0
252
251
  end
253
252
 
254
- it "should exit with 1 if we can't find the node" do
253
+ it "should raise an error if we can't find the node" do
255
254
  expect(Puppet::Node.indirection).to receive(:find).and_return(nil)
256
255
 
257
- expect { @apply.run }.to exit_with(1).and output(/Could not find node/).to_stderr
256
+ expect { @apply.main }.to raise_error(RuntimeError, /Could not find node/)
258
257
  end
259
258
 
260
259
  it "should load custom classes if loadclasses" do
@@ -265,18 +264,18 @@ describe Puppet::Application::Apply do
265
264
 
266
265
  expect(@node).to receive(:classes=).with(['class'])
267
266
 
268
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
267
+ expect { @apply.main }.to exit_with 0
269
268
  end
270
269
 
271
270
  it "should compile the catalog" do
272
271
  expect(Puppet::Resource::Catalog.indirection).to receive(:find).and_return(@catalog)
273
272
 
274
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
273
+ expect { @apply.main }.to exit_with 0
275
274
  end
276
275
 
277
276
  it 'should called the DeferredResolver to resolve any Deferred values' do
278
277
  expect(Puppet::Pops::Evaluator::DeferredResolver).to receive(:resolve_and_replace).with(any_args)
279
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
278
+ expect { @apply.main }.to exit_with 0
280
279
  end
281
280
 
282
281
  it 'should make the Puppet::Pops::Loaders available when applying the compiled catalog' do
@@ -286,67 +285,47 @@ describe Puppet::Application::Apply do
286
285
  fail('Loaders not found') unless Puppet.lookup(:loaders) { nil }.is_a?(Puppet::Pops::Loaders)
287
286
  true
288
287
  end.and_return(0)
289
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
288
+ expect { @apply.main }.to exit_with 0
290
289
  end
291
290
 
292
291
  it "should transform the catalog to ral" do
293
292
  expect(@catalog).to receive(:to_ral).and_return(@catalog)
294
293
 
295
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
294
+ expect { @apply.main }.to exit_with 0
296
295
  end
297
296
 
298
297
  it "should finalize the catalog" do
299
298
  expect(@catalog).to receive(:finalize)
300
299
 
301
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
300
+ expect { @apply.main }.to exit_with 0
302
301
  end
303
302
 
304
303
  it "should not save the classes or resource file by default" do
305
304
  expect(@catalog).not_to receive(:write_class_file)
306
305
  expect(@catalog).not_to receive(:write_resource_file)
307
-
308
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
306
+ expect { @apply.main }.to exit_with 0
309
307
  end
310
308
 
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
309
+ it "should save the classes and resources files when requested" do
310
+ @apply.options[:write_catalog_summary] = true
332
311
 
333
312
  expect(@catalog).to receive(:write_class_file).once
334
313
  expect(@catalog).to receive(:write_resource_file).once
335
314
 
336
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
315
+ expect { @apply.main }.to exit_with 0
337
316
  end
338
317
 
339
318
  it "should call the prerun and postrun commands on a Configurer instance" do
340
319
  expect_any_instance_of(Puppet::Configurer).to receive(:execute_prerun_command).and_return(true)
341
320
  expect_any_instance_of(Puppet::Configurer).to receive(:execute_postrun_command).and_return(true)
342
321
 
343
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
322
+ expect { @apply.main }.to exit_with 0
344
323
  end
345
324
 
346
325
  it "should apply the catalog" do
347
326
  expect(@catalog).to receive(:apply).and_return(double('transaction'))
348
327
 
349
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
328
+ expect { @apply.main }.to exit_with 0
350
329
  end
351
330
 
352
331
  it "should save the last run summary" do
@@ -355,7 +334,7 @@ describe Puppet::Application::Apply do
355
334
  allow(Puppet::Transaction::Report).to receive(:new).and_return(report)
356
335
 
357
336
  expect_any_instance_of(Puppet::Configurer).to receive(:save_last_run_summary).with(report)
358
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
337
+ expect { @apply.main }.to exit_with 0
359
338
  end
360
339
 
361
340
  describe "when using node_name_fact" do
@@ -368,27 +347,27 @@ describe Puppet::Application::Apply do
368
347
  end
369
348
 
370
349
  it "should set the facts name based on the node_name_fact" do
371
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
350
+ expect { @apply.main }.to exit_with 0
372
351
  expect(@facts.name).to eq('other_node_name')
373
352
  end
374
353
 
375
354
  it "should set the node_name_value based on the node_name_fact" do
376
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
355
+ expect { @apply.main }.to exit_with 0
377
356
  expect(Puppet[:node_name_value]).to eq('other_node_name')
378
357
  end
379
358
 
380
359
  it "should merge in our node the loaded facts" do
381
360
  @facts.values.merge!('key' => 'value')
382
361
 
383
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
362
+ expect { @apply.main }.to exit_with 0
384
363
 
385
364
  expect(@node.parameters['key']).to eq('value')
386
365
  end
387
366
 
388
- it "should exit if we can't find the facts" do
367
+ it "should raise an error if we can't find the facts" do
389
368
  expect(Puppet::Node::Facts.indirection).to receive(:find).and_return(nil)
390
369
 
391
- expect { @apply.run }.to exit_with(1).and output(/Could not find facts/).to_stderr
370
+ expect { @apply.main }.to raise_error(RuntimeError, /Could not find facts/)
392
371
  end
393
372
  end
394
373
 
@@ -401,14 +380,14 @@ describe Puppet::Application::Apply do
401
380
  Puppet[:noop] = false
402
381
  allow_any_instance_of(Puppet::Transaction::Report).to receive(:exit_status).and_return(666)
403
382
 
404
- expect { @apply.run }.to exit_with(666).and output(anything).to_stdout
383
+ expect { @apply.main }.to exit_with 666
405
384
  end
406
385
 
407
386
  it "should exit with report's computed exit status, even if --noop is set" do
408
387
  Puppet[:noop] = true
409
388
  allow_any_instance_of(Puppet::Transaction::Report).to receive(:exit_status).and_return(666)
410
389
 
411
- expect { @apply.run }.to exit_with(666).and output(anything).to_stdout
390
+ expect { @apply.main }.to exit_with 666
412
391
  end
413
392
 
414
393
  it "should always exit with 0 if option is disabled" do
@@ -416,7 +395,7 @@ describe Puppet::Application::Apply do
416
395
  report = double('report', :exit_status => 666)
417
396
  allow(@transaction).to receive(:report).and_return(report)
418
397
 
419
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
398
+ expect { @apply.main }.to exit_with 0
420
399
  end
421
400
 
422
401
  it "should always exit with 0 if --noop" do
@@ -424,7 +403,7 @@ describe Puppet::Application::Apply do
424
403
  report = double('report', :exit_status => 666)
425
404
  allow(@transaction).to receive(:report).and_return(report)
426
405
 
427
- expect { @apply.run }.to exit_with(0).and output(anything).to_stdout
406
+ expect { @apply.main }.to exit_with 0
428
407
  end
429
408
  end
430
409
  end
@@ -524,15 +503,16 @@ describe Puppet::Application::Apply do
524
503
  }
525
504
  CODE
526
505
 
527
- Puppet.settings[:write_catalog_summary] = true
506
+ @apply.options[:write_catalog_summary] = true
507
+
528
508
  Puppet.settings[:resourcefile] = resourcefile
529
509
  Puppet.settings[:classfile] = classfile
530
510
 
531
511
  #We don't actually need the resource to do anything, we are using it's properties in other parts of the workflow.
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: ''))
512
+ allow(Puppet::Util::Execution).to receive(:execute)
513
+
514
+ expect { @apply.main }.to exit_with 0
534
515
 
535
- expect { @apply.run }.to exit_with(0).and output(%r{Exec\[do it\]/returns: executed successfully}).to_stdout
536
516
  result = File.read(resourcefile)
537
517
 
538
518
  expect(result).not_to match(/secret_file_name/)