puppet 6.20.0-x64-mingw32 → 7.0.0-x64-mingw32

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 (484) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +16 -2
  3. data/Gemfile +0 -2
  4. data/Gemfile.lock +18 -24
  5. data/README.md +1 -1
  6. data/conf/fileserver.conf +5 -10
  7. data/ext/build_defaults.yaml +1 -1
  8. data/ext/osx/file_mapping.yaml +0 -5
  9. data/ext/project_data.yaml +1 -14
  10. data/ext/redhat/puppet.spec.erb +0 -1
  11. data/ext/windows/service/daemon.rb +6 -5
  12. data/install.rb +21 -17
  13. data/lib/puppet.rb +11 -20
  14. data/lib/puppet/application.rb +178 -108
  15. data/lib/puppet/application/agent.rb +0 -1
  16. data/lib/puppet/application/apply.rb +2 -3
  17. data/lib/puppet/application/device.rb +100 -105
  18. data/lib/puppet/application/filebucket.rb +13 -9
  19. data/lib/puppet/application/script.rb +0 -1
  20. data/lib/puppet/application/ssl.rb +1 -1
  21. data/lib/puppet/application_support.rb +0 -7
  22. data/lib/puppet/configurer.rb +30 -45
  23. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  24. data/lib/puppet/defaults.rb +97 -167
  25. data/lib/puppet/environments.rb +59 -58
  26. data/lib/puppet/face/facts.rb +51 -51
  27. data/lib/puppet/face/help.rb +1 -1
  28. data/lib/puppet/face/plugin.rb +5 -8
  29. data/lib/puppet/ffi/windows.rb +12 -0
  30. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  31. data/lib/puppet/ffi/windows/constants.rb +404 -0
  32. data/lib/puppet/ffi/windows/functions.rb +628 -0
  33. data/lib/puppet/ffi/windows/structs.rb +338 -0
  34. data/lib/puppet/file_serving/configuration.rb +0 -5
  35. data/lib/puppet/file_serving/configuration/parser.rb +3 -32
  36. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  37. data/lib/puppet/file_serving/mount.rb +1 -2
  38. data/lib/puppet/forge/repository.rb +0 -1
  39. data/lib/puppet/generate/models/type/type.rb +4 -1
  40. data/lib/puppet/http.rb +22 -13
  41. data/lib/puppet/http/client.rb +164 -114
  42. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  43. data/lib/puppet/http/errors.rb +16 -0
  44. data/lib/puppet/http/external_client.rb +5 -7
  45. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  46. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  47. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  48. data/lib/puppet/http/proxy.rb +137 -0
  49. data/lib/puppet/http/redirector.rb +4 -12
  50. data/lib/puppet/http/resolver.rb +5 -15
  51. data/lib/puppet/http/resolver/server_list.rb +6 -10
  52. data/lib/puppet/http/resolver/settings.rb +4 -7
  53. data/lib/puppet/http/resolver/srv.rb +7 -11
  54. data/lib/puppet/http/response.rb +36 -54
  55. data/lib/puppet/http/response_converter.rb +24 -0
  56. data/lib/puppet/http/response_net_http.rb +42 -0
  57. data/lib/puppet/http/retry_after_handler.rb +4 -13
  58. data/lib/puppet/http/service.rb +12 -26
  59. data/lib/puppet/http/service/ca.rb +11 -22
  60. data/lib/puppet/http/service/compiler.rb +22 -69
  61. data/lib/puppet/http/service/file_server.rb +18 -27
  62. data/lib/puppet/http/service/puppetserver.rb +26 -12
  63. data/lib/puppet/http/service/report.rb +8 -10
  64. data/lib/puppet/http/session.rb +11 -20
  65. data/lib/puppet/{network/http → http}/site.rb +1 -2
  66. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  67. data/lib/puppet/indirector/facts/facter.rb +24 -3
  68. data/lib/puppet/indirector/facts/rest.rb +3 -22
  69. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  70. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  71. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  72. data/lib/puppet/indirector/file_server.rb +1 -8
  73. data/lib/puppet/indirector/generic_http.rb +0 -11
  74. data/lib/puppet/indirector/node/rest.rb +2 -4
  75. data/lib/puppet/indirector/report/rest.rb +3 -8
  76. data/lib/puppet/indirector/request.rb +0 -101
  77. data/lib/puppet/indirector/rest.rb +12 -263
  78. data/lib/puppet/module_tool/applications.rb +0 -1
  79. data/lib/puppet/module_tool/applications/installer.rb +2 -48
  80. data/lib/puppet/module_tool/errors/shared.rb +2 -17
  81. data/lib/puppet/network/authconfig.rb +2 -96
  82. data/lib/puppet/network/authorization.rb +13 -35
  83. data/lib/puppet/network/http.rb +3 -3
  84. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  85. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  86. data/lib/puppet/network/http/connection.rb +247 -316
  87. data/lib/puppet/network/http/handler.rb +0 -1
  88. data/lib/puppet/network/http_pool.rb +16 -34
  89. data/lib/puppet/node.rb +1 -30
  90. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  91. data/lib/puppet/pal/pal_impl.rb +3 -1
  92. data/lib/puppet/parser/ast/leaf.rb +2 -3
  93. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  94. data/lib/puppet/parser/compiler.rb +0 -198
  95. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  96. data/lib/puppet/parser/resource.rb +0 -69
  97. data/lib/puppet/parser/templatewrapper.rb +1 -1
  98. data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
  99. data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
  100. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  101. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  102. data/lib/puppet/pops/issues.rb +0 -5
  103. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  104. data/lib/puppet/pops/model/ast.pp +0 -42
  105. data/lib/puppet/pops/model/ast.rb +0 -290
  106. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  107. data/lib/puppet/pops/model/factory.rb +0 -45
  108. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  109. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  110. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  111. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  112. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  113. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  114. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  115. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  116. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  117. data/lib/puppet/pops/types/type_parser.rb +0 -4
  118. data/lib/puppet/pops/types/types.rb +0 -1
  119. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  120. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  121. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  122. data/lib/puppet/provider.rb +0 -13
  123. data/lib/puppet/provider/nameservice.rb +0 -18
  124. data/lib/puppet/provider/package/apt.rb +0 -4
  125. data/lib/puppet/provider/package/dpkg.rb +0 -10
  126. data/lib/puppet/provider/package/gem.rb +23 -3
  127. data/lib/puppet/provider/package/pip.rb +0 -1
  128. data/lib/puppet/provider/package/pkg.rb +0 -4
  129. data/lib/puppet/provider/package/portage.rb +1 -1
  130. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  131. data/lib/puppet/provider/service/smf.rb +191 -73
  132. data/lib/puppet/provider/user/aix.rb +2 -2
  133. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  134. data/lib/puppet/reference/configuration.rb +7 -6
  135. data/lib/puppet/reference/indirection.rb +1 -1
  136. data/lib/puppet/resource.rb +1 -89
  137. data/lib/puppet/resource/catalog.rb +1 -14
  138. data/lib/puppet/resource/type.rb +3 -119
  139. data/lib/puppet/resource/type_collection.rb +3 -48
  140. data/lib/puppet/runtime.rb +1 -2
  141. data/lib/puppet/settings.rb +73 -66
  142. data/lib/puppet/settings/integer_setting.rb +17 -0
  143. data/lib/puppet/settings/port_setting.rb +15 -0
  144. data/lib/puppet/settings/priority_setting.rb +5 -4
  145. data/lib/puppet/ssl.rb +10 -6
  146. data/lib/puppet/ssl/base.rb +3 -5
  147. data/lib/puppet/ssl/certificate.rb +0 -6
  148. data/lib/puppet/ssl/certificate_request.rb +1 -12
  149. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  150. data/lib/puppet/ssl/oids.rb +3 -1
  151. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  152. data/lib/puppet/ssl/state_machine.rb +3 -1
  153. data/lib/puppet/ssl/verifier.rb +2 -0
  154. data/lib/puppet/test/test_helper.rb +1 -3
  155. data/lib/puppet/transaction.rb +1 -7
  156. data/lib/puppet/transaction/report.rb +2 -4
  157. data/lib/puppet/type.rb +0 -76
  158. data/lib/puppet/type/file.rb +5 -7
  159. data/lib/puppet/type/file/checksum.rb +1 -1
  160. data/lib/puppet/type/file/source.rb +1 -1
  161. data/lib/puppet/type/filebucket.rb +3 -3
  162. data/lib/puppet/type/package.rb +5 -13
  163. data/lib/puppet/util/autoload.rb +8 -1
  164. data/lib/puppet/util/execution.rb +0 -11
  165. data/lib/puppet/util/http_proxy.rb +2 -215
  166. data/lib/puppet/util/monkey_patches.rb +0 -46
  167. data/lib/puppet/util/posix.rb +5 -54
  168. data/lib/puppet/util/rdoc.rb +0 -7
  169. data/lib/puppet/util/retry_action.rb +1 -1
  170. data/lib/puppet/util/run_mode.rb +9 -1
  171. data/lib/puppet/util/windows.rb +3 -8
  172. data/lib/puppet/util/windows/daemon.rb +360 -0
  173. data/lib/puppet/util/windows/error.rb +1 -0
  174. data/lib/puppet/util/windows/eventlog.rb +4 -9
  175. data/lib/puppet/util/windows/file.rb +8 -242
  176. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  177. data/lib/puppet/util/windows/process.rb +4 -226
  178. data/lib/puppet/util/windows/service.rb +9 -460
  179. data/lib/puppet/util/windows/string.rb +12 -13
  180. data/lib/puppet/util/yaml.rb +0 -22
  181. data/lib/puppet/vendor/require_vendored.rb +0 -1
  182. data/lib/puppet/version.rb +1 -1
  183. data/lib/puppet/x509.rb +5 -1
  184. data/lib/puppet/x509/cert_provider.rb +29 -1
  185. data/locales/puppet.pot +587 -1312
  186. data/man/man5/puppet.conf.5 +39 -99
  187. data/man/man8/puppet-agent.8 +2 -2
  188. data/man/man8/puppet-apply.8 +2 -2
  189. data/man/man8/puppet-catalog.8 +1 -1
  190. data/man/man8/puppet-config.8 +1 -1
  191. data/man/man8/puppet-describe.8 +1 -1
  192. data/man/man8/puppet-device.8 +2 -2
  193. data/man/man8/puppet-doc.8 +1 -1
  194. data/man/man8/puppet-epp.8 +1 -1
  195. data/man/man8/puppet-facts.8 +51 -36
  196. data/man/man8/puppet-filebucket.8 +4 -4
  197. data/man/man8/puppet-generate.8 +1 -1
  198. data/man/man8/puppet-help.8 +1 -1
  199. data/man/man8/puppet-lookup.8 +1 -1
  200. data/man/man8/puppet-module.8 +1 -58
  201. data/man/man8/puppet-node.8 +1 -1
  202. data/man/man8/puppet-parser.8 +1 -1
  203. data/man/man8/puppet-plugin.8 +1 -1
  204. data/man/man8/puppet-report.8 +1 -1
  205. data/man/man8/puppet-resource.8 +1 -1
  206. data/man/man8/puppet-script.8 +2 -2
  207. data/man/man8/puppet-ssl.8 +1 -1
  208. data/man/man8/puppet.8 +2 -2
  209. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  210. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
  211. data/spec/integration/application/agent_spec.rb +27 -138
  212. data/spec/integration/application/apply_spec.rb +1 -20
  213. data/spec/integration/application/filebucket_spec.rb +16 -16
  214. data/spec/integration/application/help_spec.rb +2 -0
  215. data/spec/integration/application/plugin_spec.rb +23 -1
  216. data/spec/integration/defaults_spec.rb +14 -3
  217. data/spec/integration/network/http_pool_spec.rb +3 -21
  218. data/spec/integration/parser/catalog_spec.rb +0 -38
  219. data/spec/integration/parser/node_spec.rb +0 -9
  220. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  221. data/spec/integration/resource/type_collection_spec.rb +6 -2
  222. data/spec/integration/transaction_spec.rb +9 -4
  223. data/spec/integration/type/file_spec.rb +5 -4
  224. data/spec/integration/util/windows/adsi_spec.rb +1 -3
  225. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  226. data/spec/integration/util/windows/registry_spec.rb +10 -0
  227. data/spec/integration/util/windows/security_spec.rb +1 -1
  228. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  229. data/spec/lib/puppet_spec/settings.rb +1 -0
  230. data/spec/spec_helper.rb +6 -1
  231. data/spec/unit/agent_spec.rb +6 -10
  232. data/spec/unit/application/agent_spec.rb +1 -0
  233. data/spec/unit/application/facts_spec.rb +35 -0
  234. data/spec/unit/application/filebucket_spec.rb +43 -39
  235. data/spec/unit/application/ssl_spec.rb +2 -2
  236. data/spec/unit/application_spec.rb +9 -51
  237. data/spec/unit/certificate_factory_spec.rb +1 -1
  238. data/spec/unit/configurer/downloader_spec.rb +6 -2
  239. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  240. data/spec/unit/configurer_spec.rb +12 -9
  241. data/spec/unit/confine/feature_spec.rb +1 -1
  242. data/spec/unit/confine_spec.rb +2 -8
  243. data/spec/unit/context/trusted_information_spec.rb +2 -6
  244. data/spec/unit/defaults_spec.rb +72 -42
  245. data/spec/unit/environments_spec.rb +19 -99
  246. data/spec/unit/face/facts_spec.rb +4 -0
  247. data/spec/unit/face/node_spec.rb +11 -0
  248. data/spec/unit/face/plugin_spec.rb +73 -33
  249. data/spec/unit/file_bucket/file_spec.rb +1 -1
  250. data/spec/unit/file_serving/configuration/parser_spec.rb +15 -18
  251. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  252. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  253. data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
  254. data/spec/unit/forge/module_release_spec.rb +7 -2
  255. data/spec/unit/functions/camelcase_spec.rb +1 -1
  256. data/spec/unit/functions/capitalize_spec.rb +1 -1
  257. data/spec/unit/functions/downcase_spec.rb +1 -1
  258. data/spec/unit/functions/upcase_spec.rb +1 -1
  259. data/spec/unit/http/client_spec.rb +7 -8
  260. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  261. data/spec/unit/http/external_client_spec.rb +4 -4
  262. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  263. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  264. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  265. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  266. data/spec/unit/http/resolver_spec.rb +13 -13
  267. data/spec/unit/http/service/compiler_spec.rb +0 -62
  268. data/spec/unit/http/service/file_server_spec.rb +3 -3
  269. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  270. data/spec/unit/http/service_spec.rb +0 -1
  271. data/spec/unit/http/session_spec.rb +16 -14
  272. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  273. data/spec/unit/indirector/face_spec.rb +1 -0
  274. data/spec/unit/indirector/facts/facter_spec.rb +98 -0
  275. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  276. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
  277. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  278. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  279. data/spec/unit/indirector/file_server_spec.rb +1 -15
  280. data/spec/unit/indirector/indirection_spec.rb +12 -8
  281. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  282. data/spec/unit/indirector/request_spec.rb +0 -264
  283. data/spec/unit/indirector/rest_spec.rb +98 -752
  284. data/spec/unit/indirector_spec.rb +2 -2
  285. data/spec/unit/module_tool/applications/installer_spec.rb +0 -66
  286. data/spec/unit/network/authconfig_spec.rb +2 -129
  287. data/spec/unit/network/authorization_spec.rb +2 -55
  288. data/spec/unit/network/formats_spec.rb +4 -4
  289. data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
  290. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  291. data/spec/unit/network/http/api_spec.rb +10 -0
  292. data/spec/unit/network/http/connection_spec.rb +19 -41
  293. data/spec/unit/network/http/handler_spec.rb +0 -1
  294. data/spec/unit/network/http_pool_spec.rb +0 -4
  295. data/spec/unit/node/environment_spec.rb +33 -21
  296. data/spec/unit/node_spec.rb +2 -54
  297. data/spec/unit/parser/compiler_spec.rb +19 -3
  298. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  299. data/spec/unit/parser/resource_spec.rb +8 -14
  300. data/spec/unit/parser/templatewrapper_spec.rb +3 -4
  301. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  302. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  303. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  304. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  305. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  306. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  307. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  308. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  309. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  310. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  311. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  312. data/spec/unit/pops/visitor_spec.rb +1 -1
  313. data/spec/unit/property_spec.rb +0 -1
  314. data/spec/unit/provider/nameservice_spec.rb +64 -122
  315. data/spec/unit/provider/package/apt_spec.rb +8 -4
  316. data/spec/unit/provider/package/base_spec.rb +5 -6
  317. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  318. data/spec/unit/provider/package/gem_spec.rb +32 -0
  319. data/spec/unit/provider/package/pacman_spec.rb +12 -18
  320. data/spec/unit/provider/package/pip_spec.rb +11 -6
  321. data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
  322. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  323. data/spec/unit/provider/service/smf_spec.rb +401 -165
  324. data/spec/unit/provider/service/windows_spec.rb +0 -1
  325. data/spec/unit/provider/user/aix_spec.rb +0 -5
  326. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  327. data/spec/unit/provider/user/pw_spec.rb +0 -2
  328. data/spec/unit/provider/user/useradd_spec.rb +0 -1
  329. data/spec/unit/provider_spec.rb +8 -18
  330. data/spec/unit/resource/type_collection_spec.rb +2 -22
  331. data/spec/unit/resource/type_spec.rb +1 -1
  332. data/spec/unit/resource_spec.rb +10 -67
  333. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  334. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  335. data/spec/unit/settings/port_setting_spec.rb +31 -0
  336. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  337. data/spec/unit/settings_spec.rb +23 -13
  338. data/spec/unit/ssl/base_spec.rb +37 -3
  339. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  340. data/spec/unit/ssl/certificate_spec.rb +2 -11
  341. data/spec/unit/ssl/ssl_provider_spec.rb +2 -5
  342. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  343. data/spec/unit/ssl/verifier_spec.rb +0 -21
  344. data/spec/unit/transaction/additional_resource_generator_spec.rb +7 -3
  345. data/spec/unit/transaction/event_manager_spec.rb +11 -14
  346. data/spec/unit/transaction/report_spec.rb +0 -2
  347. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  348. data/spec/unit/transaction_spec.rb +48 -91
  349. data/spec/unit/type/file/checksum_spec.rb +6 -6
  350. data/spec/unit/type/file/content_spec.rb +2 -1
  351. data/spec/unit/type/file/ensure_spec.rb +1 -1
  352. data/spec/unit/type/file/mode_spec.rb +1 -1
  353. data/spec/unit/type/file/selinux_spec.rb +2 -0
  354. data/spec/unit/type/file/source_spec.rb +0 -1
  355. data/spec/unit/type/file_spec.rb +18 -6
  356. data/spec/unit/type/group_spec.rb +6 -13
  357. data/spec/unit/type/package_spec.rb +1 -1
  358. data/spec/unit/type/resources_spec.rb +7 -7
  359. data/spec/unit/type/service_spec.rb +1 -1
  360. data/spec/unit/type/tidy_spec.rb +1 -0
  361. data/spec/unit/type_spec.rb +22 -2
  362. data/spec/unit/util/at_fork_spec.rb +2 -2
  363. data/spec/unit/util/autoload_spec.rb +1 -5
  364. data/spec/unit/util/backups_spec.rb +2 -3
  365. data/spec/unit/util/execution_spec.rb +11 -44
  366. data/spec/unit/util/inifile_spec.rb +14 -6
  367. data/spec/unit/util/log_spec.rb +7 -8
  368. data/spec/unit/util/logging_spec.rb +3 -3
  369. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  370. data/spec/unit/util/posix_spec.rb +15 -363
  371. data/spec/unit/util/run_mode_spec.rb +21 -121
  372. data/spec/unit/util/selinux_spec.rb +52 -76
  373. data/spec/unit/util/storage_spec.rb +1 -3
  374. data/spec/unit/util/suidmanager_spec.rb +41 -44
  375. data/spec/unit/util/windows/string_spec.rb +1 -3
  376. data/spec/unit/util/yaml_spec.rb +0 -54
  377. data/spec/unit/util_spec.rb +6 -31
  378. metadata +40 -233
  379. data/conf/auth.conf +0 -150
  380. data/lib/puppet/application/cert.rb +0 -76
  381. data/lib/puppet/application/key.rb +0 -4
  382. data/lib/puppet/application/man.rb +0 -4
  383. data/lib/puppet/application/status.rb +0 -4
  384. data/lib/puppet/face/key.rb +0 -16
  385. data/lib/puppet/face/man.rb +0 -145
  386. data/lib/puppet/face/module/build.rb +0 -14
  387. data/lib/puppet/face/module/generate.rb +0 -14
  388. data/lib/puppet/face/module/search.rb +0 -103
  389. data/lib/puppet/face/status.rb +0 -51
  390. data/lib/puppet/ffi/posix.rb +0 -10
  391. data/lib/puppet/ffi/posix/constants.rb +0 -14
  392. data/lib/puppet/ffi/posix/functions.rb +0 -24
  393. data/lib/puppet/indirector/certificate/file.rb +0 -9
  394. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  395. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  396. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  397. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  398. data/lib/puppet/indirector/file_content/http.rb +0 -22
  399. data/lib/puppet/indirector/key/file.rb +0 -46
  400. data/lib/puppet/indirector/key/memory.rb +0 -7
  401. data/lib/puppet/indirector/ssl_file.rb +0 -162
  402. data/lib/puppet/indirector/status.rb +0 -3
  403. data/lib/puppet/indirector/status/local.rb +0 -12
  404. data/lib/puppet/indirector/status/rest.rb +0 -27
  405. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  406. data/lib/puppet/network/auth_config_parser.rb +0 -90
  407. data/lib/puppet/network/authstore.rb +0 -283
  408. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  409. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  410. data/lib/puppet/network/http/base_pool.rb +0 -36
  411. data/lib/puppet/network/http/compression.rb +0 -127
  412. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  413. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  414. data/lib/puppet/network/rest_controller.rb +0 -2
  415. data/lib/puppet/network/rights.rb +0 -210
  416. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  417. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  418. data/lib/puppet/parser/environment_compiler.rb +0 -202
  419. data/lib/puppet/pops/types/enumeration.rb +0 -16
  420. data/lib/puppet/resource/capability_finder.rb +0 -154
  421. data/lib/puppet/rest/errors.rb +0 -15
  422. data/lib/puppet/rest/response.rb +0 -35
  423. data/lib/puppet/rest/route.rb +0 -85
  424. data/lib/puppet/rest/routes.rb +0 -135
  425. data/lib/puppet/settings/alias_setting.rb +0 -37
  426. data/lib/puppet/ssl/host.rb +0 -505
  427. data/lib/puppet/ssl/key.rb +0 -61
  428. data/lib/puppet/ssl/validator.rb +0 -61
  429. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  430. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  431. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  432. data/lib/puppet/status.rb +0 -40
  433. data/lib/puppet/util/connection.rb +0 -88
  434. data/lib/puppet/util/fact_dif.rb +0 -62
  435. data/lib/puppet/util/ssl.rb +0 -83
  436. data/lib/puppet/util/windows/api_types.rb +0 -309
  437. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  438. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  439. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  440. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  441. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  442. data/lib/puppet/vendor/pathspec/README.md +0 -53
  443. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  444. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  445. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  446. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  447. data/man/man8/puppet-key.8 +0 -126
  448. data/man/man8/puppet-man.8 +0 -76
  449. data/man/man8/puppet-status.8 +0 -108
  450. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -91
  451. data/spec/integration/network/authconfig_spec.rb +0 -256
  452. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  453. data/spec/unit/application/man_spec.rb +0 -52
  454. data/spec/unit/capability_spec.rb +0 -414
  455. data/spec/unit/face/key_spec.rb +0 -9
  456. data/spec/unit/face/module/search_spec.rb +0 -231
  457. data/spec/unit/face/status_spec.rb +0 -9
  458. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  459. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  460. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  461. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  462. data/spec/unit/indirector/key/file_spec.rb +0 -78
  463. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  464. data/spec/unit/indirector/status/local_spec.rb +0 -10
  465. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  466. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  467. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  468. data/spec/unit/network/authstore_spec.rb +0 -422
  469. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  470. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  471. data/spec/unit/network/http/compression_spec.rb +0 -240
  472. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  473. data/spec/unit/network/http_spec.rb +0 -9
  474. data/spec/unit/network/rights_spec.rb +0 -439
  475. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  476. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
  477. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  478. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  479. data/spec/unit/rest/route_spec.rb +0 -132
  480. data/spec/unit/ssl/host_spec.rb +0 -645
  481. data/spec/unit/ssl/key_spec.rb +0 -173
  482. data/spec/unit/ssl/validator_spec.rb +0 -278
  483. data/spec/unit/status_spec.rb +0 -45
  484. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -151,7 +151,7 @@ describe 'The type factory' do
