puppet 6.0.10 → 6.1.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 (748) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/Gemfile.lock +31 -27
  4. data/Guardfile.example +76 -0
  5. data/LICENSE +189 -4
  6. data/MAINTAINERS +47 -0
  7. data/README.md +3 -3
  8. data/lib/hiera/scope.rb +0 -7
  9. data/lib/puppet.rb +6 -5
  10. data/lib/puppet/application.rb +3 -3
  11. data/lib/puppet/application/cert.rb +2 -2
  12. data/lib/puppet/application/device.rb +83 -109
  13. data/lib/puppet/application/filebucket.rb +1 -10
  14. data/lib/puppet/application/ssl.rb +0 -2
  15. data/lib/puppet/configurer.rb +9 -10
  16. data/lib/puppet/confine/false.rb +1 -7
  17. data/lib/puppet/confine/true.rb +1 -7
  18. data/lib/puppet/defaults.rb +39 -51
  19. data/lib/puppet/forge.rb +1 -4
  20. data/lib/puppet/functions/abs.rb +1 -1
  21. data/lib/puppet/functions/call.rb +1 -2
  22. data/lib/puppet/functions/new.rb +1 -1
  23. data/lib/puppet/indirector/request.rb +15 -26
  24. data/lib/puppet/network/http/connection.rb +12 -32
  25. data/lib/puppet/network/http/factory.rb +0 -5
  26. data/lib/puppet/pal/catalog_compiler.rb +96 -0
  27. data/lib/puppet/pal/compiler.rb +221 -0
  28. data/lib/puppet/pal/function_signature.rb +52 -0
  29. data/lib/puppet/pal/json_catalog_encoder.rb +67 -0
  30. data/lib/puppet/pal/pal_api.rb +15 -0
  31. data/lib/puppet/pal/pal_impl.rb +523 -0
  32. data/lib/puppet/pal/plan_signature.rb +71 -0
  33. data/lib/puppet/pal/script_compiler.rb +71 -0
  34. data/lib/puppet/pal/task_signature.rb +58 -0
  35. data/lib/puppet/parser/functions/generate.rb +7 -6
  36. data/lib/puppet/plugins/configuration.rb +5 -1
  37. data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -1
  38. data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -3
  39. data/lib/puppet/pops/issues.rb +0 -4
  40. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +4 -60
  41. data/lib/puppet/pops/model/factory.rb +4 -38
  42. data/lib/puppet/pops/model/pn_transformer.rb +0 -5
  43. data/lib/puppet/pops/parser/egrammar.ra +2 -2
  44. data/lib/puppet/pops/parser/heredoc_support.rb +7 -17
  45. data/lib/puppet/pops/parser/lexer2.rb +1 -6
  46. data/lib/puppet/pops/parser/locator.rb +86 -106
  47. data/lib/puppet/pops/parser/parser_support.rb +2 -11
  48. data/lib/puppet/pops/types/string_converter.rb +7 -2
  49. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  50. data/lib/puppet/pops/types/types.rb +3 -5
  51. data/lib/puppet/pops/validation/checker4_0.rb +13 -0
  52. data/lib/puppet/provider.rb +2 -1
  53. data/lib/puppet/provider/exec.rb +6 -1
  54. data/lib/puppet/provider/file/windows.rb +1 -49
  55. data/lib/puppet/provider/group/windows_adsi.rb +1 -4
  56. data/lib/puppet/provider/package.rb +0 -2
  57. data/lib/puppet/provider/package/dpkg.rb +2 -15
  58. data/lib/puppet/provider/package/gem.rb +42 -102
  59. data/lib/puppet/provider/package/pip.rb +111 -135
  60. data/lib/puppet/provider/package/pip3.rb +1 -1
  61. data/lib/puppet/provider/package/pkgng.rb +37 -21
  62. data/lib/puppet/provider/package/puppet_gem.rb +1 -1
  63. data/lib/puppet/provider/package/rpm.rb +16 -27
  64. data/lib/puppet/provider/package/windows.rb +1 -5
  65. data/lib/puppet/provider/package/yum.rb +1 -2
  66. data/lib/puppet/provider/service/systemd.rb +17 -0
  67. data/lib/puppet/provider/service/upstart.rb +5 -17
  68. data/lib/puppet/provider/service/windows.rb +8 -3
  69. data/lib/puppet/provider/user/directoryservice.rb +4 -16
  70. data/lib/puppet/provider/user/useradd.rb +13 -16
  71. data/lib/puppet/resource.rb +3 -1
  72. data/lib/puppet/rest/client.rb +83 -0
  73. data/lib/puppet/rest/route.rb +1 -1
  74. data/lib/puppet/settings.rb +5 -10
  75. data/lib/puppet/settings/server_list_setting.rb +0 -9
  76. data/lib/puppet/ssl/host.rb +11 -0
  77. data/lib/puppet/ssl/validator/default_validator.rb +0 -31
  78. data/lib/puppet/syntax_checkers/epp.rb +34 -0
  79. data/lib/puppet/syntax_checkers/pp.rb +34 -0
  80. data/lib/puppet/transaction.rb +7 -12
  81. data/lib/puppet/transaction/event_manager.rb +5 -1
  82. data/lib/puppet/transaction/resource_harness.rb +0 -1
  83. data/lib/puppet/type.rb +6 -0
  84. data/lib/puppet/type/exec.rb +5 -27
  85. data/lib/puppet/type/file/mode.rb +1 -6
  86. data/lib/puppet/type/file/source.rb +1 -0
  87. data/lib/puppet/type/filebucket.rb +8 -12
  88. data/lib/puppet/type/package.rb +11 -44
  89. data/lib/puppet/type/schedule.rb +0 -4
  90. data/lib/puppet/type/service.rb +12 -0
  91. data/lib/puppet/type/user.rb +1 -1
  92. data/lib/puppet/util/command_line.rb +1 -5
  93. data/lib/puppet/util/connection.rb +6 -15
  94. data/lib/puppet/util/http_proxy.rb +2 -3
  95. data/lib/puppet/util/log.rb +2 -7
  96. data/lib/puppet/util/pidlock.rb +1 -15
  97. data/lib/puppet/util/windows/process.rb +5 -73
  98. data/lib/puppet/util/windows/registry.rb +1 -7
  99. data/lib/puppet/util/windows/security.rb +8 -29
  100. data/lib/puppet/util/windows/service.rb +33 -27
  101. data/lib/puppet/util/windows/user.rb +4 -14
  102. data/lib/puppet/version.rb +1 -1
  103. data/lib/puppet_pal.rb +5 -1132
  104. data/locales/ja/puppet.po +297 -363
  105. data/locales/puppet.pot +445 -517
  106. data/man/man5/puppet.conf.5 +12 -20
  107. data/man/man8/puppet-agent.8 +1 -1
  108. data/man/man8/puppet-apply.8 +1 -1
  109. data/man/man8/puppet-catalog.8 +1 -1
  110. data/man/man8/puppet-config.8 +1 -1
  111. data/man/man8/puppet-describe.8 +1 -1
  112. data/man/man8/puppet-device.8 +1 -1
  113. data/man/man8/puppet-doc.8 +1 -1
  114. data/man/man8/puppet-epp.8 +1 -1
  115. data/man/man8/puppet-facts.8 +1 -1
  116. data/man/man8/puppet-filebucket.8 +2 -6
  117. data/man/man8/puppet-generate.8 +1 -1
  118. data/man/man8/puppet-help.8 +1 -1
  119. data/man/man8/puppet-key.8 +1 -1
  120. data/man/man8/puppet-lookup.8 +1 -1
  121. data/man/man8/puppet-man.8 +1 -1
  122. data/man/man8/puppet-module.8 +1 -1
  123. data/man/man8/puppet-node.8 +1 -1
  124. data/man/man8/puppet-parser.8 +1 -1
  125. data/man/man8/puppet-plugin.8 +1 -1
  126. data/man/man8/puppet-report.8 +1 -1
  127. data/man/man8/puppet-resource.8 +1 -1
  128. data/man/man8/puppet-script.8 +1 -1
  129. data/man/man8/puppet-ssl.8 +1 -1
  130. data/man/man8/puppet-status.8 +1 -1
  131. data/man/man8/puppet.8 +2 -2
  132. data/spec/fixtures/unit/provider/package/pkgng/pkg.query +7 -1
  133. data/spec/fixtures/unit/provider/package/pkgng/pkg.query.zsh +1 -0
  134. data/spec/integration/agent/logging_spec.rb +7 -5
  135. data/spec/integration/application/apply_spec.rb +16 -18
  136. data/spec/integration/application/doc_spec.rb +2 -1
  137. data/spec/integration/application/lookup_spec.rb +5 -5
  138. data/spec/integration/configurer_spec.rb +6 -5
  139. data/spec/integration/defaults_spec.rb +6 -5
  140. data/spec/integration/directory_environments_spec.rb +1 -1
  141. data/spec/integration/faces/config_spec.rb +4 -3
  142. data/spec/integration/faces/documentation_spec.rb +1 -0
  143. data/spec/integration/faces/plugin_spec.rb +1 -1
  144. data/spec/integration/file_bucket/file_spec.rb +4 -2
  145. data/spec/integration/file_serving/content_spec.rb +1 -0
  146. data/spec/integration/file_serving/fileset_spec.rb +1 -0
  147. data/spec/integration/file_serving/metadata_spec.rb +1 -0
  148. data/spec/integration/file_serving/terminus_helper_spec.rb +1 -0
  149. data/spec/integration/indirector/catalog/compiler_spec.rb +11 -10
  150. data/spec/integration/indirector/direct_file_server_spec.rb +1 -1
  151. data/spec/integration/indirector/facts/facter_spec.rb +5 -4
  152. data/spec/integration/indirector/file_content/file_server_spec.rb +8 -7
  153. data/spec/integration/indirector/file_metadata/file_server_spec.rb +8 -7
  154. data/spec/integration/network/authconfig_spec.rb +24 -23
  155. data/spec/integration/network/formats_spec.rb +1 -0
  156. data/spec/integration/node/environment_spec.rb +1 -0
  157. data/spec/integration/node/facts_spec.rb +10 -9
  158. data/spec/integration/node_spec.rb +7 -6
  159. data/spec/integration/parser/catalog_spec.rb +5 -1
  160. data/spec/integration/parser/collection_spec.rb +2 -1
  161. data/spec/integration/parser/compiler_spec.rb +6 -6
  162. data/spec/integration/parser/scope_spec.rb +1 -1
  163. data/spec/integration/parser/undef_param_spec.rb +1 -1
  164. data/spec/integration/provider/service/init_spec.rb +5 -4
  165. data/spec/integration/provider/service/systemd_spec.rb +2 -0
  166. data/spec/integration/provider/service/windows_spec.rb +2 -1
  167. data/spec/integration/reference/providers_spec.rb +2 -1
  168. data/spec/integration/reports_spec.rb +2 -1
  169. data/spec/integration/resource/catalog_spec.rb +17 -14
  170. data/spec/integration/resource/type_collection_spec.rb +5 -4
  171. data/spec/integration/ssl/certificate_request_spec.rb +1 -0
  172. data/spec/integration/ssl/host_spec.rb +2 -1
  173. data/spec/integration/ssl/key_spec.rb +1 -0
  174. data/spec/integration/test/test_helper_spec.rb +1 -0
  175. data/spec/integration/transaction/report_spec.rb +11 -6
  176. data/spec/integration/transaction_spec.rb +19 -18
  177. data/spec/integration/type/exec_spec.rb +1 -0
  178. data/spec/integration/type/file_spec.rb +33 -13
  179. data/spec/integration/type/package_spec.rb +24 -20
  180. data/spec/integration/type/tidy_spec.rb +2 -1
  181. data/spec/integration/type_spec.rb +1 -0
  182. data/spec/integration/util/autoload_spec.rb +2 -1
  183. data/spec/integration/util/rdoc/parser_spec.rb +1 -0
  184. data/spec/integration/util/settings_spec.rb +1 -0
  185. data/spec/integration/util/windows/adsi_spec.rb +5 -3
  186. data/spec/integration/util/windows/principal_spec.rb +1 -0
  187. data/spec/integration/util/windows/process_spec.rb +6 -4
  188. data/spec/integration/util/windows/registry_spec.rb +51 -93
  189. data/spec/integration/util/windows/security_spec.rb +4 -2
  190. data/spec/integration/util/windows/user_spec.rb +20 -37
  191. data/spec/integration/util_spec.rb +7 -4
  192. data/spec/lib/puppet_spec/compiler.rb +1 -1
  193. data/spec/lib/puppet_spec/files.rb +1 -0
  194. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +1 -1
  195. data/spec/lib/puppet_spec/scope.rb +2 -1
  196. data/spec/shared_behaviours/all_parsedfile_providers.rb +1 -1
  197. data/spec/shared_behaviours/file_server_terminus.rb +9 -8
  198. data/spec/shared_behaviours/file_serving.rb +8 -6
  199. data/spec/shared_behaviours/file_serving_model.rb +5 -3
  200. data/spec/shared_behaviours/hiera_indirections.rb +4 -3
  201. data/spec/shared_behaviours/iterative_functions.rb +1 -0
  202. data/spec/shared_behaviours/memory_terminus.rb +2 -2
  203. data/spec/shared_examples/rhel_package_provider.rb +70 -112
  204. data/spec/spec_helper.rb +2 -11
  205. data/spec/unit/agent/disabler_spec.rb +5 -4
  206. data/spec/unit/agent/locker_spec.rb +13 -12
  207. data/spec/unit/agent_spec.rb +85 -80
  208. data/spec/unit/application/agent_spec.rb +93 -88
  209. data/spec/unit/application/apply_spec.rb +83 -82
  210. data/spec/unit/application/config_spec.rb +1 -0
  211. data/spec/unit/application/describe_spec.rb +7 -6
  212. data/spec/unit/application/device_spec.rb +419 -395
  213. data/spec/unit/application/doc_spec.rb +46 -44
  214. data/spec/unit/application/face_base_spec.rb +62 -61
  215. data/spec/unit/application/facts_spec.rb +4 -3
  216. data/spec/unit/application/filebucket_spec.rb +74 -66
  217. data/spec/unit/application/indirection_base_spec.rb +6 -8
  218. data/spec/unit/application/lookup_spec.rb +26 -26
  219. data/spec/unit/application/resource_spec.rb +48 -42
  220. data/spec/unit/application/ssl_spec.rb +3 -8
  221. data/spec/unit/application_spec.rb +98 -86
  222. data/spec/unit/capability_spec.rb +6 -6
  223. data/spec/unit/certificate_factory_spec.rb +5 -3
  224. data/spec/unit/configurer/downloader_spec.rb +21 -20
  225. data/spec/unit/configurer/fact_handler_spec.rb +3 -2
  226. data/spec/unit/configurer/plugin_handler_spec.rb +8 -41
  227. data/spec/unit/configurer_spec.rb +198 -194
  228. data/spec/unit/confine/exists_spec.rb +15 -17
  229. data/spec/unit/confine/false_spec.rb +6 -32
  230. data/spec/unit/confine/feature_spec.rb +5 -7
  231. data/spec/unit/confine/true_spec.rb +6 -32
  232. data/spec/unit/confine/variable_spec.rb +15 -14
  233. data/spec/unit/confine_collection_spec.rb +29 -28
  234. data/spec/unit/confine_spec.rb +14 -13
  235. data/spec/unit/confiner_spec.rb +11 -10
  236. data/spec/unit/context/trusted_information_spec.rb +1 -1
  237. data/spec/unit/daemon_spec.rb +36 -35
  238. data/spec/unit/data_providers/function_data_provider_spec.rb +1 -0
  239. data/spec/unit/data_providers/hiera_data_provider_spec.rb +1 -0
  240. data/spec/unit/datatypes_spec.rb +4 -3
  241. data/spec/unit/defaults_spec.rb +27 -18
  242. data/spec/unit/environments_spec.rb +7 -7
  243. data/spec/unit/etc_spec.rb +32 -30
  244. data/spec/unit/external/pson_spec.rb +1 -0
  245. data/spec/unit/face/catalog_spec.rb +1 -0
  246. data/spec/unit/face/config_spec.rb +35 -31
  247. data/spec/unit/face/epp_face_spec.rb +4 -3
  248. data/spec/unit/face/facts_spec.rb +6 -5
  249. data/spec/unit/face/generate_spec.rb +5 -4
  250. data/spec/unit/face/help_spec.rb +8 -7
  251. data/spec/unit/face/key_spec.rb +1 -0
  252. data/spec/unit/face/man_spec.rb +2 -1
  253. data/spec/unit/face/module/install_spec.rb +5 -3
  254. data/spec/unit/face/module/list_spec.rb +12 -2
  255. data/spec/unit/face/module/search_spec.rb +9 -11
  256. data/spec/unit/face/module/uninstall_spec.rb +8 -4
  257. data/spec/unit/face/node_spec.rb +24 -23
  258. data/spec/unit/face/parser_spec.rb +18 -3
  259. data/spec/unit/face/plugin_spec.rb +9 -36
  260. data/spec/unit/face/status_spec.rb +1 -0
  261. data/spec/unit/file_bucket/dipper_spec.rb +20 -24
  262. data/spec/unit/file_bucket/file_spec.rb +2 -0
  263. data/spec/unit/file_serving/base_spec.rb +15 -14
  264. data/spec/unit/file_serving/configuration/parser_spec.rb +28 -27
  265. data/spec/unit/file_serving/configuration_spec.rb +66 -63
  266. data/spec/unit/file_serving/content_spec.rb +11 -10
  267. data/spec/unit/file_serving/fileset_spec.rb +58 -63
  268. data/spec/unit/file_serving/http_metadata_spec.rb +7 -8
  269. data/spec/unit/file_serving/metadata_spec.rb +36 -36
  270. data/spec/unit/file_serving/mount/file_spec.rb +32 -31
  271. data/spec/unit/file_serving/mount/locales_spec.rb +24 -23
  272. data/spec/unit/file_serving/mount/modules_spec.rb +15 -14
  273. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +24 -23
  274. data/spec/unit/file_serving/mount/plugins_spec.rb +24 -23
  275. data/spec/unit/file_serving/mount/tasks_spec.rb +15 -14
  276. data/spec/unit/file_serving/mount_spec.rb +1 -0
  277. data/spec/unit/file_serving/terminus_helper_spec.rb +42 -37
  278. data/spec/unit/file_serving/terminus_selector_spec.rb +13 -12
  279. data/spec/unit/file_system/uniquefile_spec.rb +4 -4
  280. data/spec/unit/file_system_spec.rb +2 -2
  281. data/spec/unit/forge/errors_spec.rb +1 -1
  282. data/spec/unit/forge/forge_spec.rb +16 -17
  283. data/spec/unit/forge/module_release_spec.rb +18 -18
  284. data/spec/unit/forge/repository_spec.rb +30 -29
  285. data/spec/unit/forge_spec.rb +11 -15
  286. data/spec/unit/functions/binary_file_spec.rb +3 -3
  287. data/spec/unit/functions/contain_spec.rb +2 -0
  288. data/spec/unit/functions/defined_spec.rb +1 -0
  289. data/spec/unit/functions/epp_spec.rb +2 -2
  290. data/spec/unit/functions/find_file_spec.rb +7 -7
  291. data/spec/unit/functions/include_spec.rb +4 -0
  292. data/spec/unit/functions/lookup_fixture_spec.rb +1 -0
  293. data/spec/unit/functions/lookup_spec.rb +2 -1
  294. data/spec/unit/functions/module_directory_spec.rb +12 -12
  295. data/spec/unit/functions/new_spec.rb +0 -15
  296. data/spec/unit/functions/require_spec.rb +3 -0
  297. data/spec/unit/functions/shared.rb +8 -5
  298. data/spec/unit/functions/versioncmp_spec.rb +2 -1
  299. data/spec/unit/functions4_spec.rb +10 -9
  300. data/spec/unit/gettext/config_spec.rb +4 -4
  301. data/spec/unit/gettext/module_loading_spec.rb +7 -7
  302. data/spec/unit/graph/rb_tree_map_spec.rb +2 -0
  303. data/spec/unit/graph/relationship_graph_spec.rb +2 -1
  304. data/spec/unit/graph/simple_graph_spec.rb +10 -9
  305. data/spec/unit/hiera/scope_spec.rb +0 -7
  306. data/spec/unit/hiera_puppet_spec.rb +20 -20
  307. data/spec/unit/indirector/catalog/compiler_spec.rb +149 -147
  308. data/spec/unit/indirector/catalog/json_spec.rb +2 -1
  309. data/spec/unit/indirector/catalog/msgpack_spec.rb +1 -0
  310. data/spec/unit/indirector/catalog/rest_spec.rb +1 -0
  311. data/spec/unit/indirector/catalog/store_configs_spec.rb +1 -0
  312. data/spec/unit/indirector/catalog/yaml_spec.rb +1 -0
  313. data/spec/unit/indirector/certificate/file_spec.rb +1 -0
  314. data/spec/unit/indirector/certificate/rest_spec.rb +10 -8
  315. data/spec/unit/indirector/certificate_request/file_spec.rb +1 -0
  316. data/spec/unit/indirector/certificate_request/rest_spec.rb +1 -0
  317. data/spec/unit/indirector/direct_file_server_spec.rb +18 -17
  318. data/spec/unit/indirector/envelope_spec.rb +2 -1
  319. data/spec/unit/indirector/exec_spec.rb +5 -4
  320. data/spec/unit/indirector/face_spec.rb +9 -9
  321. data/spec/unit/indirector/facts/facter_spec.rb +43 -37
  322. data/spec/unit/indirector/facts/network_device_spec.rb +9 -8
  323. data/spec/unit/indirector/facts/rest_spec.rb +8 -7
  324. data/spec/unit/indirector/facts/store_configs_spec.rb +1 -0
  325. data/spec/unit/indirector/facts/yaml_spec.rb +1 -0
  326. data/spec/unit/indirector/file_bucket_file/file_spec.rb +4 -3
  327. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +1 -0
  328. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +5 -4
  329. data/spec/unit/indirector/file_content/file_server_spec.rb +1 -0
  330. data/spec/unit/indirector/file_content/file_spec.rb +1 -0
  331. data/spec/unit/indirector/file_content/rest_spec.rb +1 -0
  332. data/spec/unit/indirector/file_content/selector_spec.rb +1 -0
  333. data/spec/unit/indirector/file_metadata/file_server_spec.rb +1 -0
  334. data/spec/unit/indirector/file_metadata/file_spec.rb +13 -12
  335. data/spec/unit/indirector/file_metadata/rest_spec.rb +1 -0
  336. data/spec/unit/indirector/file_metadata/selector_spec.rb +1 -0
  337. data/spec/unit/indirector/file_server_spec.rb +87 -87
  338. data/spec/unit/indirector/indirection_spec.rb +226 -242
  339. data/spec/unit/indirector/json_spec.rb +9 -7
  340. data/spec/unit/indirector/key/file_spec.rb +22 -21
  341. data/spec/unit/indirector/memory_spec.rb +7 -6
  342. data/spec/unit/indirector/msgpack_spec.rb +9 -7
  343. data/spec/unit/indirector/node/exec_spec.rb +3 -2
  344. data/spec/unit/indirector/node/memory_spec.rb +4 -2
  345. data/spec/unit/indirector/node/msgpack_spec.rb +1 -0
  346. data/spec/unit/indirector/node/plain_spec.rb +4 -2
  347. data/spec/unit/indirector/node/rest_spec.rb +1 -0
  348. data/spec/unit/indirector/node/store_configs_spec.rb +1 -0
  349. data/spec/unit/indirector/node/yaml_spec.rb +1 -0
  350. data/spec/unit/indirector/none_spec.rb +5 -5
  351. data/spec/unit/indirector/plain_spec.rb +8 -7
  352. data/spec/unit/indirector/report/msgpack_spec.rb +1 -0
  353. data/spec/unit/indirector/report/processor_spec.rb +22 -21
  354. data/spec/unit/indirector/report/rest_spec.rb +12 -11
  355. data/spec/unit/indirector/report/yaml_spec.rb +1 -0
  356. data/spec/unit/indirector/request_spec.rb +12 -11
  357. data/spec/unit/indirector/resource/ral_spec.rb +54 -47
  358. data/spec/unit/indirector/resource/store_configs_spec.rb +1 -0
  359. data/spec/unit/indirector/rest_spec.rb +110 -113
  360. data/spec/unit/indirector/ssl_file_spec.rb +65 -64
  361. data/spec/unit/indirector/status/local_spec.rb +1 -0
  362. data/spec/unit/indirector/status/rest_spec.rb +1 -0
  363. data/spec/unit/indirector/store_configs_spec.rb +1 -0
  364. data/spec/unit/indirector/terminus_spec.rb +27 -27
  365. data/spec/unit/indirector/yaml_spec.rb +6 -5
  366. data/spec/unit/indirector_spec.rb +2 -1
  367. data/spec/unit/info_service_spec.rb +1 -1
  368. data/spec/unit/interface/action_builder_spec.rb +1 -0
  369. data/spec/unit/interface/action_manager_spec.rb +1 -0
  370. data/spec/unit/interface/action_spec.rb +3 -2
  371. data/spec/unit/interface/documentation_spec.rb +1 -0
  372. data/spec/unit/interface/face_collection_spec.rb +12 -19
  373. data/spec/unit/interface_spec.rb +3 -3
  374. data/spec/unit/man_spec.rb +4 -3
  375. data/spec/unit/module_spec.rb +51 -46
  376. data/spec/unit/module_tool/applications/installer_spec.rb +11 -10
  377. data/spec/unit/module_tool/applications/searcher_spec.rb +3 -3
  378. data/spec/unit/module_tool/applications/uninstaller_spec.rb +2 -1
  379. data/spec/unit/module_tool/applications/unpacker_spec.rb +13 -13
  380. data/spec/unit/module_tool/applications/upgrader_spec.rb +5 -5
  381. data/spec/unit/module_tool/install_directory_spec.rb +8 -8
  382. data/spec/unit/module_tool/installed_modules_spec.rb +3 -3
  383. data/spec/unit/module_tool/tar/gnu_spec.rb +6 -6
  384. data/spec/unit/module_tool/tar/mini_spec.rb +12 -12
  385. data/spec/unit/module_tool/tar_spec.rb +13 -12
  386. data/spec/unit/module_tool_spec.rb +12 -7
  387. data/spec/unit/network/auth_config_parser_spec.rb +13 -11
  388. data/spec/unit/network/authconfig_spec.rb +18 -17
  389. data/spec/unit/network/authorization_spec.rb +5 -4
  390. data/spec/unit/network/authstore_spec.rb +1 -0
  391. data/spec/unit/network/format_handler_spec.rb +1 -0
  392. data/spec/unit/network/format_spec.rb +10 -9
  393. data/spec/unit/network/format_support_spec.rb +29 -28
  394. data/spec/unit/network/formats_spec.rb +5 -4
  395. data/spec/unit/network/http/api/indirected_routes_spec.rb +29 -24
  396. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +2 -2
  397. data/spec/unit/network/http/api/master/v3/environment_spec.rb +1 -1
  398. data/spec/unit/network/http/api/master/v3/environments_spec.rb +7 -6
  399. data/spec/unit/network/http/api_spec.rb +2 -0
  400. data/spec/unit/network/http/compression_spec.rb +22 -21
  401. data/spec/unit/network/http/connection_spec.rb +121 -30
  402. data/spec/unit/network/http/factory_spec.rb +6 -11
  403. data/spec/unit/network/http/handler_spec.rb +18 -9
  404. data/spec/unit/network/http/nocache_pool_spec.rb +7 -6
  405. data/spec/unit/network/http/pool_spec.rb +29 -28
  406. data/spec/unit/network/http/request_spec.rb +2 -0
  407. data/spec/unit/network/http/response_spec.rb +13 -11
  408. data/spec/unit/network/http/route_spec.rb +1 -0
  409. data/spec/unit/network/http/session_spec.rb +2 -1
  410. data/spec/unit/network/http/site_spec.rb +1 -0
  411. data/spec/unit/network/http_pool_spec.rb +9 -18
  412. data/spec/unit/network/http_spec.rb +1 -0
  413. data/spec/unit/network/resolver_spec.rb +26 -25
  414. data/spec/unit/network/rights_spec.rb +53 -52
  415. data/spec/unit/node/environment_spec.rb +15 -14
  416. data/spec/unit/node/facts_spec.rb +7 -5
  417. data/spec/unit/node_spec.rb +10 -4
  418. data/spec/unit/other/selinux_spec.rb +1 -0
  419. data/spec/unit/parameter/boolean_spec.rb +2 -1
  420. data/spec/unit/parameter/package_options_spec.rb +2 -1
  421. data/spec/unit/parameter/path_spec.rb +1 -0
  422. data/spec/unit/parameter/value_collection_spec.rb +1 -0
  423. data/spec/unit/parameter/value_spec.rb +1 -0
  424. data/spec/unit/parameter_spec.rb +9 -9
  425. data/spec/unit/parser/ast/block_expression_spec.rb +8 -6
  426. data/spec/unit/parser/ast/leaf_spec.rb +21 -20
  427. data/spec/unit/parser/compiler_spec.rb +96 -84
  428. data/spec/unit/parser/environment_compiler_spec.rb +8 -7
  429. data/spec/unit/parser/files_spec.rb +1 -0
  430. data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
  431. data/spec/unit/parser/functions/digest_spec.rb +1 -0
  432. data/spec/unit/parser/functions/fail_spec.rb +2 -1
  433. data/spec/unit/parser/functions/file_spec.rb +14 -13
  434. data/spec/unit/parser/functions/fqdn_rand_spec.rb +6 -5
  435. data/spec/unit/parser/functions/generate_spec.rb +8 -7
  436. data/spec/unit/parser/functions/inline_template_spec.rb +1 -0
  437. data/spec/unit/parser/functions/regsubst_spec.rb +1 -0
  438. data/spec/unit/parser/functions/scanf_spec.rb +1 -0
  439. data/spec/unit/parser/functions/shellquote_spec.rb +1 -0
  440. data/spec/unit/parser/functions/split_spec.rb +1 -0
  441. data/spec/unit/parser/functions/sprintf_spec.rb +1 -0
  442. data/spec/unit/parser/functions/tag_spec.rb +2 -1
  443. data/spec/unit/parser/functions/tagged_spec.rb +3 -2
  444. data/spec/unit/parser/functions/template_spec.rb +13 -13
  445. data/spec/unit/parser/functions/versioncmp_spec.rb +2 -1
  446. data/spec/unit/parser/functions_spec.rb +7 -6
  447. data/spec/unit/parser/relationship_spec.rb +1 -0
  448. data/spec/unit/parser/resource_spec.rb +42 -42
  449. data/spec/unit/parser/scope_spec.rb +35 -39
  450. data/spec/unit/parser/templatewrapper_spec.rb +12 -11
  451. data/spec/unit/parser/type_loader_spec.rb +19 -17
  452. data/spec/unit/pops/adaptable_spec.rb +1 -0
  453. data/spec/unit/pops/benchmark_spec.rb +1 -0
  454. data/spec/unit/pops/evaluator/access_ops_spec.rb +1 -0
  455. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +1 -0
  456. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -0
  457. data/spec/unit/pops/evaluator/collections_ops_spec.rb +1 -0
  458. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +1 -0
  459. data/spec/unit/pops/evaluator/conditionals_spec.rb +1 -0
  460. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +47 -10
  461. data/spec/unit/pops/evaluator/logical_ops_spec.rb +1 -0
  462. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +1 -0
  463. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +1 -0
  464. data/spec/unit/pops/evaluator/variables_spec.rb +1 -0
  465. data/spec/unit/pops/factory_spec.rb +4 -3
  466. data/spec/unit/pops/issues_spec.rb +20 -19
  467. data/spec/unit/pops/loaders/loader_spec.rb +4 -8
  468. data/spec/unit/pops/loaders/loaders_spec.rb +31 -101
  469. data/spec/unit/pops/lookup/context_spec.rb +1 -0
  470. data/spec/unit/pops/lookup/interpolation_spec.rb +3 -2
  471. data/spec/unit/pops/merge_strategy_spec.rb +1 -0
  472. data/spec/unit/pops/migration_spec.rb +5 -3
  473. data/spec/unit/pops/model/model_spec.rb +1 -0
  474. data/spec/unit/pops/model/pn_transformer_spec.rb +1 -4
  475. data/spec/unit/pops/parser/locator_spec.rb +6 -48
  476. data/spec/unit/pops/parser/parse_application_spec.rb +1 -0
  477. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +1 -0
  478. data/spec/unit/pops/parser/parse_calls_spec.rb +1 -0
  479. data/spec/unit/pops/parser/parse_capabilities_spec.rb +1 -0
  480. data/spec/unit/pops/parser/parse_conditionals_spec.rb +1 -0
  481. data/spec/unit/pops/parser/parse_containers_spec.rb +1 -0
  482. data/spec/unit/pops/parser/parse_heredoc_spec.rb +15 -111
  483. data/spec/unit/pops/parser/parse_plan_spec.rb +1 -0
  484. data/spec/unit/pops/parser/parse_resource_spec.rb +1 -0
  485. data/spec/unit/pops/parser/parse_site_spec.rb +1 -0
  486. data/spec/unit/pops/parser/pn_parser_spec.rb +1 -0
  487. data/spec/unit/pops/pn_spec.rb +1 -0
  488. data/spec/unit/pops/resource/resource_type_impl_spec.rb +1 -0
  489. data/spec/unit/pops/serialization/serialization_spec.rb +1 -1
  490. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  491. data/spec/unit/pops/types/recursion_guard_spec.rb +10 -10
  492. data/spec/unit/pops/types/ruby_generator_spec.rb +2 -2
  493. data/spec/unit/pops/types/string_converter_spec.rb +5 -1
  494. data/spec/unit/pops/types/type_asserter_spec.rb +2 -2
  495. data/spec/unit/pops/types/type_calculator_spec.rb +30 -30
  496. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +0 -9
  497. data/spec/unit/pops/types/type_parser_spec.rb +13 -13
  498. data/spec/unit/pops/validator/validator_spec.rb +2 -1
  499. data/spec/unit/pops/visitor_spec.rb +1 -0
  500. data/spec/unit/property/boolean_spec.rb +1 -1
  501. data/spec/unit/property/ensure_spec.rb +1 -0
  502. data/spec/unit/property/keyvalue_spec.rb +34 -32
  503. data/spec/unit/property/list_spec.rb +27 -26
  504. data/spec/unit/property/ordered_list_spec.rb +14 -10
  505. data/spec/unit/property_spec.rb +43 -42
  506. data/spec/unit/provider/aix_object_spec.rb +45 -47
  507. data/spec/unit/provider/command_spec.rb +9 -9
  508. data/spec/unit/provider/exec/posix_spec.rb +31 -6
  509. data/spec/unit/provider/exec/shell_spec.rb +1 -0
  510. data/spec/unit/provider/exec/windows_spec.rb +4 -2
  511. data/spec/unit/provider/exec_spec.rb +1 -0
  512. data/spec/unit/provider/file/posix_spec.rb +24 -22
  513. data/spec/unit/provider/file/windows_spec.rb +17 -15
  514. data/spec/unit/provider/group/aix_spec.rb +2 -3
  515. data/spec/unit/provider/group/groupadd_spec.rb +26 -30
  516. data/spec/unit/provider/group/ldap_spec.rb +18 -18
  517. data/spec/unit/provider/group/pw_spec.rb +11 -11
  518. data/spec/unit/provider/group/windows_adsi_spec.rb +53 -59
  519. data/spec/unit/provider/ldap_spec.rb +62 -61
  520. data/spec/unit/provider/nameservice/directoryservice_spec.rb +36 -35
  521. data/spec/unit/provider/nameservice_spec.rb +40 -38
  522. data/spec/unit/provider/package/aix_spec.rb +15 -15
  523. data/spec/unit/provider/package/appdmg_spec.rb +13 -13
  524. data/spec/unit/provider/package/apt_spec.rb +27 -44
  525. data/spec/unit/provider/package/aptitude_spec.rb +7 -6
  526. data/spec/unit/provider/package/aptrpm_spec.rb +12 -7
  527. data/spec/unit/provider/package/base_spec.rb +4 -4
  528. data/spec/unit/provider/package/dnf_spec.rb +20 -18
  529. data/spec/unit/provider/package/dpkg_spec.rb +53 -70
  530. data/spec/unit/provider/package/freebsd_spec.rb +11 -11
  531. data/spec/unit/provider/package/gem_spec.rb +55 -132
  532. data/spec/unit/provider/package/hpux_spec.rb +8 -8
  533. data/spec/unit/provider/package/macports_spec.rb +42 -46
  534. data/spec/unit/provider/package/nim_spec.rb +39 -30
  535. data/spec/unit/provider/package/openbsd_spec.rb +39 -36
  536. data/spec/unit/provider/package/opkg_spec.rb +26 -23
  537. data/spec/unit/provider/package/pacman_spec.rb +118 -97
  538. data/spec/unit/provider/package/pip3_spec.rb +0 -17
  539. data/spec/unit/provider/package/pip_spec.rb +106 -95
  540. data/spec/unit/provider/package/pkg_spec.rb +109 -109
  541. data/spec/unit/provider/package/pkgdmg_spec.rb +63 -65
  542. data/spec/unit/provider/package/pkgin_spec.rb +8 -10
  543. data/spec/unit/provider/package/pkgng_spec.rb +31 -22
  544. data/spec/unit/provider/package/pkgutil_spec.rb +49 -45
  545. data/spec/unit/provider/package/portage_spec.rb +74 -70
  546. data/spec/unit/provider/package/puppet_gem_spec.rb +13 -37
  547. data/spec/unit/provider/package/rpm_spec.rb +76 -154
  548. data/spec/unit/provider/package/sun_spec.rb +18 -16
  549. data/spec/unit/provider/package/tdnf_spec.rb +2 -2
  550. data/spec/unit/provider/package/up2date_spec.rb +4 -2
  551. data/spec/unit/provider/package/urpmi_spec.rb +17 -15
  552. data/spec/unit/provider/package/windows/exe_package_spec.rb +15 -12
  553. data/spec/unit/provider/package/windows/msi_package_spec.rb +22 -19
  554. data/spec/unit/provider/package/windows/package_spec.rb +42 -37
  555. data/spec/unit/provider/package/windows_spec.rb +32 -47
  556. data/spec/unit/provider/package/yum_spec.rb +7 -7
  557. data/spec/unit/provider/package/zypper_spec.rb +87 -87
  558. data/spec/unit/provider/parsedfile_spec.rb +45 -44
  559. data/spec/unit/provider/service/base_spec.rb +5 -4
  560. data/spec/unit/provider/service/bsd_spec.rb +29 -27
  561. data/spec/unit/provider/service/daemontools_spec.rb +35 -35
  562. data/spec/unit/provider/service/debian_spec.rb +38 -38
  563. data/spec/unit/provider/service/freebsd_spec.rb +18 -18
  564. data/spec/unit/provider/service/gentoo_spec.rb +55 -50
  565. data/spec/unit/provider/service/init_spec.rb +52 -53
  566. data/spec/unit/provider/service/launchd_spec.rb +116 -138
  567. data/spec/unit/provider/service/openbsd_spec.rb +50 -50
  568. data/spec/unit/provider/service/openrc_spec.rb +45 -43
  569. data/spec/unit/provider/service/openwrt_spec.rb +31 -26
  570. data/spec/unit/provider/service/rcng_spec.rb +14 -14
  571. data/spec/unit/provider/service/redhat_spec.rb +43 -45
  572. data/spec/unit/provider/service/runit_spec.rb +27 -29
  573. data/spec/unit/provider/service/smf_spec.rb +66 -74
  574. data/spec/unit/provider/service/src_spec.rb +47 -46
  575. data/spec/unit/provider/service/systemd_spec.rb +136 -109
  576. data/spec/unit/provider/service/upstart_spec.rb +93 -77
  577. data/spec/unit/provider/service/windows_spec.rb +41 -33
  578. data/spec/unit/provider/user/aix_spec.rb +31 -31
  579. data/spec/unit/provider/user/directoryservice_spec.rb +114 -146
  580. data/spec/unit/provider/user/hpux_spec.rb +16 -16
  581. data/spec/unit/provider/user/ldap_spec.rb +57 -57
  582. data/spec/unit/provider/user/openbsd_spec.rb +12 -10
  583. data/spec/unit/provider/user/pw_spec.rb +35 -37
  584. data/spec/unit/provider/user/user_role_add_spec.rb +93 -93
  585. data/spec/unit/provider/user/useradd_spec.rb +92 -93
  586. data/spec/unit/provider/user/windows_adsi_spec.rb +60 -59
  587. data/spec/unit/provider_spec.rb +35 -35
  588. data/spec/unit/puppet_pal_2pec.rb +5 -4
  589. data/spec/unit/puppet_pal_spec.rb +1 -0
  590. data/spec/unit/puppet_spec.rb +7 -6
  591. data/spec/unit/relationship_spec.rb +1 -0
  592. data/spec/unit/reports/http_spec.rb +23 -21
  593. data/spec/unit/reports/store_spec.rb +4 -3
  594. data/spec/unit/reports_spec.rb +14 -12
  595. data/spec/unit/resource/capability_finder_spec.rb +17 -15
  596. data/spec/unit/resource/catalog_spec.rb +68 -72
  597. data/spec/unit/resource/status_spec.rb +8 -6
  598. data/spec/unit/resource/type_collection_spec.rb +18 -17
  599. data/spec/unit/resource/type_spec.rb +35 -34
  600. data/spec/unit/resource_spec.rb +63 -36
  601. data/spec/unit/rest/client_spec.rb +135 -0
  602. data/spec/unit/rest/route_spec.rb +6 -6
  603. data/spec/unit/scheduler/job_spec.rb +1 -0
  604. data/spec/unit/scheduler/scheduler_spec.rb +1 -0
  605. data/spec/unit/scheduler/splay_job_spec.rb +2 -1
  606. data/spec/unit/settings/array_setting_spec.rb +1 -1
  607. data/spec/unit/settings/autosign_setting_spec.rb +9 -9
  608. data/spec/unit/settings/certificate_revocation_setting_spec.rb +1 -1
  609. data/spec/unit/settings/config_file_spec.rb +1 -0
  610. data/spec/unit/settings/directory_setting_spec.rb +7 -2
  611. data/spec/unit/settings/duration_setting_spec.rb +2 -1
  612. data/spec/unit/settings/enum_setting_spec.rb +1 -1
  613. data/spec/unit/settings/environment_conf_spec.rb +6 -4
  614. data/spec/unit/settings/file_setting_spec.rb +46 -44
  615. data/spec/unit/settings/path_setting_spec.rb +2 -1
  616. data/spec/unit/settings/priority_setting_spec.rb +2 -1
  617. data/spec/unit/settings/string_setting_spec.rb +15 -14
  618. data/spec/unit/settings/terminus_setting_spec.rb +2 -1
  619. data/spec/unit/settings/value_translator_spec.rb +1 -0
  620. data/spec/unit/settings_spec.rb +224 -253
  621. data/spec/unit/ssl/base_spec.rb +15 -14
  622. data/spec/unit/ssl/certificate_request_spec.rb +58 -62
  623. data/spec/unit/ssl/certificate_spec.rb +25 -23
  624. data/spec/unit/ssl/digest_spec.rb +1 -0
  625. data/spec/unit/ssl/host_spec.rb +149 -166
  626. data/spec/unit/ssl/key_spec.rb +31 -30
  627. data/spec/unit/ssl/validator_spec.rb +39 -40
  628. data/spec/unit/task_spec.rb +45 -44
  629. data/spec/unit/transaction/additional_resource_generator_spec.rb +5 -3
  630. data/spec/unit/transaction/event_manager_spec.rb +88 -87
  631. data/spec/unit/transaction/event_spec.rb +15 -16
  632. data/spec/unit/transaction/persistence_spec.rb +17 -16
  633. data/spec/unit/transaction/report_spec.rb +12 -11
  634. data/spec/unit/transaction/resource_harness_spec.rb +31 -52
  635. data/spec/unit/transaction_spec.rb +87 -140
  636. data/spec/unit/type/component_spec.rb +1 -0
  637. data/spec/unit/type/exec_spec.rb +50 -101
  638. data/spec/unit/type/file/checksum_spec.rb +10 -9
  639. data/spec/unit/type/file/checksum_value_spec.rb +32 -31
  640. data/spec/unit/type/file/content_spec.rb +61 -58
  641. data/spec/unit/type/file/ctime_spec.rb +1 -0
  642. data/spec/unit/type/file/ensure_spec.rb +13 -12
  643. data/spec/unit/type/file/group_spec.rb +7 -5
  644. data/spec/unit/type/file/mode_spec.rb +6 -4
  645. data/spec/unit/type/file/mtime_spec.rb +1 -0
  646. data/spec/unit/type/file/owner_spec.rb +8 -6
  647. data/spec/unit/type/file/selinux_spec.rb +19 -17
  648. data/spec/unit/type/file/source_spec.rb +101 -104
  649. data/spec/unit/type/file/type_spec.rb +1 -0
  650. data/spec/unit/type/file_spec.rb +185 -195
  651. data/spec/unit/type/filebucket_spec.rb +10 -11
  652. data/spec/unit/type/group_spec.rb +8 -6
  653. data/spec/unit/type/noop_metaparam_spec.rb +2 -1
  654. data/spec/unit/type/package/package_settings_spec.rb +23 -44
  655. data/spec/unit/type/package_spec.rb +57 -56
  656. data/spec/unit/type/resources_spec.rb +74 -72
  657. data/spec/unit/type/schedule_spec.rb +26 -24
  658. data/spec/unit/type/service_spec.rb +75 -49
  659. data/spec/unit/type/stage_spec.rb +1 -0
  660. data/spec/unit/type/tidy_spec.rb +62 -61
  661. data/spec/unit/type/user_spec.rb +25 -24
  662. data/spec/unit/type/whit_spec.rb +1 -0
  663. data/spec/unit/type_spec.rb +54 -55
  664. data/spec/unit/util/at_fork_spec.rb +19 -18
  665. data/spec/unit/util/autoload_spec.rb +56 -55
  666. data/spec/unit/util/backups_spec.rb +35 -34
  667. data/spec/unit/util/character_encoding_spec.rb +5 -5
  668. data/spec/unit/util/checksums_spec.rb +39 -38
  669. data/spec/unit/util/colors_spec.rb +2 -1
  670. data/spec/unit/util/command_line_spec.rb +20 -40
  671. data/spec/unit/util/constant_inflector_spec.rb +1 -0
  672. data/spec/unit/util/diff_spec.rb +8 -7
  673. data/spec/unit/util/errors_spec.rb +1 -0
  674. data/spec/unit/util/execution_spec.rb +163 -187
  675. data/spec/unit/util/execution_stub_spec.rb +1 -0
  676. data/spec/unit/util/feature_spec.rb +14 -21
  677. data/spec/unit/util/filetype_spec.rb +49 -49
  678. data/spec/unit/util/http_proxy_spec.rb +12 -12
  679. data/spec/unit/util/inifile_spec.rb +31 -26
  680. data/spec/unit/util/json_lockfile_spec.rb +5 -3
  681. data/spec/unit/util/ldap/connection_spec.rb +25 -26
  682. data/spec/unit/util/ldap/generator_spec.rb +1 -0
  683. data/spec/unit/util/ldap/manager_spec.rb +101 -102
  684. data/spec/unit/util/lockfile_spec.rb +1 -0
  685. data/spec/unit/util/log/destinations_spec.rb +33 -30
  686. data/spec/unit/util/log_spec.rb +34 -48
  687. data/spec/unit/util/logging_spec.rb +72 -58
  688. data/spec/unit/util/metric_spec.rb +1 -0
  689. data/spec/unit/util/monkey_patches_spec.rb +9 -7
  690. data/spec/unit/util/multi_match_spec.rb +1 -0
  691. data/spec/unit/util/network_device/config_spec.rb +1 -0
  692. data/spec/unit/util/network_device/transport/base_spec.rb +6 -5
  693. data/spec/unit/util/network_device_spec.rb +9 -7
  694. data/spec/unit/util/package_spec.rb +1 -0
  695. data/spec/unit/util/pidlock_spec.rb +15 -60
  696. data/spec/unit/util/plist_spec.rb +33 -40
  697. data/spec/unit/util/posix_spec.rb +51 -54
  698. data/spec/unit/util/rdoc_spec.rb +10 -9
  699. data/spec/unit/util/reference_spec.rb +1 -0
  700. data/spec/unit/util/resource_template_spec.rb +20 -20
  701. data/spec/unit/util/retry_action_spec.rb +8 -7
  702. data/spec/unit/util/rubygems_spec.rb +8 -7
  703. data/spec/unit/util/run_mode_spec.rb +4 -3
  704. data/spec/unit/util/selinux_spec.rb +72 -79
  705. data/spec/unit/util/splayer_spec.rb +9 -8
  706. data/spec/unit/util/ssl_spec.rb +1 -0
  707. data/spec/unit/util/storage_spec.rb +23 -22
  708. data/spec/unit/util/suidmanager_spec.rb +54 -45
  709. data/spec/unit/util/symbolic_file_mode_spec.rb +1 -0
  710. data/spec/unit/util/tag_set_spec.rb +1 -0
  711. data/spec/unit/util/tagging_spec.rb +1 -0
  712. data/spec/unit/util/terminal_spec.rb +10 -9
  713. data/spec/unit/util/user_attr_spec.rb +2 -1
  714. data/spec/unit/util/warnings_spec.rb +4 -3
  715. data/spec/unit/util/watcher/periodic_watcher_spec.rb +2 -2
  716. data/spec/unit/util/watcher_spec.rb +21 -51
  717. data/spec/unit/util/windows/access_control_entry_spec.rb +1 -0
  718. data/spec/unit/util/windows/access_control_list_spec.rb +1 -0
  719. data/spec/unit/util/windows/adsi_spec.rb +138 -136
  720. data/spec/unit/util/windows/api_types_spec.rb +1 -0
  721. data/spec/unit/util/windows/eventlog_spec.rb +12 -9
  722. data/spec/unit/util/windows/file_spec.rb +1 -0
  723. data/spec/unit/util/windows/root_certs_spec.rb +1 -0
  724. data/spec/unit/util/windows/security_descriptor_spec.rb +2 -0
  725. data/spec/unit/util/windows/service_spec.rb +103 -100
  726. data/spec/unit/util/windows/sid_spec.rb +13 -11
  727. data/spec/unit/util/windows/string_spec.rb +1 -0
  728. data/spec/unit/util_spec.rb +57 -55
  729. data/spec/unit/version_spec.rb +6 -6
  730. metadata +20 -32
  731. data/CODEOWNERS +0 -30
  732. data/ext/autotest/Rakefile +0 -8
  733. data/ext/autotest/config +0 -43
  734. data/ext/autotest/readme.rst +0 -16
  735. data/lib/puppet/confine/boolean.rb +0 -45
  736. data/lib/puppet/provider/package_targetable.rb +0 -68
  737. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load2.rb +0 -11
  738. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load3.rb +0 -11
  739. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load4.rb +0 -11
  740. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load5.rb +0 -12
  741. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/good_func_load.rb +0 -9
  742. data/spec/fixtures/unit/provider/package/pkgng/pkg.info +0 -7
  743. data/spec/fixtures/unit/provider/package/pkgng/pkg.query_absent +0 -1
  744. data/spec/integration/network/http_pool_spec.rb +0 -120
  745. data/spec/integration/provider/file/windows_spec.rb +0 -162
  746. data/spec/lib/puppet_spec/https.rb +0 -166
  747. data/spec/unit/settings/server_list_setting_spec.rb +0 -21
  748. data/spec/watchr.rb +0 -137
@@ -1,3 +1,4 @@
1
+ #! /usr/bin/env ruby
1
2
  require 'spec_helper'
2
3
  require 'puppet/util/character_encoding'
3
4
  require 'puppet_spec/character_encoding'
@@ -21,7 +22,7 @@ describe Puppet::Util::CharacterEncoding do
21
22
  let(:invalid_utf8_string) { "\xfd\xf1".force_encoding(Encoding::UTF_8) }
22
23
 
23
24
  it "should issue a debug message" do
24
- expect(Puppet).to receive(:debug).with(/encoding is invalid/)
25
+ Puppet.expects(:debug).with(regexp_matches(/encoding is invalid/))
25
26
  Puppet::Util::CharacterEncoding.convert_to_utf_8(invalid_utf8_string)
26
27
  end
27
28
 
@@ -80,7 +81,7 @@ describe Puppet::Util::CharacterEncoding do
80
81
  end
81
82
 
82
83
  it "should issue a debug message that the string was not transcodable" do
83
- expect(Puppet).to receive(:debug).with(/cannot be transcoded/)
84
+ Puppet.expects(:debug).with(regexp_matches(/cannot be transcoded/))
84
85
  PuppetSpec::CharacterEncoding.with_external_encoding(Encoding::Windows_31J) do