151
151
  expect(hc.class_name).to eq('x')
152
152
  end
153
153
 
154
- it 'array_of(fixnum) returns PArrayType[PIntegerType]' do
154
+ it 'array_of(integer) returns PArrayType[PIntegerType]' do
155
155
  at = TypeFactory.array_of(1)
156
156
  expect(at.class()).to eq(PArrayType)
157
157
  expect(at.element_type.class).to eq(PIntegerType)
@@ -179,17 +179,17 @@ describe "validating 4x" do
179
179
  expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_KEY)
180
180
  end
181
181
 
182
- it 'produces a warning for virtual class resource' do
182
+ it 'produces an error for virtual class resource' do
183
183
  acceptor = validate(parse('@class { test: }'))
184
- expect(acceptor.warning_count).to eql(1)
185
- expect(acceptor.error_count).to eql(0)
184
+ expect(acceptor.warning_count).to eql(0)
185
+ expect(acceptor.error_count).to eql(1)
186
186
  expect(acceptor).to have_issue(Puppet::Pops::Issues::CLASS_NOT_VIRTUALIZABLE)
187
187
  end
188
188
 
189
- it 'produces a warning for exported class resource' do
189
+ it 'produces an error for exported class resource' do
190
190
  acceptor = validate(parse('@@class { test: }'))
191
- expect(acceptor.warning_count).to eql(1)
192
- expect(acceptor.error_count).to eql(0)
191
+ expect(acceptor.warning_count).to eql(0)
192
+ expect(acceptor.error_count).to eql(1)
193
193
  expect(acceptor).to have_issue(Puppet::Pops::Issues::CLASS_NOT_VIRTUALIZABLE)
194
194
  end
195
195
 
@@ -310,17 +310,17 @@ describe "validating 4x" do
310
310
  expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
311
311
  end
312
312
 
313
- it 'produces a warning for virtual class resource' do
313
+ it 'produces an error for virtual class resource' do
314
314
  acceptor = validate(parse('@class { test: }'))
315
- expect(acceptor.warning_count).to eql(1)
316
- expect(acceptor.error_count).to eql(0)
315
+ expect(acceptor.warning_count).to eql(0)
316
+ expect(acceptor.error_count).to eql(1)
317
317
  expect(acceptor).to have_issue(Puppet::Pops::Issues::CLASS_NOT_VIRTUALIZABLE)
318
318
  end
319
319
 
320
- it 'produces a warning for exported class resource' do
320
+ it 'produces an error for exported class resource' do
321
321
  acceptor = validate(parse('@@class { test: }'))
322
- expect(acceptor.warning_count).to eql(1)
323
- expect(acceptor.error_count).to eql(0)
322
+ expect(acceptor.warning_count).to eql(0)
323
+ expect(acceptor.error_count).to eql(1)
324
324
  expect(acceptor).to have_issue(Puppet::Pops::Issues::CLASS_NOT_VIRTUALIZABLE)