85
86
  Puppet::Util::CharacterEncoding.convert_to_utf_8(invalid_win_31j)
86
87
  end
@@ -124,7 +125,7 @@ describe Puppet::Util::CharacterEncoding do
124
125
  let(:euc_kr) { [253, 241].pack('C*').force_encoding(Encoding::ASCII) }
125
126
 
126
127
  it "should issue a debug message" do
127
- expect(Puppet).to receive(:debug).with(/cannot be transcoded/)
128
+ Puppet.expects(:debug).with(regexp_matches(/cannot be transcoded/))
128
129
  Puppet::Util::CharacterEncoding.convert_to_utf_8(euc_kr)
129
130
  end
130
131
 
@@ -166,9 +167,8 @@ describe Puppet::Util::CharacterEncoding do
166
167
  # Invalid in UTF-8 without transcoding
167
168
  let(:oslash) { [216].pack('C*').force_encoding(Encoding::ISO_8859_1) }
168
169
  let(:foo) { 'foo' }
169
-
170
170
  it "should issue a debug message" do
171
- expect(Puppet).to receive(:debug).with(/not valid UTF-8/)
171
+ Puppet.expects(:debug).with(regexp_matches(/not valid UTF-8/))
172
172
  Puppet::Util::CharacterEncoding.override_encoding_to_utf_8(oslash)