325
325
  end
326
326
  end
@@ -344,16 +344,16 @@ describe "validating 4x" do
344
344
  end
345
345
  end
346
346
 
347
- it 'produces an error for application' do
348
- acceptor = validate(parse('application test {}'))
349
- expect(acceptor.error_count).to eql(1)
350
- expect(acceptor).to have_issue(Puppet::Pops::Issues::EXPRESSION_NOT_SUPPORTED_WHEN_SCRIPTING)
347
+ it 'produces a syntax error for application' do
348
+ expect {
349
+ parse('application test {}')
350
+ }.to raise_error(Puppet::ParseErrorWithIssue, /Syntax error at 'application'/)
351
351
  end
352
352
 
353
- it 'produces an error for capability mapping' do
354
- acceptor = validate(parse('Foo produces Sql {}'))
355
- expect(acceptor.error_count).to eql(1)
356
- expect(acceptor).to have_issue(Puppet::Pops::Issues::EXPRESSION_NOT_SUPPORTED_WHEN_SCRIPTING)
353
+ it 'produces a syntax error for capability mapping' do
354
+ expect {
355
+ parse('Foo produces Sql {}')
356
+ }.to raise_error(Puppet::ParseErrorWithIssue, /Syntax error at 'produces'/)
357
357
  end
358
358
 
359
359
  it 'produces an error for collect expressions with virtual query' do
@@ -410,10 +410,10 @@ describe "validating 4x" do
410
410
  expect(acceptor).to have_issue(Puppet::Pops::Issues::EXPRESSION_NOT_SUPPORTED_WHEN_SCRIPTING)
411
411
  end
412
412
 
413
- it 'produces an error for site definitions' do
414
- acceptor = validate(parse('site {}'))
415
- expect(acceptor.error_count).to eql(1)
416
- expect(acceptor).to have_issue(Puppet::Pops::Issues::EXPRESSION_NOT_SUPPORTED_WHEN_SCRIPTING)
413
+ it 'produces a syntax error for site definitions' do
414
+ expect {
415
+ parse('site {}')
416
+ }.to raise_error(Puppet::ParseErrorWithIssue, /Syntax error at 'site'/)
417
417
  end
418
418
 
419
419
  context 'validating apply() blocks' do
@@ -468,16 +468,16 @@ describe "validating 4x" do
468
468
  expect(acceptor.error_count).to eql(0)
469
469
  end
470
470
 
471
- it 'produces an error for application' do
472
- acceptor = validate(parse('apply("foo.example.com") { application test {} }'))
473
- expect(acceptor.error_count).to eql(1)
474
- expect(acceptor).to have_issue(Puppet::Pops::Issues::EXPRESSION_NOT_SUPPORTED_WHEN_SCRIPTING)
471
+ it 'produces a syntax error for application' do
472
+ expect {
473
+ parse('apply("foo.example.com") { application test {} }')
474
+ }.to raise_error(Puppet::ParseErrorWithIssue, /Syntax error at 'application'/)
475
475
  end
476
476
 
477
- it 'produces an error for capability mapping' do
478
- acceptor = validate(parse('apply("foo.example.com") { Foo produces Sql {} }'))
479
- expect(acceptor.error_count).to eql(1)
480
- expect(acceptor).to have_issue(Puppet::Pops::Issues::EXPRESSION_NOT_SUPPORTED_WHEN_SCRIPTING)
477
+ it 'produces a syntax error for capability mapping' do
478
+ expect {
479
+ parse('apply("foo.example.com") { Foo produces Sql {} }')
480
+ }.to raise_error(Puppet::ParseErrorWithIssue, /Syntax error at 'produces'/)
481
481
  end
482
482
 
483
483
  it 'produces an error for class expressions' do
@@ -504,9 +504,9 @@ describe "validating 4x" do
504
504
  end
505
505
 
506
506
  it 'produces an error for site definitions' do
507
- acceptor = validate(parse('apply("foo.example.com") { site {} }'))
508
- expect(acceptor.error_count).to eql(1)
509
- expect(acceptor).to have_issue(Puppet::Pops::Issues::EXPRESSION_NOT_SUPPORTED_WHEN_SCRIPTING)
507
+ expect {
508
+ parse('apply("foo.example.com") { site {} }')
509
+ }.to raise_error(Puppet::ParseErrorWithIssue, /Syntax error at 'site'/)
510
510
  end
511
511
 
512
512
  it 'produces an error for apply() inside apply()' do
@@ -669,6 +669,15 @@ describe "validating 4x" do
669
669
  'regexp',
670
670
  'pattern',
671
671
  'runtime',
672
+ 'init',
673
+ 'object',
674
+ 'sensitive',
675
+ 'semver',
676
+ 'semverrange',
677
+ 'string',
678
+ 'timestamp',
679
+ 'timespan',
680
+ 'typeset',
672
681
  ].each do |name|
673
682
 
674
683
  it "produces an error for 'class #{name}'" do
@@ -693,6 +702,7 @@ describe "validating 4x" do
693
702
  source = "type('a', 'b')"
694
703
  expect(validate(parse(source))).not_to have_any_issues
695
704
  end
705
+
696
706
  it "should allow using the 'type' as the name of a function with no parameters and a block" do
697
707
  source = "type() |$x| { $x }"
698
708
  expect(validate(parse(source))).not_to have_any_issues
@@ -968,6 +978,18 @@ describe "validating 4x" do
968
978
  end
969
979
  end
970
980
 
981
+ it "allows a reserved type name" do
982
+ source = <<-SOURCE
983
+ class foo {
984
+ define string() {}
985
+ foo::string { 'a': }
986
+ }
987
+ SOURCE
988
+
989
+ acceptor = validate(parse(source, 'path/foo/manifests/init.pp'))
990
+ expect(acceptor.error_count).to eql(0)
991
+ end
992
+
971
993
  it "will give multiple errors in one file with multiple issues" do
972
994
  source = <<-SOURCE
973
995
  class foo {}
@@ -992,17 +1014,10 @@ describe "validating 4x" do
992
1014
 
993
1015
  context "capability annotations" do
994
1016
  ['produces', 'consumes'].each do |word|