173
173
  end
174
174
 
@@ -1,3 +1,4 @@
1
+ #! /usr/bin/env ruby
1
2
  require 'spec_helper'
2
3
 
3
4
  require 'puppet/util/checksums'
@@ -68,34 +69,34 @@ describe Puppet::Util::Checksums do
68
69
  {:md5 => Digest::MD5, :sha1 => Digest::SHA1, :sha256 => Digest::SHA256, :sha512 => Digest::SHA512, :sha384 => Digest::SHA384}.each do |sum, klass|
69
70
  describe("when using #{sum}") do
70
71
  it "should use #{klass} to calculate string checksums" do
71
- expect(klass).to receive(:hexdigest).with("mycontent").and_return("whatever")
72
+ klass.expects(:hexdigest).with("mycontent").returns "whatever"
72
73
  expect(@summer.send(sum, "mycontent")).to eq("whatever")
73
74
  end
74
75
 
75
76
  it "should use incremental #{klass} sums to calculate file checksums" do
76
- digest = double('digest')
77
- expect(klass).to receive(:new).and_return(digest)
77
+ digest = mock 'digest'
78
+ klass.expects(:new).returns digest
78
79
 
79
80
  file = "/path/to/my/file"
80
81
 
81
- fh = double('filehandle')
82
- expect(fh).to receive(:read).with(4096).exactly(3).times().and_return("firstline", "secondline", nil)
82
+ fh = mock 'filehandle'
83
+ fh.expects(:read).with(4096).times(3).returns("firstline").then.returns("secondline").then.returns(nil)
83
84
 
84
- expect(File).to receive(:open).with(file, "rb").and_yield(fh)
85
+ File.expects(:open).with(file, "rb").yields(fh)
85
86
 