995
- it "rejects illegal resource types in #{word} clauses" do
996
- expect(validate(parse("foo produces Bar {}"))).to have_issue(Puppet::Pops::Issues::ILLEGAL_CLASSREF)
997
- end
998
-
999
- it "accepts legal resource and capability types in #{word} clauses" do
1000
- expect(validate(parse("Foo produces Bar {}"))).to_not have_issue(Puppet::Pops::Issues::ILLEGAL_CLASSREF)
1001
- expect(validate(parse("Mod::Foo produces ::Mod2::Bar {}"))).to_not have_issue(Puppet::Pops::Issues::ILLEGAL_CLASSREF)
1002
- end
1003
-
1004
- it "rejects illegal capability types in #{word} clauses" do
1005
- expect(validate(parse("Foo produces bar {}"))).to have_issue(Puppet::Pops::Issues::ILLEGAL_CLASSREF)
1017
+ it "raises a syntax error in #{word} clauses" do
1018
+ expect {
1019
+ parse("foo #{word} Bar {}")
1020
+ }.to raise_error(Puppet::ParseErrorWithIssue, /Syntax error at '#{word}'/)
1006
1021
  end
1007
1022
  end
1008
1023
  end
@@ -39,7 +39,7 @@ describe Puppet::Pops::Visitor do
39
39
 
40
40
  it "should select method for superclass" do
41
41
  duck_processor = DuckProcessor.new
42
- expect(duck_processor.hi(42)).to match(/Howdy (?:Fixnum|Integer)/)
42
+ expect(duck_processor.hi(42)).to match(/Howdy Integer/)
43
43
  end
44
44
 
45
45
  it "should select method for superclass" do
@@ -5,7 +5,6 @@ Puppet::Type.newtype(:property_test) do
5
5
  newparam(:name, isnamevar: true)
6
6
  end
7
7
  Puppet::Type.type(:property_test).provide(:property_test) do
8
- attr_accessor :foo
9
8
  end
10
9
 
11
10
  describe Puppet::Property do
@@ -3,28 +3,11 @@ require 'puppet/provider/nameservice'
3
3
  require 'puppet/etc'
4
4
  require 'puppet_spec/character_encoding'
5
5
 
6
- Puppet::Type.newtype(:nameservice_dummytype) do
7
- newparam(:name)
8
- ensurable
9
- newproperty(:foo)
10
- newproperty(:bar)
11
- end
12
-
13
- Puppet::Type.type(:nameservice_dummytype).provide(:nameservice_dummyprovider, parent: Puppet::Provider::NameService) do
14
- def posixmethod(param)
15
- param
16
- end
17
-
18
- def modifycmd(param, value)
19
- []
20
- end
21
- end
22
-
23
6
  describe Puppet::Provider::NameService do
24
7
 
25
8
  before :each do
26
- provider.class.initvars
27
- provider.class.resource_type = faketype
9
+ described_class.initvars
10
+ described_class.resource_type = faketype
28
11
  end
29
12
 
30
13
  # These are values getpwent might give you
@@ -58,12 +41,16 @@ describe Puppet::Provider::NameService do
58
41
  # The provider sometimes relies on @resource for valid properties so let's
59
42
  # create a fake type with properties that match our fake struct.
60
43
  let :faketype do
61
- Puppet::Type.type(:nameservice_dummytype)
44
+ Puppet::Type.newtype(:nameservice_dummytype) do
45
+ newparam(:name)
46
+ ensurable
47
+ newproperty(:foo)
48
+ newproperty(:bar)
49
+ end
62
50
  end
63
51
 
64
52
  let :provider do
65
- Puppet::Type.type(:nameservice_dummytype).provider(:nameservice_dummyprovider)
66
- .new(:name => 'bob', :foo => 'fooval', :bar => 'barval')
53
+ described_class.new(:name => 'bob', :foo => 'fooval', :bar => 'barval')
67
54
  end
68
55
 
69
56
  let :resource do
@@ -104,118 +91,61 @@ describe Puppet::Provider::NameService do
104
91
 
105
92
  describe "#options" do
106
93
  it "should add options for a valid property" do
107
- provider.class.options :foo, :key1 => 'val1', :key2 => 'val2'
108
- provider.class.options :bar, :key3 => 'val3'
109
- expect(provider.class.option(:foo, :key1)).to eq('val1')
110
- expect(provider.class.option(:foo, :key2)).to eq('val2')
111
- expect(provider.class.option(:bar, :key3)).to eq('val3')
94
+ described_class.options :foo, :key1 => 'val1', :key2 => 'val2'
95
+ described_class.options :bar, :key3 => 'val3'
96
+ expect(described_class.option(:foo, :key1)).to eq('val1')
97
+ expect(described_class.option(:foo, :key2)).to eq('val2')
98
+ expect(described_class.option(:bar, :key3)).to eq('val3')
112
99
  end
113
100
 
114
101
  it "should raise an error for an invalid property" do