86
- expect(digest).to receive(:<<).with("firstline")
87
- expect(digest).to receive(:<<).with("secondline")
88
- expect(digest).to receive(:hexdigest).and_return(:mydigest)
87
+ digest.expects(:<<).with "firstline"
88
+ digest.expects(:<<).with "secondline"
89
+ digest.expects(:hexdigest).returns :mydigest
89
90
 
90
91
  expect(@summer.send(sum.to_s + "_file", file)).to eq(:mydigest)
91
92
  end
92
93
 
93
94
  it "should behave like #{klass} to calculate stream checksums" do
94
- digest = double('digest')
95
- expect(klass).to receive(:new).and_return(digest)
96
- expect(digest).to receive(:<<).with "firstline"
97
- expect(digest).to receive(:<<).with "secondline"
98
- expect(digest).to receive(:hexdigest).and_return(:mydigest)
95
+ digest = mock 'digest'
96
+ klass.expects(:new).returns digest
97
+ digest.expects(:<<).with "firstline"
98
+ digest.expects(:<<).with "secondline"
99
+ digest.expects(:hexdigest).returns :mydigest
99
100
 
100
101
  expect(@summer.send(sum.to_s + "_stream") do |checksum|
101
102
  checksum << "firstline"
@@ -109,33 +110,33 @@ describe Puppet::Util::Checksums do
109
110
  describe("when using #{sum}") do
110
111
  it "should use #{klass} to calculate string checksums from the first 512 characters of the string" do
111
112
  content = "this is a test" * 100
112
- expect(klass).to receive(:hexdigest).with(content[0..511]).and_return("whatever")
113
+ klass.expects(:hexdigest).with(content[0..511]).returns "whatever"
113
114
  expect(@summer.send(sum, content)).to eq("whatever")
114
115
  end
115
116
 
116
117
  it "should use #{klass} to calculate a sum from the first 512 characters in the file" do
117
- digest = double('digest')
118
- expect(klass).to receive(:new).and_return(digest)
118
+ digest = mock 'digest'
119
+ klass.expects(:new).returns digest
119
120
 
120
121
  file = "/path/to/my/file"
121
122
 
122
- fh = double('filehandle')
123
- expect(fh).to receive(:read).with(512).and_return('my content')
123
+ fh = mock 'filehandle'
124
+ fh.expects(:read).with(512).returns('my content')
124
125
 
125
- expect(File).to receive(:open).with(file, "rb").and_yield(fh)
126
+ File.expects(:open).with(file, "rb").yields(fh)
126
127
 
127
- expect(digest).to receive(:<<).with("my content")
128
- expect(digest).to receive(:hexdigest).and_return(:mydigest)
128
+ digest.expects(:<<).with "my content"
129
+ digest.expects(:hexdigest).returns :mydigest
129
130
 
130
131
  expect(@summer.send(sum.to_s + "_file", file)).to eq(:mydigest)
131
132
  end
132
133
 
133
134
  it "should use #{klass} to calculate a sum from the first 512 characters in a stream" do
134
- digest = double('digest')
135
+ digest = mock 'digest'
135
136
  content = "this is a test" * 100
136
- expect(klass).to receive(:new).and_return(digest)
137
- expect(digest).to receive(:<<).with(content[0..511])
138
- expect(digest).to receive(:hexdigest).and_return(:mydigest)
137
+ klass.expects(:new).returns digest
138
+ digest.expects(:<<).with content[0..511]
139
+ digest.expects(:hexdigest).returns :mydigest
139
140
 
140
141
  expect(@summer.send(sum.to_s + "_stream") do |checksum|
141
142
  checksum << content
@@ -143,13 +144,13 @@ describe Puppet::Util::Checksums do
143
144
  end
144
145
 
145
146
  it "should use #{klass} to calculate a sum from the first 512 characters in a multi-part stream" do
146
- digest = double('digest')
147
+ digest = mock 'digest'
147
148
  content = "this is a test" * 100
148
- expect(klass).to receive(:new).and_return(digest)
149
- expect(digest).to receive(:<<).with(content[0..5])
150
- expect(digest).to receive(:<<).with(content[6..510])
151
- expect(digest).to receive(:<<).with(content[511..511])
152
- expect(digest).to receive(:hexdigest).and_return(:mydigest)
149
+ klass.expects(:new).returns digest
150
+ digest.expects(:<<).with content[0..5]
151
+ digest.expects(:<<).with content[6..510]
152
+ digest.expects(:<<).with content[511..511]
153
+ digest.expects(:hexdigest).returns :mydigest
153
154
 
154
155
  expect(@summer.send(sum.to_s + "_stream") do |checksum|
155
156
  checksum << content[0..5]
@@ -164,15 +165,15 @@ describe Puppet::Util::Checksums do
164
165
  describe("when using #{sum}") do
165
166
  it "should use the '#{sum}' on the file to determine the ctime" do
166
167
  file = "/my/file"
167
- stat = double('stat', sum => "mysum")
168
- expect(Puppet::FileSystem).to receive(:stat).with(file).and_return(stat)
168
+ stat = mock 'stat', sum => "mysum"
169
+ Puppet::FileSystem.expects(:stat).with(file).returns(stat)
169
170
 
170
171
  expect(@summer.send(sum.to_s + "_file", file)).to eq("mysum")
171
172
  end
172
173
 
173
174
  it "should return nil for streams" do
174
- expectation = double("expectation")
175
- expect(expectation).to receive(:do_something!).at_least(:once)
175
+ expectation = stub "expectation"
176
+ expectation.expects(:do_something!).at_least_once
176
177
  expect(@summer.send(sum.to_s + "_stream"){ |checksum| checksum << "anything" ; expectation.do_something! }).to be_nil
177
178
  end
178
179
  end
@@ -184,8 +185,8 @@ describe Puppet::Util::Checksums do
184
185
  end
185
186
 
186
187
  it "should return an empty string for streams" do
187
- expectation = double("expectation")
188
- expect(expectation).to receive(:do_something!).at_least(:once)
188
+ expectation = stub "expectation"
189
+ expectation.expects(:do_something!).at_least_once
189
190
  expect(@summer.none_stream{ |checksum| checksum << "anything" ; expectation.do_something! }).to eq("")
190
191
  end
191
192
  end
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env ruby
1
2
  require 'spec_helper'
2
3
 
3
4
  describe Puppet::Util::Colors do
@@ -30,7 +31,7 @@ describe Puppet::Util::Colors do
30
31
  it "should colorize console output" do
31
32
  Puppet[:color] = true
32
33
 
33
- expect(subject).to receive(:console_color).with(color, message)
34
+ subject.expects(:console_color).with(color, message)
34
35
  subject.colorize(:black, message)
35
36
  end
36
37
 
@@ -1,3 +1,4 @@
1
+ #! /usr/bin/env ruby
1
2
  require 'spec_helper'
2
3
 
3
4
  require 'puppet/face'
@@ -66,37 +67,16 @@ describe Puppet::Util::CommandLine do
66
67
  end
67
68
  end
68
69
 
69
- %w{--help -h help}.each do|arg|
70
- it "should print help and exit if #{arg} is given" do
70
+ %w{--help -h}.each do|arg|
71
+ it "should print help" do
71
72
  commandline = Puppet::Util::CommandLine.new("puppet", [arg])
72
- expect(commandline).not_to receive(:exec)
73
+ commandline.expects(:exec).never
73
74
 
74
75
  expect {
75
76
  commandline.execute
76
77
  }.to have_printed(/Usage: puppet <subcommand> \[options\] <action> \[options\]/).and_exit_with(0)
77
78
  end
78
79
  end
79
-
80
- it "should fail if the config file isn't readable and we're running a subcommand that requires a readable config file" do
81
- allow(Puppet::FileSystem).to receive(:exist?).with(Puppet[:config]).and_return(true)
82
- allow_any_instance_of(Puppet::Settings).to receive(:read_file).and_return('')
83
- expect_any_instance_of(Puppet::Settings).to receive(:read_file).with(Puppet[:config]).and_raise('Permission denied')
84
-
85
- expect{ described_class.new("puppet", ['config']).execute }.to raise_error(SystemExit)
86
- end
87
-
88
- it "should not fail if the config file isn't readable and we're running a subcommand that does not require a readable config file" do
89
- allow(Puppet::FileSystem).to receive(:exist?)
90
- allow(Puppet::FileSystem).to receive(:exist?).with(Puppet[:config]).and_return(true)
91
- allow_any_instance_of(Puppet::Settings).to receive(:read_file).and_return('')
92
- expect_any_instance_of(Puppet::Settings).to receive(:read_file).with(Puppet[:config]).and_raise('Permission denied')
93
-
94
- commandline = described_class.new("puppet", ['help'])
95
-
96
- expect {
97
- commandline.execute
98
- }.to have_printed(/Usage: puppet <subcommand> \[options\] <action> \[options\]/).and_exit_with(0)
99
- end
100
80
  end
101
81
 
102
82
  describe "when dealing with puppet commands" do
@@ -108,19 +88,19 @@ describe Puppet::Util::CommandLine do
108
88
  describe "when the subcommand is not implemented" do
109
89
  it "should find and invoke an executable with a hyphenated name" do
110
90
  commandline = Puppet::Util::CommandLine.new("puppet", ['whatever', 'argument'])
111
- expect(Puppet::Util).to receive(:which).with('puppet-whatever').
112
- and_return('/dev/null/puppet-whatever')
91
+ Puppet::Util.expects(:which).with('puppet-whatever').
92
+ returns('/dev/null/puppet-whatever')
113
93
 
114
- expect(Kernel).to receive(:exec).with('/dev/null/puppet-whatever', 'argument')
94
+ Kernel.expects(:exec).with('/dev/null/puppet-whatever', 'argument')
115
95
 
116
96
  commandline.execute
117
97
  end
118
98
 
119
99
  describe "and an external implementation cannot be found" do
120
100
  it "should abort and show the usage message" do
121
- expect(Puppet::Util).to receive(:which).with('puppet-whatever').and_return(nil)
101
+ Puppet::Util.expects(:which).with('puppet-whatever').returns(nil)
122
102
  commandline = Puppet::Util::CommandLine.new("puppet", ['whatever', 'argument'])
123
- expect(commandline).not_to receive(:exec)
103
+ commandline.expects(:exec).never
124
104
 
125
105
  expect {
126
106
  commandline.execute
@@ -128,9 +108,9 @@ describe Puppet::Util::CommandLine do
128
108
  end
129
109
 
130
110
  it "should abort and show the help message" do
131
- expect(Puppet::Util).to receive(:which).with('puppet-whatever').and_return(nil)
111
+ Puppet::Util.expects(:which).with('puppet-whatever').returns(nil)
132
112
  commandline = Puppet::Util::CommandLine.new("puppet", ['whatever', 'argument'])
133
- expect(commandline).not_to receive(:exec)
113
+ commandline.expects(:exec).never
134
114
 
135
115
  expect {
136
116
  commandline.execute
@@ -139,9 +119,9 @@ describe Puppet::Util::CommandLine do
139
119
 
140
120
  %w{--version -V}.each do |arg|
141
121
  it "should abort and display #{arg} information" do
142
- expect(Puppet::Util).to receive(:which).with('puppet-whatever').and_return(nil)
122
+ Puppet::Util.expects(:which).with('puppet-whatever').returns(nil)
143
123
  commandline = Puppet::Util::CommandLine.new("puppet", ['whatever', arg])
144
- expect(commandline).not_to receive(:exec)
124
+ commandline.expects(:exec).never
145
125
 
146
126
  expect {
147
127
  commandline.execute
@@ -157,11 +137,11 @@ describe Puppet::Util::CommandLine do
157
137
  end
158
138
 
159
139
  before :each do
160
- allow_any_instance_of(Puppet::Util::CommandLine::ApplicationSubcommand).to receive(:run)
140
+ Puppet::Util::CommandLine::ApplicationSubcommand.any_instance.stubs(:run)
161
141
  end
162
142
 
163
143
  it 'should never set priority by default' do
164
- expect(Process).not_to receive(:setpriority)
144
+ Process.expects(:setpriority).never
165
145
 
166
146
  command_line.execute
167
147
  end
@@ -169,15 +149,15 @@ describe Puppet::Util::CommandLine do
169
149
  it 'should lower the process priority if one has been specified' do
170
150
  Puppet[:priority] = 10
171
151
 
172
- expect(Process).to receive(:setpriority).with(0, Process.pid, 10)
152
+ Process.expects(:setpriority).with(0, Process.pid, 10)
173
153
  command_line.execute
174
154
  end
175
155
 
176
156
  it 'should warn if trying to raise priority, but not privileged user' do
177
157
  Puppet[:priority] = -10
178
158
 
179
- expect(Process).to receive(:setpriority).and_raise(Errno::EACCES, 'Permission denied')
180
- expect(Puppet).to receive(:warning).with("Failed to set process priority to '-10'")
159
+ Process.expects(:setpriority).raises(Errno::EACCES, 'Permission denied')
160
+ Puppet.expects(:warning).with("Failed to set process priority to '-10'")
181
161
 
182
162
  command_line.execute
183
163
  end
@@ -185,8 +165,8 @@ describe Puppet::Util::CommandLine do
185
165
  it "should warn if the platform doesn't support `Process.setpriority`" do
186
166
  Puppet[:priority] = 15
187
167
 
188
- expect(Process).to receive(:setpriority).and_raise(NotImplementedError, 'NotImplementedError: setpriority() function is unimplemented on this machine')
189
- expect(Puppet).to receive(:warning).with("Failed to set process priority to '15'")
168
+ Process.expects(:setpriority).raises(NotImplementedError, 'NotImplementedError: setpriority() function is unimplemented on this machine')
169
+ Puppet.expects(:warning).with("Failed to set process priority to '15'")
190
170
 
191
171
  command_line.execute
192
172
  end
@@ -1,3 +1,4 @@
1
+ #! /usr/bin/env ruby
1
2
  require 'spec_helper'
2
3
 
3
4
  require 'puppet/util/constant_inflector'
@@ -1,3 +1,4 @@
1
+ #! /usr/bin/env ruby
1
2
  require 'spec_helper'
2
3
  require 'puppet/util/diff'
3
4
  require 'puppet/util/execution'
@@ -10,9 +11,9 @@ describe Puppet::Util::Diff do
10
11
  Puppet[:diff] = 'foo'
11
12
  Puppet[:diff_args] = 'bar'
12
13
 
13
- expect(Puppet::Util::Execution).to receive(:execute)
14
+ Puppet::Util::Execution.expects(:execute)
14
15
  .with(['foo', 'bar', 'a', 'b'], {:failonfail => false, :combine => false})
15
- .and_return(baz_output)
16
+ .returns(baz_output)
16
17
  expect(subject.diff('a', 'b')).to eq('baz')
17
18
  end
18
19
 
@@ -20,9 +21,9 @@ describe Puppet::Util::Diff do
20
21
  Puppet[:diff] = 'foo'
21
22
  Puppet[:diff_args] = 'bar qux'
22
23
 
23
- expect(Puppet::Util::Execution).to receive(:execute)
24
+ Puppet::Util::Execution.expects(:execute)
24
25
  .with(['foo', 'bar', 'qux', 'a', 'b'], anything)
25
- .and_return(baz_output)
26
+ .returns(baz_output)
26
27
  expect(subject.diff('a', 'b')).to eq('baz')
27
28
  end
28
29
 
@@ -30,16 +31,16 @@ describe Puppet::Util::Diff do
30
31
  Puppet[:diff] = 'foo'
31
32
  Puppet[:diff_args] = ''
32
33
 
33
- expect(Puppet::Util::Execution).to receive(:execute)
34
+ Puppet::Util::Execution.expects(:execute)
34
35
  .with(['foo', 'a', 'b'], {:failonfail => false, :combine => false})
35
- .and_return(baz_output)
36
+ .returns(baz_output)
36
37
  expect(subject.diff('a', 'b')).to eq('baz')
37
38
  end
38
39
 
39
40
  it "should return empty string if the diff command is empty" do
40
41
  Puppet[:diff] = ''
41
42
 
42
- expect(Puppet::Util::Execution).not_to receive(:execute)
43
+ Puppet::Util::Execution.expects(:execute).never
43
44
  expect(subject.diff('a', 'b')).to eq('')
44
45
  end
45
46
  end
@@ -1,3 +1,4 @@
1
+ #! /usr/bin/env ruby
1
2
  require 'spec_helper'
2
3
 
3
4
  require 'puppet/util/errors'
@@ -1,3 +1,4 @@
1
+ #! /usr/bin/env ruby
1
2
  # encoding: UTF-8
2
3
  require 'spec_helper'
3
4
  require 'puppet/file_system/uniquefile'
@@ -5,12 +6,10 @@ require 'puppet_spec/character_encoding'
5
6
 
6
7
  describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
7
8
  include Puppet::Util::Execution
8
-
9
9
  # utility methods to help us test some private methods without being quite so verbose
10
10
  def call_exec_posix(command, arguments, stdin, stdout, stderr)
11
11
  Puppet::Util::Execution.send(:execute_posix, command, arguments, stdin, stdout, stderr)
12
12
  end
13
-
14
13
  def call_exec_windows(command, arguments, stdin, stdout, stderr)
15
14
  Puppet::Util::Execution.send(:execute_windows, command, arguments, stdin, stdout, stderr)
16
15
  end
@@ -19,35 +18,36 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
19
18
  let(:pid) { 5501 }
20
19
  let(:process_handle) { 0xDEADBEEF }
21
20
  let(:thread_handle) { 0xCAFEBEEF }
22
- let(:proc_info_stub) { double('processinfo', :process_handle => process_handle, :thread_handle => thread_handle, :process_id => pid) }
21
+ let(:proc_info_stub) { stub 'processinfo', :process_handle => process_handle, :thread_handle => thread_handle, :process_id => pid}
23
22
  let(:null_file) { Puppet::Util::Platform.windows? ? 'NUL' : '/dev/null' }
24
23
 
25
24
  def stub_process_wait(exitstatus)
26
25
  if Puppet::Util::Platform.windows?
27
- allow(Puppet::Util::Windows::Process).to receive(:wait_process).with(process_handle).and_return(exitstatus)
28
- allow(FFI::WIN32).to receive(:CloseHandle).with(process_handle)
29
- allow(FFI::WIN32).to receive(:CloseHandle).with(thread_handle)
26
+ Puppet::Util::Windows::Process.stubs(:wait_process).with(process_handle).returns(exitstatus)
27
+ FFI::WIN32.stubs(:CloseHandle).with(process_handle)
28
+ FFI::WIN32.stubs(:CloseHandle).with(thread_handle)
30
29
  else
31
- allow(Process).to receive(:waitpid2).with(pid, Process::WNOHANG).and_return(nil, [pid, double('child_status', :exitstatus => exitstatus)])
32
- allow(Process).to receive(:waitpid2).with(pid).and_return([pid, double('child_status', :exitstatus => exitstatus)])
30
+ Process.stubs(:waitpid2).with(pid, Process::WNOHANG).returns(nil, [pid, stub('child_status', :exitstatus => exitstatus)])
31
+ Process.stubs(:waitpid2).with(pid).returns([pid, stub('child_status', :exitstatus => exitstatus)])
33
32
  end
34
33
  end
35
34
 
35
+
36
36
  describe "#execute_posix (stubs)", :unless => Puppet::Util::Platform.windows? do
37
37
  before :each do
38
38
  # Most of the things this method does are bad to do during specs. :/
39
- allow(Kernel).to receive(:fork).and_return(pid).and_yield
40
- allow(Process).to receive(:setsid)
41
- allow(Kernel).to receive(:exec)
42
- allow(Puppet::Util::SUIDManager).to receive(:change_user)
43
- allow(Puppet::Util::SUIDManager).to receive(:change_group)
39
+ Kernel.stubs(:fork).returns(pid).yields
40
+ Process.stubs(:setsid)
41
+ Kernel.stubs(:exec)
42
+ Puppet::Util::SUIDManager.stubs(:change_user)
43
+ Puppet::Util::SUIDManager.stubs(:change_group)
44
44
 
45
45
  # ensure that we don't really close anything!
46
- allow(IO).to receive(:new)
46
+ (0..256).each {|n| IO.stubs(:new) }
47
47
 
48
- allow($stdin).to receive(:reopen)
49
- allow($stdout).to receive(:reopen)
50
- allow($stderr).to receive(:reopen)
48
+ $stdin.stubs(:reopen)
49
+ $stdout.stubs(:reopen)
50
+ $stderr.stubs(:reopen)
51
51
 
52
52
  @stdin = File.open(null_file, 'r')
53
53
  @stdout = Puppet::FileSystem::Uniquefile.new('stdout')
@@ -80,41 +80,41 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
80
80
 
81
81
 
82
82
  it "should fork a child process to execute the command" do
83
- expect(Kernel).to receive(:fork).and_return(pid).and_yield
84
- expect(Kernel).to receive(:exec).with('test command')
83
+ Kernel.expects(:fork).returns(pid).yields
84
+ Kernel.expects(:exec).with('test command')
85
85
 
86
86
  call_exec_posix('test command', {}, @stdin, @stdout, @stderr)
87
87
  end
88
88
 
89
89
  it "should start a new session group" do
90
- expect(Process).to receive(:setsid)
90
+ Process.expects(:setsid)
91
91
 
92
92
  call_exec_posix('test command', {}, @stdin, @stdout, @stderr)
93
93
  end
94
94
 
95
95
  it "should permanently change to the correct user and group if specified" do
96
- expect(Puppet::Util::SUIDManager).to receive(:change_group).with(55, true)
97
- expect(Puppet::Util::SUIDManager).to receive(:change_user).with(50, true)
96
+ Puppet::Util::SUIDManager.expects(:change_group).with(55, true)
97
+ Puppet::Util::SUIDManager.expects(:change_user).with(50, true)
98
98
 
99
99
  call_exec_posix('test command', {:uid => 50, :gid => 55}, @stdin, @stdout, @stderr)
100
100
  end
101
101
 
102
102
  it "should exit failure if there is a problem execing the command" do
103
- expect(Kernel).to receive(:exec).with('test command').and_raise("failed to execute!")
104
- allow(Puppet::Util::Execution).to receive(:puts)
105
- expect(Puppet::Util::Execution).to receive(:exit!).with(1)
103
+ Kernel.expects(:exec).with('test command').raises("failed to execute!")
104
+ Puppet::Util::Execution.stubs(:puts)
105
+ Puppet::Util::Execution.expects(:exit!).with(1)
106
106
 
107
107
  call_exec_posix('test command', {}, @stdin, @stdout, @stderr)
108
108
  end
109
109
 
110
110
  it "should properly execute commands specified as arrays" do
111
- expect(Kernel).to receive(:exec).with('test command', 'with', 'arguments')
111
+ Kernel.expects(:exec).with('test command', 'with', 'arguments')
112
112
 
113
113
  call_exec_posix(['test command', 'with', 'arguments'], {:uid => 50, :gid => 55}, @stdin, @stdout, @stderr)
114
114
  end
115
115
 
116
116
  it "should properly execute string commands with embedded newlines" do
117
- expect(Kernel).to receive(:exec).with("/bin/echo 'foo' ; \n /bin/echo 'bar' ;")
117
+ Kernel.expects(:exec).with("/bin/echo 'foo' ; \n /bin/echo 'bar' ;")
118
118
 
119
119
  call_exec_posix("/bin/echo 'foo' ; \n /bin/echo 'bar' ;", {:uid => 50, :gid => 55}, @stdin, @stdout, @stderr)
120
120
  end
@@ -123,8 +123,8 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
123
123
  let(:cwd) { 'cwd' }
124
124
 
125
125
  it 'should run the command in the specified working directory' do
126
- expect(Dir).to receive(:chdir).with(cwd)
127
- expect(Kernel).to receive(:exec).with('test command')
126
+ Dir.expects(:chdir).with(cwd)
127
+ Kernel.expects(:exec).with('test command')
128
128
 
129
129
  call_exec_posix('test command', { :cwd => cwd }, @stdin, @stdout, @stderr)
130
130
  end
@@ -137,7 +137,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
137
137
 
138
138
  describe "#execute_windows (stubs)", :if => Puppet::Util::Platform.windows? do
139
139
  before :each do
140
- allow(Process).to receive(:create).and_return(proc_info_stub)
140
+ Process.stubs(:create).returns(proc_info_stub)
141
141
  stub_process_wait(0)
142
142
 
143
143
  @stdin = File.open(null_file, 'r')
@@ -146,11 +146,11 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
146
146
  end
147
147
 
148
148
  it "should create a new process for the command" do
149
- expect(Process).to receive(:create).with(
149
+ Process.expects(:create).with(
150
150
  :command_line => "test command",
151
151
  :startup_info => {:stdin => @stdin, :stdout => @stdout, :stderr => @stderr},
152
152
  :close_handles => false
153
- ).and_return(proc_info_stub)
153
+ ).returns(proc_info_stub)
154
154
 
155
155
  call_exec_windows('test command', {}, @stdin, @stdout, @stderr)
156
156
  end
@@ -158,15 +158,15 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
158
158
  context 'cwd option' do
159
159
  let(:cwd) { 'cwd' }
160
160
  it "should execute the command in the specified working directory" do
161
- expect(Process).to receive(:create).with(
161
+ Dir.expects(:chdir).with(cwd).yields
162
+ Process.expects(:create).with(
162
163
  :command_line => "test command",
163
164
  :startup_info => {
164
165
  :stdin => @stdin,
165
166
  :stdout => @stdout,
166
167
  :stderr => @stderr
167
168
  },
168
- :close_handles => false,
169
- :cwd => cwd
169
+ :close_handles => false
170
170
  )
171
171
 
172
172
  call_exec_windows('test command', { :cwd => cwd }, @stdin, @stdout, @stderr)
@@ -176,7 +176,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
176
176
  context 'suppress_window option' do
177
177
  let(:cwd) { 'cwd' }
178
178
  it "should execute the command in the specified working directory" do
179
- expect(Process).to receive(:create).with(
179
+ Process.expects(:create).with(
180
180
  :command_line => "test command",
181
181
  :startup_info => {
182
182
  :stdin => @stdin,
@@ -196,7 +196,9 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
196
196
  end
197
197
 
198
198
  it "should quote arguments containing spaces if command is specified as an array" do
199
- expect(Process).to receive(:create).with(hash_including(command_line: '"test command" with some "arguments \"with spaces"')).and_return(proc_info_stub)
199
+ Process.expects(:create).with do |args|
200
+ args[:command_line] == '"test command" with some "arguments \"with spaces"'
201
+ end.returns(proc_info_stub)
200
202
 
201
203
  call_exec_windows(['test command', 'with', 'some', 'arguments "with spaces'], {}, @stdin, @stdout, @stderr)
202
204
  end
@@ -219,8 +221,8 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
219
221
  end
220
222
 
221
223
  it "should not actually execute anything" do
222
- expect(Puppet::Util::Execution).not_to receive(:execute_posix)
223
- expect(Puppet::Util::Execution).not_to receive(:execute_windows)
224
+ Puppet::Util::Execution.expects(:execute_posix).never
225
+ Puppet::Util::Execution.expects(:execute_windows).never
224
226
 
225
227
  Puppet::Util::Execution.execute("/usr/bin/run_my_execute_stub")
226
228
  end
@@ -232,37 +234,33 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
232
234
  let(:rval) { Puppet::Util::Platform.windows? ? proc_info_stub : pid }
233
235
 
234
236
  before :each do
235
- allow(Puppet::Util::Execution).to receive(:wait_for_output)
237
+ Puppet::Util::Execution.stubs(:wait_for_output)
236
238
  end
237
239
 
238
240
  it "should set stdin to the stdinfile if specified" do
239
241
  input = tmpfile('stdin')
240
242
  FileUtils.touch(input)
241
243
 
242
- expect(Puppet::Util::Execution).to receive(executor) do |_,_,stdin,_,_|
243
- expect(stdin.path).to eq(input)
244
- rval
245
- end
244
+ Puppet::Util::Execution.expects(executor).with do |_,_,stdin,_,_|
245
+ stdin.path == input
246
+ end.returns(rval)
246
247
 
247
248
  Puppet::Util::Execution.execute('test command', :stdinfile => input)
248
249
  end
249
250
 
250
251
  it "should set stdin to the null file if not specified" do
251
- expect(Puppet::Util::Execution).to receive(executor) do |_,_,stdin,_,_|
252
- expect(stdin.path).to eq(null_file)
253
- rval
254
- end
252
+ Puppet::Util::Execution.expects(executor).with do |_,_,stdin,_,_|
253
+ stdin.path == null_file
254
+ end.returns(rval)
255
255
 
256
256
  Puppet::Util::Execution.execute('test command')
257
257
  end
258
258
 
259
259
  describe "when squelch is set" do
260
260
  it "should set stdout and stderr to the null file" do
261
- expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
262
- expect(stdout.path).to eq(null_file)
263
- expect(stderr.path).to eq(null_file)
264
- rval
265
- end
261
+ Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
262
+ stdout.path == null_file and stderr.path == null_file
263
+ end.returns(rval)
266
264
 
267
265
  Puppet::Util::Execution.execute('test command', :squelch => true)
268
266
  end
@@ -270,18 +268,18 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
270
268
 
271
269
  describe "cwd option" do
272
270
  def expect_cwd_to_be(cwd)
273
- expect(Puppet::Util::Execution).to receive(executor).with(
271
+ Puppet::Util::Execution.expects(executor).with(
274
272
  anything,
275
- hash_including(cwd: cwd),
273
+ has_entries(:cwd => cwd),
276
274
  anything,
277
275
  anything,
278
276
  anything
279
- ).and_return(rval)
277
+ ).returns(rval)
280
278
  end
281
279
 
282
280
  it 'should raise an ArgumentError if the specified working directory does not exist' do
283
281
  cwd = 'cwd'
284
- allow(Puppet::FileSystem).to receive(:directory?).with(cwd).and_return(false)
282
+ Puppet::FileSystem.stubs(:directory?).with(cwd).returns(false)
285
283
 
286
284
  expect {
287
285
  Puppet::Util::Execution.execute('test command', cwd: cwd)
@@ -292,7 +290,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
292
290
  end
293
291
 
294
292
  it "should set the cwd to the user-specified one" do
295
- allow(Puppet::FileSystem).to receive(:directory?).with('cwd').and_return(true)
293
+ Puppet::FileSystem.stubs(:directory?).with('cwd').returns(true)
296
294
  expect_cwd_to_be('cwd')
297
295
  Puppet::Util::Execution.execute('test command', cwd: 'cwd')
298
296
  end
@@ -301,55 +299,49 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
301
299
  describe "on POSIX", :if => Puppet.features.posix? do
302
300
  describe "when squelch is not set" do
303
301
  it "should set stdout to a pipe" do
304
- expect(Puppet::Util::Execution).to receive(executor).with(anything, anything, anything, be_a(IO), anything).and_return(rval)
302
+ Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,_|
303
+ stdout.class == IO
304
+ end.returns(rval)
305
305
 
306
306
  Puppet::Util::Execution.execute('test command', :squelch => false)
307
307
  end
308
308
 
309
309
  it "should set stderr to the same file as stdout if combine is true" do
310
- expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
311
- expect(stdout).to eq(stderr)
312
- rval
313
- end
310
+ Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
311
+ stdout == stderr
312
+ end.returns(rval)
314
313
 
315
314
  Puppet::Util::Execution.execute('test command', :squelch => false, :combine => true)
316
315
  end
317
316
 
318
317
  it "should set stderr to the null device if combine is false" do
319
- expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
320
- expect(stdout.class).to eq(IO)
321
- expect(stderr.path).to eq(null_file)
322
- rval
323
- end
318
+ Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
319
+ stdout.class == IO and stderr.path == null_file
320
+ end.returns(rval)
324
321
 
325
322
  Puppet::Util::Execution.execute('test command', :squelch => false, :combine => false)
326
323
  end
327
324
 
328
325
  it "should default combine to true when no options are specified" do
329
- expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
330
- expect(stdout).to eq(stderr)
331
- rval
332
- end
326
+ Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
327
+ stdout == stderr
328
+ end.returns(rval)
333
329
 
334
330
  Puppet::Util::Execution.execute('test command')
335
331
  end
336
332
 
337
333
  it "should default combine to false when options are specified, but combine is not" do
338
- expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
339
- expect(stdout.class).to eq(IO)
340
- expect(stderr.path).to eq(null_file)
341
- rval
342
- end
334
+ Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
335
+ stdout.class == IO and stderr.path == null_file
336
+ end.returns(rval)
343
337
 
344
338
  Puppet::Util::Execution.execute('test command', :failonfail => false)
345
339
  end
346
340
 
347
341
  it "should default combine to false when an empty hash of options is specified" do
348
- expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
349
- expect(stdout.class).to eq(IO)
350
- expect(stderr.path).to eq(null_file)
351
- rval
352
- end
342
+ Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
343
+ stdout.class == IO and stderr.path == null_file
344
+ end.returns(rval)
353
345
 
354
346
  Puppet::Util::Execution.execute('test command', {})
355
347
  end
@@ -360,90 +352,77 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
360
352
  describe "when squelch is not set" do
361
353
  it "should set stdout to a temporary output file" do
362
354
  outfile = Puppet::FileSystem::Uniquefile.new('stdout')
363
- allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(outfile)
355
+ Puppet::FileSystem::Uniquefile.stubs(:new).returns(outfile)
364
356
 
365
- expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,_|
366
- expect(stdout.path).to eq(outfile.path)
367
- rval
368
- end
357
+ Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,_|
358
+ stdout.path == outfile.path
359
+ end.returns(rval)
369
360
 
370
361
  Puppet::Util::Execution.execute('test command', :squelch => false)
371
362
  end
372
363
 
373
364
  it "should set stderr to the same file as stdout if combine is true" do
374
365
  outfile = Puppet::FileSystem::Uniquefile.new('stdout')
375
- allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(outfile)
366
+ Puppet::FileSystem::Uniquefile.stubs(:new).returns(outfile)
376
367
 
377
- expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
378
- expect(stdout.path).to eq(outfile.path)
379
- expect(stderr.path).to eq(outfile.path)
380
- rval
381
- end
368
+ Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
369
+ stdout.path == outfile.path and stderr.path == outfile.path
370
+ end.returns(rval)
382
371
 
383
372
  Puppet::Util::Execution.execute('test command', :squelch => false, :combine => true)
384
373
  end
385
374
 
386
375
  it "should set stderr to the null device if combine is false" do
387
376
  outfile = Puppet::FileSystem::Uniquefile.new('stdout')
388
- allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(outfile)
377
+ Puppet::FileSystem::Uniquefile.stubs(:new).returns(outfile)
389
378
 
390
- expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
391
- expect(stdout.path).to eq(outfile.path)
392
- expect(stderr.path).to eq(null_file)
393
- rval
394
- end
379
+ Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
380
+ stdout.path == outfile.path and stderr.path == null_file
381
+ end.returns(rval)
395
382
 
396
383
  Puppet::Util::Execution.execute('test command', :squelch => false, :combine => false)
397
384
  end
398
385
 
399
386
  it "should combine stdout and stderr if combine is true" do
400
387
  outfile = Puppet::FileSystem::Uniquefile.new('stdout')
401
- allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(outfile)
388
+ Puppet::FileSystem::Uniquefile.stubs(:new).returns(outfile)
402
389
 
403
- expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
404
- expect(stdout.path).to eq(outfile.path)
405
- expect(stderr.path).to eq(outfile.path)
406
- rval
407
- end
390
+ Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
391
+ stdout.path == outfile.path and stderr.path == outfile.path
392
+ end.returns(rval)
408
393
 
409
394
  Puppet::Util::Execution.execute('test command', :combine => true)
410
395
  end
411
396
 
412
397
  it "should default combine to true when no options are specified" do
413
398
  outfile = Puppet::FileSystem::Uniquefile.new('stdout')
414
- allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(outfile)
399
+ Puppet::FileSystem::Uniquefile.stubs(:new).returns(outfile)
415
400
 
416
- expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
417
- expect(stdout.path).to eq(outfile.path)
418
- expect(stderr.path).to eq(outfile.path)
419
- rval
420
- end
401
+ Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
402
+ stdout.path == outfile.path and stderr.path == outfile.path
403
+ end.returns(rval)
421
404
 
422
405
  Puppet::Util::Execution.execute('test command')
423
406
  end
424
407
 
425
408
  it "should default combine to false when options are specified, but combine is not" do
426
409
  outfile = Puppet::FileSystem::Uniquefile.new('stdout')
427
- allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(outfile)
410
+ Puppet::FileSystem::Uniquefile.stubs(:new).returns(outfile)
428
411
 
429
- expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
430
- expect(stdout.path).to eq(outfile.path)
431
- expect(stderr.path).to eq(null_file)
432
- rval
433
- end
412
+ Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
413
+ stdout.path == outfile.path and stderr.path == null_file
414
+ end.returns(rval)
434
415
 
435
416
  Puppet::Util::Execution.execute('test command', :failonfail => false)
436
417
  end
437
418
 
438
419
  it "should default combine to false when an empty hash of options is specified" do
439
420
  outfile = Puppet::FileSystem::Uniquefile.new('stdout')
440
- allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(outfile)
421
+ Puppet::FileSystem::Uniquefile.stubs(:new).returns(outfile)
441
422
 
442
- expect(Puppet::Util::Execution).to receive(executor) do |_,_,_,stdout,stderr|
443
- expect(stdout.path).to eq(outfile.path)
444
- expect(stderr.path).to eq(null_file)
445
- rval
446
- end
423
+ Puppet::Util::Execution.expects(executor).with do |_,_,_,stdout,stderr|
424
+ stdout.path == outfile.path and stderr.path == null_file
425
+ end.returns(rval)
447
426
 
448
427
  Puppet::Util::Execution.execute('test command', {})
449
428
  end
@@ -453,11 +432,11 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
453
432
 
454
433
  describe "on Windows", :if => Puppet::Util::Platform.windows? do
455
434
  it "should always close the process and thread handles" do
456
- allow(Puppet::Util::Execution).to receive(:execute_windows).and_return(proc_info_stub)
435
+ Puppet::Util::Execution.stubs(:execute_windows).returns(proc_info_stub)
457
436
 
458
- expect(Puppet::Util::Windows::Process).to receive(:wait_process).with(process_handle).and_raise('whatever')
459
- expect(FFI::WIN32).to receive(:CloseHandle).with(thread_handle)
460
- expect(FFI::WIN32).to receive(:CloseHandle).with(process_handle)
437
+ Puppet::Util::Windows::Process.expects(:wait_process).with(process_handle).raises('whatever')
438
+ FFI::WIN32.expects(:CloseHandle).with(thread_handle)
439
+ FFI::WIN32.expects(:CloseHandle).with(process_handle)
461
440
 
462
441
  expect { Puppet::Util::Execution.execute('test command') }.to raise_error(RuntimeError)
463
442
  end
@@ -465,9 +444,9 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
465
444
  it "should return the correct exit status even when exit status is greater than 256" do
466
445
  real_exit_status = 3010
467
446
 
468
- allow(Puppet::Util::Execution).to receive(:execute_windows).and_return(proc_info_stub)
447
+ Puppet::Util::Execution.stubs(:execute_windows).returns(proc_info_stub)
469
448
  stub_process_wait(real_exit_status)
470
- allow(Puppet::Util::Execution).to receive(:exitstatus).and_return(real_exit_status % 256) # The exitstatus is changed to be mod 256 so that ruby can fit it into 8 bits.
449
+ Puppet::Util::Execution.stubs(:exitstatus).returns(real_exit_status % 256) # The exitstatus is changed to be mod 256 so that ruby can fit it into 8 bits.
471
450
 
472
451
  expect(Puppet::Util::Execution.execute('test command', :failonfail => false).exitstatus).to eq(real_exit_status)
473
452
  end
@@ -475,6 +454,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
475
454
  end
476
455
 
477
456
  describe "#execute (posix locale)", :unless => Puppet::Util::Platform.windows? do
457
+
478
458
  before :each do
479
459
  # there is a danger here that ENV will be modified by exec_posix. Normally it would only affect the ENV
480
460
  # of a forked process, but, in some of the previous tests in this file we're stubbing Kernel.fork., which could
@@ -493,6 +473,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
493
473
  expect(cur_env.keys - @saved_env.keys).to eq([])
494
474
  end
495
475
 
476
+
496
477
  # build up a printf-style string that contains a command to get the value of an environment variable
497
478
  # from the operating system. We can substitute into this with the names of the desired environment variables later.
498
479
  get_env_var_cmd = 'echo $%s'
@@ -593,6 +574,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
593
574
  # ensure that after the exec, our temporary env is still intact
594
575
  expect(ENV[var]).to eq(user_sentinel_env[var])
595
576
  end
577
+
596
578
  end
597
579
  end
598
580
 
@@ -618,6 +600,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
618
600
  expect(ENV[var]).to eq(user_sentinel_env[var])
619
601
  end
620
602
  end
603
+
621
604
  end
622
605
  end
623
606
 
@@ -626,54 +609,46 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
626
609
  stub_process_wait(0)
627
610
 
628
611
  if Puppet::Util::Platform.windows?
629
- allow(Puppet::Util::Execution).to receive(:execute_windows).and_return(proc_info_stub)
612
+ Puppet::Util::Execution.stubs(:execute_windows).returns(proc_info_stub)
630
613
  else
631
- allow(Puppet::Util::Execution).to receive(:execute_posix).and_return(pid)
614
+ Puppet::Util::Execution.stubs(:execute_posix).returns(pid)
632
615
  end
633
616
  end
634
617
 
635
618
  it "should log if no uid or gid specified" do
636
- expect(Puppet::Util::Execution).to receive(:debug).with("Executing: 'echo hello'")
619
+ Puppet::Util::Execution.expects(:debug).with("Executing: 'echo hello'")
637
620
  Puppet::Util::Execution.execute('echo hello')
638
621
  end
639
-
640
622
  it "should log numeric uid if specified" do
641
- expect(Puppet::Util::Execution).to receive(:debug).with("Executing with uid=100: 'echo hello'")
623
+ Puppet::Util::Execution.expects(:debug).with("Executing with uid=100: 'echo hello'")
642
624
  Puppet::Util::Execution.execute('echo hello', {:uid => 100})
643
625
  end
644
-
645
626
  it "should log numeric gid if specified" do
646
- expect(Puppet::Util::Execution).to receive(:debug).with("Executing with gid=500: 'echo hello'")
627
+ Puppet::Util::Execution.expects(:debug).with("Executing with gid=500: 'echo hello'")
647
628
  Puppet::Util::Execution.execute('echo hello', {:gid => 500})
648
629
  end
649
-
650
630
  it "should log numeric uid and gid if specified" do
651
- expect(Puppet::Util::Execution).to receive(:debug).with("Executing with uid=100 gid=500: 'echo hello'")
631
+ Puppet::Util::Execution.expects(:debug).with("Executing with uid=100 gid=500: 'echo hello'")
652
632
  Puppet::Util::Execution.execute('echo hello', {:uid => 100, :gid => 500})
653
633
  end
654
-
655
634
  it "should log string uid if specified" do
656
- expect(Puppet::Util::Execution).to receive(:debug).with("Executing with uid=myuser: 'echo hello'")
635
+ Puppet::Util::Execution.expects(:debug).with("Executing with uid=myuser: 'echo hello'")
657
636
  Puppet::Util::Execution.execute('echo hello', {:uid => 'myuser'})
658
637
  end
659
-
660
638
  it "should log string gid if specified" do
661
- expect(Puppet::Util::Execution).to receive(:debug).with("Executing with gid=mygroup: 'echo hello'")
639
+ Puppet::Util::Execution.expects(:debug).with("Executing with gid=mygroup: 'echo hello'")
662
640
  Puppet::Util::Execution.execute('echo hello', {:gid => 'mygroup'})
663
641
  end
664
-
665
642
  it "should log string uid and gid if specified" do
666
- expect(Puppet::Util::Execution).to receive(:debug).with("Executing with uid=myuser gid=mygroup: 'echo hello'")
643
+ Puppet::Util::Execution.expects(:debug).with("Executing with uid=myuser gid=mygroup: 'echo hello'")
667
644
  Puppet::Util::Execution.execute('echo hello', {:uid => 'myuser', :gid => 'mygroup'})
668
645
  end
669
-
670
646
  it "should log numeric uid and string gid if specified" do
671
- expect(Puppet::Util::Execution).to receive(:debug).with("Executing with uid=100 gid=mygroup: 'echo hello'")
647
+ Puppet::Util::Execution.expects(:debug).with("Executing with uid=100 gid=mygroup: 'echo hello'")
672
648
  Puppet::Util::Execution.execute('echo hello', {:uid => 100, :gid => 'mygroup'})
673
649
  end
674
-
675
650
  it 'should redact commands in debug output when passed sensitive option' do
676
- expect(Puppet::Util::Execution).to receive(:debug).with("Executing: '[redacted]'")
651
+ Puppet::Util::Execution.expects(:debug).with("Executing: '[redacted]'")
677
652
  Puppet::Util::Execution.execute('echo hello', {:sensitive => true})
678
653
  end
679
654
  end
@@ -683,27 +658,29 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
683
658
  stub_process_wait(0)
684
659
 
685
660
  if Puppet::Util::Platform.windows?
686
- allow(Puppet::Util::Execution).to receive(:execute_windows).and_return(proc_info_stub)
661
+ Puppet::Util::Execution.stubs(:execute_windows).returns(proc_info_stub)
687
662
  else
688
- allow(Puppet::Util::Execution).to receive(:execute_posix).and_return(pid)
663
+ Puppet::Util::Execution.stubs(:execute_posix).returns(pid)
689
664
  end
690
665
  end
691
666
 
692
667
  it "should wait for the child process to exit" do
693
- allow(Puppet::Util::Execution).to receive(:wait_for_output)
668
+ Puppet::Util::Execution.stubs(:wait_for_output)
694
669
 
695
670
  Puppet::Util::Execution.execute('test command')
696
671
  end
697
672
 
698
673
  it "should close the stdin/stdout/stderr files used by the child" do
699
- stdin = double('file')
700
- stdout = double('file')
701
- stderr = double('file')
702
- [stdin, stdout, stderr].each {|io| expect(io).to receive(:close).at_least(:once)}
674
+ stdin = mock 'file'
675
+ stdout = mock 'file'
676
+ stderr = mock 'file'
677
+ [stdin, stdout, stderr].each {|io| io.expects(:close).at_least_once}
703
678
 
704
- expect(File).to receive(:open).
705
- exactly(3).times().
706
- and_return(stdin, stdout, stderr)
679
+ File.expects(:open).
680
+ times(3).
681
+ returns(stdin).
682
+ then.returns(stdout).
683
+ then.returns(stderr)
707
684
 
708
685
  Puppet::Util::Execution.execute('test command', {:squelch => true, :combine => false})
709
686
  end
@@ -712,7 +689,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
712
689
  context "reading the output" do
713
690
  before :each do
714
691
  r, w = IO.pipe
715
- expect(IO).to receive(:pipe).and_return([r, w])
692
+ IO.expects(:pipe).returns([r, w])
716
693
  w.write("My expected \u2744 command output")
717
694
  end
718
695
 
@@ -734,14 +711,14 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
734
711
  end
735
712
 
736
713
  it "should not read the output if squelch is true" do
737
- expect(IO).not_to receive(:pipe)
714
+ IO.expects(:pipe).never
738
715
 
739
716
  expect(Puppet::Util::Execution.execute('test command', :squelch => true)).to eq('')
740
717
  end
741
718
 
742
719
  it "should close the pipe used for output if squelch is false" do
743
720
  r, w = IO.pipe
744
- expect(IO).to receive(:pipe).and_return([r, w])
721
+ IO.expects(:pipe).returns([r, w])
745
722
 
746
723
  expect(Puppet::Util::Execution.execute('test command')).to eq("")
747
724
  expect(r.closed?)
@@ -750,12 +727,12 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
750
727
 
751
728
  it "should close the pipe used for output if squelch is false and an error is raised" do
752
729
  r, w = IO.pipe
753
- expect(IO).to receive(:pipe).and_return([r, w])
730
+ IO.expects(:pipe).returns([r, w])
754
731
 
755
732
  if Puppet::Util::Platform.windows?
756
- expect(Puppet::Util::Execution).to receive(:execute_windows).and_raise(Exception, 'execution failed')
733
+ Puppet::Util::Execution.expects(:execute_windows).raises(Exception, 'execution failed')
757
734
  else
758
- expect(Puppet::Util::Execution).to receive(:execute_posix).and_raise(Exception, 'execution failed')
735
+ Puppet::Util::Execution.expects(:execute_posix).raises(Exception, 'execution failed')
759
736
  end
760
737
 
761
738
  expect {
@@ -765,12 +742,11 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
765
742
  expect(w.closed?)
766
743
  end
767
744
  end
768
-
769
745
  describe "on Windows", :if => Puppet::Util::Platform.windows? do
770
746
  context "reading the output" do
771
747
  before :each do
772
748
  stdout = Puppet::FileSystem::Uniquefile.new('test')
773
- allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(stdout)
749
+ Puppet::FileSystem::Uniquefile.stubs(:new).returns(stdout)
774
750
  stdout.write("My expected \u2744 command output")
775
751
  end
776
752
 
@@ -793,7 +769,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
793
769
 
794
770
  it "should not read the output if squelch is true" do
795
771
  stdout = Puppet::FileSystem::Uniquefile.new('test')
796
- allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(stdout)
772
+ Puppet::FileSystem::Uniquefile.stubs(:new).returns(stdout)
797
773
  stdout.write("My expected command output")
798
774
 
799
775
  expect(Puppet::Util::Execution.execute('test command', :squelch => true)).to eq('')
@@ -802,7 +778,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
802
778
  it "should delete the file used for output if squelch is false" do
803
779
  stdout = Puppet::FileSystem::Uniquefile.new('test')
804
780
  path = stdout.path
805
- allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(stdout)
781
+ Puppet::FileSystem::Uniquefile.stubs(:new).returns(stdout)
806
782
 
807
783
  Puppet::Util::Execution.execute('test command')
808
784
 
@@ -811,7 +787,7 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
811
787
 
812
788
  it "should not raise an error if the file is open" do
813
789
  stdout = Puppet::FileSystem::Uniquefile.new('test')
814
- allow(Puppet::FileSystem::Uniquefile).to receive(:new).and_return(stdout)
790
+ Puppet::FileSystem::Uniquefile.stubs(:new).returns(stdout)
815
791
 
816
792
  Puppet::Util::Execution.execute('test command')
817
793
  end
@@ -881,68 +857,68 @@ describe Puppet::Util::Execution, if: !Puppet::Util::Platform.jruby? do
881
857
 
882
858
  describe "#execpipe" do
883
859
  it "should execute a string as a string" do
884
- expect(Puppet::Util::Execution).to receive(:open).with('| echo hello 2>&1').and_return('hello')
885
- expect(Puppet::Util::Execution).to receive(:exitstatus).and_return(0)
860
+ Puppet::Util::Execution.expects(:open).with('| echo hello 2>&1').returns('hello')
861
+ Puppet::Util::Execution.expects(:exitstatus).returns(0)
886
862
  expect(Puppet::Util::Execution.execpipe('echo hello')).to eq('hello')
887
863
  end
888
864
 
889
865
  it "should print meaningful debug message for string argument" do
890
- expect(Puppet::Util::Execution).to receive(:debug).with("Executing 'echo hello'")
891
- expect(Puppet::Util::Execution).to receive(:open).with('| echo hello 2>&1').and_return('hello')
892
- expect(Puppet::Util::Execution).to receive(:exitstatus).and_return(0)
866
+ Puppet::Util::Execution.expects(:debug).with("Executing 'echo hello'")
867
+ Puppet::Util::Execution.expects(:open).with('| echo hello 2>&1').returns('hello')
868
+ Puppet::Util::Execution.expects(:exitstatus).returns(0)
893
869
  Puppet::Util::Execution.execpipe('echo hello')
894
870
  end
895
871
 
896
872
  it "should print meaningful debug message for array argument" do
897
- expect(Puppet::Util::Execution).to receive(:debug).with("Executing 'echo hello'")
898
- expect(Puppet::Util::Execution).to receive(:open).with('| echo hello 2>&1').and_return('hello')
899
- expect(Puppet::Util::Execution).to receive(:exitstatus).and_return(0)
873
+ Puppet::Util::Execution.expects(:debug).with("Executing 'echo hello'")
874
+ Puppet::Util::Execution.expects(:open).with('| echo hello 2>&1').returns('hello')
875
+ Puppet::Util::Execution.expects(:exitstatus).returns(0)
900
876
  Puppet::Util::Execution.execpipe(['echo','hello'])
901
877
  end
902
878
 
903
879
  it "should execute an array by pasting together with spaces" do
904
- expect(Puppet::Util::Execution).to receive(:open).with('| echo hello 2>&1').and_return('hello')
905
- expect(Puppet::Util::Execution).to receive(:exitstatus).and_return(0)
880
+ Puppet::Util::Execution.expects(:open).with('| echo hello 2>&1').returns('hello')
881
+ Puppet::Util::Execution.expects(:exitstatus).returns(0)
906
882
  expect(Puppet::Util::Execution.execpipe(['echo', 'hello'])).to eq('hello')
907
883
  end
908
884
 
909
885
  it "should fail if asked to fail, and the child does" do
910
- allow(Puppet::Util::Execution).to receive(:open).with('| echo hello 2>&1').and_return('error message')
911
- expect(Puppet::Util::Execution).to receive(:exitstatus).and_return(1)
886
+ Puppet::Util::Execution.stubs(:open).with('| echo hello 2>&1').returns('error message')
887
+ Puppet::Util::Execution.expects(:exitstatus).returns(1)
912
888
  expect {
913
889
  Puppet::Util::Execution.execpipe('echo hello')
914
890
  }.to raise_error Puppet::ExecutionFailure, /error message/
915
891
  end
916
892
 
917
893
  it "should not fail if asked not to fail, and the child does" do
918
- allow(Puppet::Util::Execution).to receive(:open).and_return('error message')
894
+ Puppet::Util::Execution.stubs(:open).returns('error message')
919
895
  expect(Puppet::Util::Execution.execpipe('echo hello', false)).to eq('error message')
920
896
  end
921
897
  end
922
898
 
923
899
  describe "execfail" do
924
900
  it "returns the executed command output" do
925
- allow(Puppet::Util::Execution).to receive(:execute)
926
- .and_return(Puppet::Util::Execution::ProcessOutput.new("process output", 0))
901
+ Puppet::Util::Execution.stubs(:execute)
902
+ .returns(Puppet::Util::Execution::ProcessOutput.new("process output", 0))
927
903
  expect(Puppet::Util::Execution.execfail('echo hello', Puppet::Error)).to eq('process output')
928
904
  end
929
905
 
930
906
  it "raises a caller-specified exception on failure with the backtrace" do
931
- allow(Puppet::Util::Execution).to receive(:execute).and_raise(Puppet::ExecutionFailure, "failed to execute")
907
+ Puppet::Util::Execution.stubs(:execute).raises(Puppet::ExecutionFailure, "failed to execute")
932
908
  expect {
933
909
  Puppet::Util::Execution.execfail("this will fail", Puppet::Error)
934
910
  }.to raise_error(Puppet::Error, /failed to execute/)
935
911
  end
936
912
 
937
913
  it "raises exceptions that don't extend ExecutionFailure" do
938
- allow(Puppet::Util::Execution).to receive(:execute).and_raise(ArgumentError, "failed to execute")
914
+ Puppet::Util::Execution.stubs(:execute).raises(ArgumentError, "failed to execute")
939
915
  expect {
940
916
  Puppet::Util::Execution.execfail("this will fail", Puppet::Error)
941
917
  }.to raise_error(ArgumentError, /failed to execute/)
942
918
  end
943
919
 
944
920
  it "raises a TypeError if the exception class is nil" do
945
- allow(Puppet::Util::Execution).to receive(:execute).and_raise(Puppet::ExecutionFailure, "failed to execute")
921
+ Puppet::Util::Execution.stubs(:execute).raises(Puppet::ExecutionFailure, "failed to execute")
946
922
  expect {
947
923
  Puppet::Util::Execution.execfail('echo hello', nil)
948
924
  }.to raise_error(TypeError, /exception class\/object expected/)