115
- expect { provider.class.options :baz, :key1 => 'val1' }.to raise_error(
102
+ expect { described_class.options :baz, :key1 => 'val1' }.to raise_error(
116
103
  Puppet::Error, 'baz is not a valid attribute for nameservice_dummytype')
117
104
  end
118
105
  end
119
106
 
120
107
  describe "#option" do
121
108
  it "should return the correct value" do
122
- provider.class.options :foo, :key1 => 'val1', :key2 => 'val2'
123
- expect(provider.class.option(:foo, :key2)).to eq('val2')
109
+ described_class.options :foo, :key1 => 'val1', :key2 => 'val2'
110
+ expect(described_class.option(:foo, :key2)).to eq('val2')
124
111
  end
125
112
 
126
113
  it "should symbolize the name first" do
127
- provider.class.options :foo, :key1 => 'val1', :key2 => 'val2'
128
- expect(provider.class.option('foo', :key2)).to eq('val2')
114
+ described_class.options :foo, :key1 => 'val1', :key2 => 'val2'
115
+ expect(described_class.option('foo', :key2)).to eq('val2')
129
116
  end
130
117
 
131
118
  it "should return nil if no option has been specified earlier" do
132
- expect(provider.class.option(:foo, :key2)).to be_nil
119
+ expect(described_class.option(:foo, :key2)).to be_nil
133
120
  end
134
121
 
135
122
  it "should return nil if no option for that property has been specified earlier" do
136
- provider.class.options :bar, :key2 => 'val2'
137
- expect(provider.class.option(:foo, :key2)).to be_nil
123
+ described_class.options :bar, :key2 => 'val2'
124
+ expect(described_class.option(:foo, :key2)).to be_nil
138
125
  end
139
126
 
140
127
  it "should return nil if no matching key can be found for that property" do
141
- provider.class.options :foo, :key3 => 'val2'
142
- expect(provider.class.option(:foo, :key2)).to be_nil
128
+ described_class.options :foo, :key3 => 'val2'
129
+ expect(described_class.option(:foo, :key2)).to be_nil
143
130
  end
144
131
  end
145
132
 
146
133
  describe "#section" do
147
134
  it "should raise an error if resource_type has not been set" do
148
- expect(provider.class).to receive(:resource_type).and_return(nil)
149
- expect { provider.class.section }.to raise_error Puppet::Error, 'Cannot determine Etc section without a resource type'
135
+ expect(described_class).to receive(:resource_type).and_return(nil)
136
+ expect { described_class.section }.to raise_error Puppet::Error, 'Cannot determine Etc section without a resource type'
150
137
  end
151
138
 
152
139
  # the return values are hard coded so I am using types that actually make
153
140
  # use of the nameservice provider
154
141
  it "should return pw for users" do
155
- provider.class.resource_type = Puppet::Type.type(:user)
156
- expect(provider.class.section).to eq('pw')
157
- end
158
-
159
- it "should return gr for groups" do
160
- provider.class.resource_type = Puppet::Type.type(:group)
161
- expect(provider.class.section).to eq('gr')
162
- end
163
- end
164
-
165
- describe "#listbyname" do
166
- it "should be deprecated" do
167
- expect(Puppet).to receive(:deprecation_warning).with(/listbyname is deprecated/)
168
- described_class.listbyname
169
- end
170
-
171
- it "should return a list of users if resource_type is user" do
172
142
  described_class.resource_type = Puppet::Type.type(:user)
173
- expect(Puppet::Etc).to receive(:setpwent)
174
- allow(Puppet::Etc).to receive(:getpwent).and_return(*users)
175
- expect(Puppet::Etc).to receive(:endpwent)
176
- expect(described_class.listbyname).to eq(%w{root foo})
143
+ expect(described_class.section).to eq('pw')
177
144
  end
178
145
 
179
- context "encoding handling" do
180
- described_class.resource_type = Puppet::Type.type(:user)
181
-
182
- # These two tests simulate an environment where there are two users with
183
- # the same name on disk, but each name is stored on disk in a different
184
- # encoding
185
- it "should return names with invalid byte sequences replaced with '?'" do
186
- allow(Etc).to receive(:getpwent).and_return(*utf_8_mixed_users)
187
- expect(invalid_utf_8_jose).to_not be_valid_encoding
188
- result = PuppetSpec::CharacterEncoding.with_external_encoding(Encoding::UTF_8) do
189
- described_class.listbyname
190
- end
191
- expect(result).to eq(['root', 'foo', utf_8_jose, escaped_utf_8_jose])
192
- end
193
-
194
- it "should return names in their original encoding/bytes if they would not be valid UTF-8" do
195
- allow(Etc).to receive(:getpwent).and_return(*latin_1_mixed_users)
196
- result = PuppetSpec::CharacterEncoding.with_external_encoding(Encoding::ISO_8859_1) do
197
- described_class.listbyname
198
- end
199
- expect(result).to eq(['root'.force_encoding(Encoding::UTF_8), 'foo'.force_encoding(Encoding::UTF_8), utf_8_jose, valid_latin1_jose])
200
- end
201
- end
202
-
203
- it "should return a list of groups if resource_type is group", :unless => Puppet::Util::Platform.windows? do
146
+ it "should return gr for groups" do
204
147
  described_class.resource_type = Puppet::Type.type(:group)
205
- expect(Puppet::Etc).to receive(:setgrent)
206
- allow(Puppet::Etc).to receive(:getgrent).and_return(*groups)
207
- expect(Puppet::Etc).to receive(:endgrent)
208
- expect(described_class.listbyname).to eq(%w{root bin})
209
- end
210
-
211
- it "should yield if a block given" do
212
- yield_results = []
213
- described_class.resource_type = Puppet::Type.type(:user)
214
- expect(Puppet::Etc).to receive(:setpwent)
215
- allow(Puppet::Etc).to receive(:getpwent).and_return(*users)
216
- expect(Puppet::Etc).to receive(:endpwent)
217
- described_class.listbyname {|x| yield_results << x }
218
- expect(yield_results).to eq(%w{root foo})
148
+ expect(described_class.section).to eq('gr')
219
149
  end
220
150
  end
221
151
 
@@ -226,7 +156,7 @@ describe Puppet::Provider::NameService do
226
156
  # encoding
227
157
  allow(Etc).to receive(:getpwent).and_return(*utf_8_mixed_users)
228
158
  result = PuppetSpec::CharacterEncoding.with_external_encoding(Encoding::UTF_8) do
229
- provider.class.instances
159
+ described_class.instances
230
160
  end
231
161
  expect(result.map(&:name)).to eq(
232
162
  [
@@ -241,7 +171,7 @@ describe Puppet::Provider::NameService do
241
171
  it "should have object names in their original encoding/bytes if they would not be valid UTF-8" do
242
172
  allow(Etc).to receive(:getpwent).and_return(*latin_1_mixed_users)
243
173
  result = PuppetSpec::CharacterEncoding.with_external_encoding(Encoding::ISO_8859_1) do
244
- provider.class.instances
174
+ described_class.instances
245
175
  end
246
176
  expect(result.map(&:name)).to eq(
247
177
  [
@@ -256,40 +186,40 @@ describe Puppet::Provider::NameService do
256
186
  it "should pass the Puppet::Etc :canonical_name Struct member to the constructor" do
257
187
  users = [ Struct::Passwd.new(invalid_utf_8_jose, invalid_utf_8_jose, 1002, 2000), nil ]
258
188
  allow(Etc).to receive(:getpwent).and_return(*users)
259
- expect(provider.class).to receive(:new).with(:name => escaped_utf_8_jose, :canonical_name => invalid_utf_8_jose, :ensure => :present)
260
- provider.class.instances
189
+ expect(described_class).to receive(:new).with(:name => escaped_utf_8_jose, :canonical_name => invalid_utf_8_jose, :ensure => :present)
190
+ described_class.instances
261
191
  end
262
192
  end
263
193
 
264
194
  describe "validate" do
265
195
  it "should pass if no check is registered at all" do
266
- expect { provider.class.validate(:foo, 300) }.to_not raise_error
267
- expect { provider.class.validate('foo', 300) }.to_not raise_error
196
+ expect { described_class.validate(:foo, 300) }.to_not raise_error
197
+ expect { described_class.validate('foo', 300) }.to_not raise_error
268
198
  end
269
199
 
270
200
  it "should pass if no check for that property is registered" do
271
- provider.class.verify(:bar, 'Must be 100') { |val| val == 100 }
272
- expect { provider.class.validate(:foo, 300) }.to_not raise_error
273
- expect { provider.class.validate('foo', 300) }.to_not raise_error
201
+ described_class.verify(:bar, 'Must be 100') { |val| val == 100 }
202
+ expect { described_class.validate(:foo, 300) }.to_not raise_error
203
+ expect { described_class.validate('foo', 300) }.to_not raise_error
274
204
  end
275
205
 
276
206
  it "should pass if the value is valid" do
277
- provider.class.verify(:foo, 'Must be 100') { |val| val == 100 }
278
- expect { provider.class.validate(:foo, 100) }.to_not raise_error
279
- expect { provider.class.validate('foo', 100) }.to_not raise_error
207
+ described_class.verify(:foo, 'Must be 100') { |val| val == 100 }
208
+ expect { described_class.validate(:foo, 100) }.to_not raise_error
209
+ expect { described_class.validate('foo', 100) }.to_not raise_error
280
210
  end
281
211
 
282
212
  it "should raise an error if the value is invalid" do
283
- provider.class.verify(:foo, 'Must be 100') { |val| val == 100 }
284
- expect { provider.class.validate(:foo, 200) }.to raise_error(ArgumentError, 'Invalid value 200: Must be 100')
285
- expect { provider.class.validate('foo', 200) }.to raise_error(ArgumentError, 'Invalid value 200: Must be 100')
213
+ described_class.verify(:foo, 'Must be 100') { |val| val == 100 }
214
+ expect { described_class.validate(:foo, 200) }.to raise_error(ArgumentError, 'Invalid value 200: Must be 100')
215
+ expect { described_class.validate('foo', 200) }.to raise_error(ArgumentError, 'Invalid value 200: Must be 100')
286
216
  end
287
217
  end
288
218
 
289
219
  describe "getinfo" do
290
220
  before :each do
291
221
  # with section=foo we'll call Etc.getfoonam instead of getpwnam or getgrnam
292
- allow(provider.class).to receive(:section).and_return('foo')
222
+ allow(described_class).to receive(:section).and_return('foo')
293
223
  resource # initialize the resource so our provider has a @resource instance variable
294
224
  end
295
225
 
@@ -309,13 +239,13 @@ describe Puppet::Provider::NameService do
309
239
  # overriding to UTF-8, in @canonical_name for querying that state on disk
310
240
  # again if needed
311
241
  it "should use the instance's @canonical_name to query the system" do
312
- provider_instance = provider.class.new(:name => 'foo', :canonical_name => 'original_foo', :ensure => :present)
242
+ provider_instance = described_class.new(:name => 'foo', :canonical_name => 'original_foo', :ensure => :present)
313
243
  expect(Puppet::Etc).to receive(:send).with(:getfoonam, 'original_foo')
314
244
  provider_instance.getinfo(true)
315
245
  end
316
246
 
317
247
  it "should use the instance's name instead of canonical_name if not supplied during instantiation" do
318
- provider_instance = provider.class.new(:name => 'foo', :ensure => :present)
248
+ provider_instance = described_class.new(:name => 'foo', :ensure => :present)
319
249
  expect(Puppet::Etc).to receive(:send).with(:getfoonam, 'foo')
320
250
  provider_instance.getinfo(true)
321
251
  end
@@ -323,6 +253,16 @@ describe Puppet::Provider::NameService do
323
253
 
324
254
  describe "info2hash" do
325
255
  it "should return a hash with all properties" do
256
+ # we have to have an implementation of posixmethod which has to
257
+ # convert a propertyname (e.g. comment) into a fieldname of our
258
+ # Struct (e.g. gecos). I do not want to test posixmethod here so
259
+ # let's fake an implementation which does not do any translation. We
260
+ # expect two method invocations because info2hash calls the method
261
+ # twice if the Struct responds to the propertyname (our fake Struct
262
+ # provides values for :foo and :bar) TODO: Fix that
263
+ expect(provider).to receive(:posixmethod).with(:foo).and_return(:foo).twice
264
+ expect(provider).to receive(:posixmethod).with(:bar).and_return(:bar).twice
265
+ expect(provider).to receive(:posixmethod).with(:ensure).and_return(:ensure)
326
266
  expect(provider.info2hash(fakeetcobject)).to eq({ :foo => 'fooval', :bar => 'barval' })
327
267
  end
328
268
  end
@@ -333,7 +273,7 @@ describe Puppet::Provider::NameService do
333
273
  end
334
274
 
335
275
  it "should return the munged value otherwise" do
336
- provider.class.options(:foo, :munge => proc { |x| x*2 })
276
+ described_class.options(:foo, :munge => proc { |x| x*2 })
337
277
  expect(provider.munge(:foo, 100)).to eq(200)
338
278
  end
339
279
  end
@@ -344,7 +284,7 @@ describe Puppet::Provider::NameService do
344
284
  end
345
285
 
346
286
  it "should return the unmunged value otherwise" do
347
- provider.class.options(:foo, :unmunge => proc { |x| x/2 })
287
+ described_class.options(:foo, :unmunge => proc { |x| x/2 })
348
288
  expect(provider.unmunge(:foo, 200)).to eq(100)
349
289
  end
350
290
  end
@@ -362,13 +302,15 @@ describe Puppet::Provider::NameService do
362
302
  end
363
303
 
364
304
  describe "get" do
305
+ before(:each) {described_class.resource_type = faketype }
306
+
365
307
  it "should return the correct getinfo value" do
366
308
  expect(provider).to receive(:getinfo).with(false).and_return(:foo => 'fooval', :bar => 'barval')
367
309
  expect(provider.get(:bar)).to eq('barval')
368
310
  end
369
311
 
370
312
  it "should unmunge the value first" do
371
- provider.class.options(:bar, :munge => proc { |x| x*2}, :unmunge => proc {|x| x/2})
313
+ described_class.options(:bar, :munge => proc { |x| x*2}, :unmunge => proc {|x| x/2})
372
314
  expect(provider).to receive(:getinfo).with(false).and_return(:foo => 200, :bar => 500)
373
315
  expect(provider.get(:bar)).to eq(250)
374
316
  end
@@ -383,7 +325,7 @@ describe Puppet::Provider::NameService do
383
325
  describe "set" do
384
326
  before :each do
385
327
  resource # initialize resource so our provider has a @resource object
386
- provider.class.verify(:foo, 'Must be 100') { |val| val == 100 }
328
+ described_class.verify(:foo, 'Must be 100') { |val| val == 100 }
387
329
  end
388
330
 
389
331
  it "should raise an error on invalid values" do
@@ -397,7 +339,7 @@ describe Puppet::Provider::NameService do
397
339
  end
398
340
 
399
341
  it "should munge the value first" do
400
- provider.class.options(:foo, :munge => proc { |x| x*2}, :unmunge => proc {|x| x/2})
342
+ described_class.options(:foo, :munge => proc { |x| x*2}, :unmunge => proc {|x| x/2})
401
343
  expect(provider).to receive(:modifycmd).with(:foo, 200).and_return(['/bin/modify', '-f', '200' ])
402
344
  expect(provider).to receive(:execute).with(['/bin/modify', '-f', '200'], hash_including(custom_environment: {}))
403
345
  provider.set(:foo, 100)