puppet 5.3.4 → 6.29.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 (2105) hide show
  1. checksums.yaml +7 -0
  2. data/CODEOWNERS +11 -0
  3. data/CODE_OF_CONDUCT.md +70 -0
  4. data/CONTRIBUTING.md +59 -55
  5. data/Gemfile +52 -70
  6. data/Gemfile.lock +251 -0
  7. data/Guardfile.example +76 -0
  8. data/LICENSE +189 -4
  9. data/README.md +31 -37
  10. data/Rakefile +53 -52
  11. data/conf/auth.conf +7 -2
  12. data/conf/environment.conf +1 -1
  13. data/conf/fileserver.conf +1 -1
  14. data/conf/puppet.conf +4 -4
  15. data/{ext → examples/enc}/regexp_nodes/classes/databases +0 -0
  16. data/{ext → examples/enc}/regexp_nodes/classes/webservers +0 -0
  17. data/{ext → examples/enc}/regexp_nodes/environment/development +0 -0
  18. data/{ext → examples/enc}/regexp_nodes/parameters/service/prod +0 -0
  19. data/{ext → examples/enc}/regexp_nodes/parameters/service/qa +0 -0
  20. data/{ext → examples/enc}/regexp_nodes/parameters/service/sandbox +0 -0
  21. data/{ext → examples/enc}/regexp_nodes/regexp_nodes.rb +19 -20
  22. data/{ext → examples}/nagios/check_puppet.rb +2 -2
  23. data/ext/README.md +13 -0
  24. data/ext/build_defaults.yaml +1 -2
  25. data/ext/hiera/hiera.yaml +1 -1
  26. data/ext/osx/puppet.plist +2 -0
  27. data/ext/project_data.yaml +16 -12
  28. data/ext/redhat/client.init +2 -2
  29. data/ext/solaris/smf/puppet +11 -11
  30. data/ext/solaris/smf/puppet.xml +2 -0
  31. data/ext/windows/service/daemon.rb +40 -10
  32. data/install.rb +8 -27
  33. data/lib/hiera/puppet_function.rb +1 -1
  34. data/lib/hiera/scope.rb +31 -2
  35. data/lib/hiera_puppet.rb +2 -1
  36. data/lib/puppet/agent/locker.rb +0 -7
  37. data/lib/puppet/agent.rb +68 -26
  38. data/lib/puppet/application/agent.rb +107 -59
  39. data/lib/puppet/application/apply.rb +144 -74
  40. data/lib/puppet/application/cert.rb +27 -285
  41. data/lib/puppet/application/describe.rb +10 -15
  42. data/lib/puppet/application/device.rb +241 -89
  43. data/lib/puppet/application/doc.rb +8 -5
  44. data/lib/puppet/application/face_base.rb +23 -16
  45. data/lib/puppet/application/facts.rb +5 -0
  46. data/lib/puppet/application/filebucket.rb +51 -16
  47. data/lib/puppet/application/lookup.rb +92 -20
  48. data/lib/puppet/application/plugin.rb +1 -0
  49. data/lib/puppet/application/resource.rb +39 -23
  50. data/lib/puppet/application/script.rb +264 -0
  51. data/lib/puppet/application/ssl.rb +288 -0
  52. data/lib/puppet/application.rb +25 -9
  53. data/lib/puppet/application_support.rb +9 -3
  54. data/lib/puppet/concurrent/lock.rb +16 -0
  55. data/lib/puppet/concurrent/synchronized.rb +15 -0
  56. data/lib/puppet/concurrent/thread_local_singleton.rb +17 -0
  57. data/lib/puppet/concurrent.rb +2 -0
  58. data/lib/puppet/configurer/downloader.rb +36 -18
  59. data/lib/puppet/configurer/fact_handler.rb +5 -1
  60. data/lib/puppet/configurer/plugin_handler.rb +36 -11
  61. data/lib/puppet/configurer.rb +367 -152
  62. data/lib/puppet/confine/any.rb +1 -1
  63. data/lib/puppet/confine/boolean.rb +45 -0
  64. data/lib/puppet/confine/false.rb +7 -1
  65. data/lib/puppet/confine/true.rb +7 -1
  66. data/lib/puppet/confine/variable.rb +1 -1
  67. data/lib/puppet/confine.rb +6 -3
  68. data/lib/puppet/confine_collection.rb +2 -1
  69. data/lib/puppet/context/trusted_information.rb +48 -4
  70. data/lib/puppet/context.rb +120 -48
  71. data/lib/puppet/daemon.rb +17 -30
  72. data/lib/puppet/datatypes/error.rb +21 -0
  73. data/lib/puppet/datatypes/impl/error.rb +40 -0
  74. data/lib/puppet/datatypes.rb +213 -0
  75. data/lib/puppet/defaults.rb +651 -371
  76. data/lib/puppet/environments.rb +218 -105
  77. data/lib/puppet/error.rb +52 -4
  78. data/lib/puppet/etc.rb +26 -7
  79. data/lib/puppet/external/dot.rb +23 -24
  80. data/lib/puppet/external/pson/pure/generator.rb +1 -1
  81. data/lib/puppet/external/pson/pure/parser.rb +3 -2
  82. data/lib/puppet/face/catalog.rb +20 -1
  83. data/lib/puppet/face/config.rb +167 -32
  84. data/lib/puppet/face/epp.rb +52 -15
  85. data/lib/puppet/face/facts.rb +210 -0
  86. data/lib/puppet/face/generate.rb +2 -0
  87. data/lib/puppet/face/help/action.erb +5 -1
  88. data/lib/puppet/face/help/face.erb +2 -1
  89. data/lib/puppet/face/help/global.erb +2 -2
  90. data/lib/puppet/face/help/man.erb +1 -1
  91. data/lib/puppet/face/help.rb +80 -41
  92. data/lib/puppet/face/key.rb +1 -1
  93. data/lib/puppet/face/man.rb +55 -12
  94. data/lib/puppet/face/module/build.rb +5 -54
  95. data/lib/puppet/face/module/changes.rb +2 -1
  96. data/lib/puppet/face/module/generate.rb +6 -243
  97. data/lib/puppet/face/module/install.rb +1 -4
  98. data/lib/puppet/face/module/list.rb +5 -10
  99. data/lib/puppet/face/module/search.rb +13 -4
  100. data/lib/puppet/face/module/uninstall.rb +2 -5
  101. data/lib/puppet/face/module/upgrade.rb +2 -5
  102. data/lib/puppet/face/node/clean.rb +26 -12
  103. data/lib/puppet/face/node.rb +3 -3
  104. data/lib/puppet/face/parser.rb +78 -12
  105. data/lib/puppet/face/plugin.rb +9 -4
  106. data/lib/puppet/face/status.rb +3 -3
  107. data/lib/puppet/facter_impl.rb +96 -0
  108. data/lib/puppet/feature/base.rb +9 -28
  109. data/lib/puppet/feature/bolt.rb +3 -0
  110. data/lib/puppet/feature/eventlog.rb +1 -1
  111. data/lib/puppet/ffi/posix/constants.rb +14 -0
  112. data/lib/puppet/ffi/posix/functions.rb +24 -0
  113. data/lib/puppet/ffi/posix.rb +10 -0
  114. data/lib/puppet/file_bucket/dipper.rb +5 -5
  115. data/lib/puppet/file_bucket/file.rb +0 -2
  116. data/lib/puppet/file_serving/base.rb +16 -16
  117. data/lib/puppet/file_serving/configuration/parser.rb +2 -0
  118. data/lib/puppet/file_serving/configuration.rb +5 -1
  119. data/lib/puppet/file_serving/fileset.rb +17 -5
  120. data/lib/puppet/file_serving/http_metadata.rb +19 -5
  121. data/lib/puppet/file_serving/metadata.rb +12 -4
  122. data/lib/puppet/file_serving/mount/file.rb +6 -5
  123. data/lib/puppet/file_serving/mount/locales.rb +3 -3
  124. data/lib/puppet/file_serving/mount/modules.rb +4 -2
  125. data/lib/puppet/file_serving/mount/pluginfacts.rb +3 -3
  126. data/lib/puppet/file_serving/mount/plugins.rb +3 -3
  127. data/lib/puppet/file_serving/mount/scripts.rb +24 -0
  128. data/lib/puppet/file_serving/mount/tasks.rb +4 -2
  129. data/lib/puppet/file_serving/terminus_selector.rb +7 -8
  130. data/lib/puppet/file_system/file_impl.rb +45 -11
  131. data/lib/puppet/file_system/jruby.rb +23 -0
  132. data/lib/puppet/file_system/memory_file.rb +15 -2
  133. data/lib/puppet/file_system/memory_impl.rb +13 -0
  134. data/lib/puppet/file_system/posix.rb +3 -2
  135. data/lib/puppet/file_system/uniquefile.rb +15 -17
  136. data/lib/puppet/file_system/windows.rb +85 -2
  137. data/lib/puppet/file_system.rb +29 -15
  138. data/lib/puppet/forge/cache.rb +1 -1
  139. data/lib/puppet/forge/errors.rb +5 -5
  140. data/lib/puppet/forge/repository.rb +28 -87
  141. data/lib/puppet/forge.rb +45 -22
  142. data/lib/puppet/functions/abs.rb +61 -0
  143. data/lib/puppet/functions/alert.rb +1 -1
  144. data/lib/puppet/functions/all.rb +15 -11
  145. data/lib/puppet/functions/annotate.rb +11 -11
  146. data/lib/puppet/functions/any.rb +15 -11
  147. data/lib/puppet/functions/assert_type.rb +7 -7
  148. data/lib/puppet/functions/binary_file.rb +14 -2
  149. data/lib/puppet/functions/break.rb +34 -9
  150. data/lib/puppet/functions/call.rb +43 -5
  151. data/lib/puppet/functions/camelcase.rb +62 -0
  152. data/lib/puppet/functions/capitalize.rb +61 -0
  153. data/lib/puppet/functions/ceiling.rb +37 -0
  154. data/lib/puppet/functions/chomp.rb +57 -0
  155. data/lib/puppet/functions/chop.rb +67 -0
  156. data/lib/puppet/functions/compare.rb +125 -0
  157. data/lib/puppet/functions/contain.rb +25 -3
  158. data/lib/puppet/functions/convert_to.rb +34 -0
  159. data/lib/puppet/functions/crit.rb +1 -1
  160. data/lib/puppet/functions/debug.rb +1 -1
  161. data/lib/puppet/functions/defined.rb +11 -12
  162. data/lib/puppet/functions/dig.rb +47 -3
  163. data/lib/puppet/functions/downcase.rb +89 -0
  164. data/lib/puppet/functions/each.rb +20 -16
  165. data/lib/puppet/functions/emerg.rb +1 -1
  166. data/lib/puppet/functions/empty.rb +85 -0
  167. data/lib/puppet/functions/epp.rb +5 -4
  168. data/lib/puppet/functions/err.rb +1 -1
  169. data/lib/puppet/functions/eyaml_lookup_key.rb +21 -15
  170. data/lib/puppet/functions/filter.rb +31 -23
  171. data/lib/puppet/functions/find_file.rb +15 -2
  172. data/lib/puppet/functions/find_template.rb +63 -0
  173. data/lib/puppet/functions/flatten.rb +64 -0
  174. data/lib/puppet/functions/floor.rb +37 -0
  175. data/lib/puppet/functions/get.rb +150 -0
  176. data/lib/puppet/functions/getvar.rb +87 -0
  177. data/lib/puppet/functions/group_by.rb +62 -0
  178. data/lib/puppet/functions/hiera.rb +11 -11
  179. data/lib/puppet/functions/hiera_array.rb +11 -11
  180. data/lib/puppet/functions/hiera_hash.rb +12 -12
  181. data/lib/puppet/functions/hiera_include.rb +15 -15
  182. data/lib/puppet/functions/hocon_data.rb +1 -1
  183. data/lib/puppet/functions/include.rb +34 -2
  184. data/lib/puppet/functions/index.rb +167 -0
  185. data/lib/puppet/functions/info.rb +1 -1
  186. data/lib/puppet/functions/inline_epp.rb +8 -7
  187. data/lib/puppet/functions/join.rb +56 -0
  188. data/lib/puppet/functions/json_data.rb +3 -3
  189. data/lib/puppet/functions/keys.rb +25 -0
  190. data/lib/puppet/functions/length.rb +44 -0
  191. data/lib/puppet/functions/lest.rb +39 -1
  192. data/lib/puppet/functions/lookup.rb +3 -2
  193. data/lib/puppet/functions/lstrip.rb +58 -0
  194. data/lib/puppet/functions/map.rb +22 -18
  195. data/lib/puppet/functions/match.rb +19 -9
  196. data/lib/puppet/functions/max.rb +183 -0
  197. data/lib/puppet/functions/min.rb +182 -0
  198. data/lib/puppet/functions/module_directory.rb +41 -0
  199. data/lib/puppet/functions/new.rb +987 -8
  200. data/lib/puppet/functions/next.rb +20 -10
  201. data/lib/puppet/functions/notice.rb +1 -1
  202. data/lib/puppet/functions/partition.rb +62 -0
  203. data/lib/puppet/functions/reduce.rb +9 -11
  204. data/lib/puppet/functions/regsubst.rb +60 -35
  205. data/lib/puppet/functions/require.rb +42 -2
  206. data/lib/puppet/functions/return.rb +2 -9
  207. data/lib/puppet/functions/reverse_each.rb +72 -3
  208. data/lib/puppet/functions/round.rb +24 -0
  209. data/lib/puppet/functions/rstrip.rb +58 -0
  210. data/lib/puppet/functions/size.rb +15 -0
  211. data/lib/puppet/functions/slice.rb +23 -9
  212. data/lib/puppet/functions/sort.rb +74 -0
  213. data/lib/puppet/functions/split.rb +12 -10
  214. data/lib/puppet/functions/step.rb +74 -2
  215. data/lib/puppet/functions/strftime.rb +179 -10
  216. data/lib/puppet/functions/strip.rb +58 -0
  217. data/lib/puppet/functions/then.rb +65 -2
  218. data/lib/puppet/functions/tree_each.rb +32 -35
  219. data/lib/puppet/functions/type.rb +42 -1
  220. data/lib/puppet/functions/unique.rb +13 -13
  221. data/lib/puppet/functions/unwrap.rb +25 -6
  222. data/lib/puppet/functions/upcase.rb +89 -0
  223. data/lib/puppet/functions/values.rb +25 -0
  224. data/lib/puppet/functions/versioncmp.rb +7 -3
  225. data/lib/puppet/functions/warning.rb +1 -1
  226. data/lib/puppet/functions/with.rb +9 -7
  227. data/lib/puppet/functions/yaml_data.rb +11 -9
  228. data/lib/puppet/functions.rb +208 -91
  229. data/lib/puppet/generate/type.rb +12 -2
  230. data/lib/puppet/gettext/config.rb +31 -8
  231. data/lib/puppet/gettext/module_translations.rb +5 -5
  232. data/lib/puppet/gettext/stubs.rb +1 -1
  233. data/lib/puppet/graph/rb_tree_map.rb +2 -2
  234. data/lib/puppet/graph/relationship_graph.rb +2 -1
  235. data/lib/puppet/graph/simple_graph.rb +16 -10
  236. data/lib/puppet/graph.rb +0 -2
  237. data/lib/puppet/http/client.rb +468 -0
  238. data/lib/puppet/http/errors.rb +32 -0
  239. data/lib/puppet/http/external_client.rb +90 -0
  240. data/lib/puppet/http/redirector.rb +89 -0
  241. data/lib/puppet/http/resolver/server_list.rb +91 -0
  242. data/lib/puppet/http/resolver/settings.rb +26 -0
  243. data/lib/puppet/http/resolver/srv.rb +45 -0
  244. data/lib/puppet/http/resolver.rb +58 -0
  245. data/lib/puppet/http/response.rb +120 -0
  246. data/lib/puppet/http/retry_after_handler.rb +86 -0
  247. data/lib/puppet/http/service/ca.rb +112 -0
  248. data/lib/puppet/http/service/compiler.rb +393 -0
  249. data/lib/puppet/http/service/file_server.rb +207 -0
  250. data/lib/puppet/http/service/puppetserver.rb +39 -0
  251. data/lib/puppet/http/service/report.rb +66 -0
  252. data/lib/puppet/http/service.rb +196 -0
  253. data/lib/puppet/http/session.rb +131 -0
  254. data/lib/puppet/http.rb +37 -0
  255. data/lib/puppet/indirector/catalog/compiler.rb +60 -22
  256. data/lib/puppet/indirector/catalog/json.rb +14 -3
  257. data/lib/puppet/indirector/catalog/rest.rb +35 -0
  258. data/lib/puppet/indirector/catalog/yaml.rb +0 -16
  259. data/lib/puppet/indirector/certificate/file.rb +1 -1
  260. data/lib/puppet/indirector/certificate/rest.rb +3 -1
  261. data/lib/puppet/indirector/certificate_request/file.rb +1 -0
  262. data/lib/puppet/indirector/certificate_request/memory.rb +1 -0
  263. data/lib/puppet/indirector/certificate_request/rest.rb +1 -0
  264. data/lib/puppet/indirector/exec.rb +1 -1
  265. data/lib/puppet/indirector/face.rb +2 -2
  266. data/lib/puppet/indirector/fact_search.rb +60 -0
  267. data/lib/puppet/indirector/facts/facter.rb +31 -12
  268. data/lib/puppet/indirector/facts/json.rb +27 -0
  269. data/lib/puppet/indirector/facts/rest.rb +63 -0
  270. data/lib/puppet/indirector/facts/yaml.rb +7 -64
  271. data/lib/puppet/indirector/file_bucket_file/file.rb +7 -3
  272. data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
  273. data/lib/puppet/indirector/file_content/http.rb +8 -1
  274. data/lib/puppet/indirector/file_content/rest.rb +30 -0
  275. data/lib/puppet/indirector/file_metadata/http.rb +28 -8
  276. data/lib/puppet/indirector/file_metadata/rest.rb +53 -0
  277. data/lib/puppet/indirector/file_server.rb +5 -3
  278. data/lib/puppet/indirector/hiera.rb +6 -0
  279. data/lib/puppet/indirector/indirection.rb +59 -31
  280. data/lib/puppet/indirector/json.rb +6 -2
  281. data/lib/puppet/indirector/key/file.rb +2 -6
  282. data/lib/puppet/indirector/key/memory.rb +1 -0
  283. data/lib/puppet/indirector/msgpack.rb +2 -2
  284. data/lib/puppet/indirector/node/exec.rb +4 -5
  285. data/lib/puppet/indirector/node/json.rb +8 -0
  286. data/lib/puppet/indirector/node/rest.rb +24 -0
  287. data/lib/puppet/indirector/node/yaml.rb +0 -6
  288. data/lib/puppet/indirector/report/json.rb +34 -0
  289. data/lib/puppet/indirector/report/processor.rb +4 -3
  290. data/lib/puppet/indirector/report/rest.rb +19 -0
  291. data/lib/puppet/indirector/report/yaml.rb +23 -0
  292. data/lib/puppet/indirector/request.rb +49 -28
  293. data/lib/puppet/indirector/resource/ral.rb +7 -4
  294. data/lib/puppet/indirector/resource/validator.rb +1 -1
  295. data/lib/puppet/indirector/rest.rb +30 -66
  296. data/lib/puppet/indirector/ssl_file.rb +13 -52
  297. data/lib/puppet/indirector/status/rest.rb +18 -0
  298. data/lib/puppet/indirector/terminus.rb +11 -4
  299. data/lib/puppet/indirector/yaml.rb +5 -5
  300. data/lib/puppet/indirector.rb +3 -3
  301. data/lib/puppet/info_service/class_information_service.rb +1 -1
  302. data/lib/puppet/info_service/plan_information_service.rb +36 -0
  303. data/lib/puppet/info_service/task_information_service.rb +7 -3
  304. data/lib/puppet/info_service.rb +9 -0
  305. data/lib/puppet/interface/action.rb +23 -10
  306. data/lib/puppet/interface/action_builder.rb +8 -0
  307. data/lib/puppet/interface/action_manager.rb +2 -1
  308. data/lib/puppet/interface/documentation.rb +11 -7
  309. data/lib/puppet/interface/face_collection.rb +9 -4
  310. data/lib/puppet/interface/option.rb +4 -2
  311. data/lib/puppet/interface/option_manager.rb +5 -3
  312. data/lib/puppet/interface.rb +5 -3
  313. data/lib/puppet/loaders.rb +10 -1
  314. data/lib/puppet/metatype/manager.rb +81 -83
  315. data/lib/puppet/module/plan.rb +159 -0
  316. data/lib/puppet/module/task.rb +216 -32
  317. data/lib/puppet/module.rb +51 -39
  318. data/lib/puppet/module_tool/applications/application.rb +7 -6
  319. data/lib/puppet/module_tool/applications/checksummer.rb +3 -3
  320. data/lib/puppet/module_tool/applications/installer.rb +72 -13
  321. data/lib/puppet/module_tool/applications/uninstaller.rb +6 -5
  322. data/lib/puppet/module_tool/applications/unpacker.rb +4 -4
  323. data/lib/puppet/module_tool/applications/upgrader.rb +12 -8
  324. data/lib/puppet/module_tool/applications.rb +0 -1
  325. data/lib/puppet/module_tool/contents_description.rb +2 -1
  326. data/lib/puppet/module_tool/dependency.rb +1 -1
  327. data/lib/puppet/module_tool/errors/shared.rb +34 -2
  328. data/lib/puppet/module_tool/installed_modules.rb +3 -3
  329. data/lib/puppet/module_tool/local_tarball.rb +3 -3
  330. data/lib/puppet/module_tool/metadata.rb +5 -8
  331. data/lib/puppet/module_tool/shared_behaviors.rb +8 -7
  332. data/lib/puppet/module_tool/tar/mini.rb +14 -4
  333. data/lib/puppet/module_tool.rb +4 -6
  334. data/lib/puppet/network/authconfig.rb +5 -16
  335. data/lib/puppet/network/authstore.rb +3 -2
  336. data/lib/puppet/network/format_support.rb +15 -10
  337. data/lib/puppet/network/formats.rb +168 -10
  338. data/lib/puppet/network/http/api/indirected_routes.rb +31 -20
  339. data/lib/puppet/network/http/api/master/v3/environment.rb +5 -2
  340. data/lib/puppet/network/http/api/master/v3/environments.rb +2 -3
  341. data/lib/puppet/network/http/api.rb +1 -10
  342. data/lib/puppet/network/http/base_pool.rb +36 -0
  343. data/lib/puppet/network/http/compression.rb +8 -1
  344. data/lib/puppet/network/http/connection.rb +59 -36
  345. data/lib/puppet/network/http/connection_adapter.rb +184 -0
  346. data/lib/puppet/network/http/error.rb +3 -3
  347. data/lib/puppet/network/http/factory.rb +16 -18
  348. data/lib/puppet/network/http/handler.rb +60 -27
  349. data/lib/puppet/network/http/nocache_pool.rb +11 -4
  350. data/lib/puppet/network/http/pool.rb +24 -16
  351. data/lib/puppet/network/http/request.rb +2 -1
  352. data/lib/puppet/network/http/route.rb +4 -3
  353. data/lib/puppet/network/http/session.rb +3 -2
  354. data/lib/puppet/network/http/site.rb +5 -1
  355. data/lib/puppet/network/http.rb +2 -7
  356. data/lib/puppet/network/http_pool.rb +35 -1
  357. data/lib/puppet/network/resolver.rb +140 -67
  358. data/lib/puppet/network/rights.rb +3 -2
  359. data/lib/puppet/network/uri.rb +18 -0
  360. data/lib/puppet/node/environment.rb +65 -62
  361. data/lib/puppet/node/facts.rb +28 -1
  362. data/lib/puppet/node.rb +65 -8
  363. data/lib/puppet/pal/catalog_compiler.rb +108 -0
  364. data/lib/puppet/pal/compiler.rb +222 -0
  365. data/lib/puppet/pal/function_signature.rb +52 -0
  366. data/lib/puppet/pal/json_catalog_encoder.rb +67 -0
  367. data/lib/puppet/pal/pal_api.rb +15 -0
  368. data/lib/puppet/pal/pal_impl.rb +588 -0
  369. data/lib/puppet/pal/plan_signature.rb +71 -0
  370. data/lib/puppet/pal/script_compiler.rb +73 -0
  371. data/lib/puppet/pal/task_signature.rb +58 -0
  372. data/lib/puppet/parameter/boolean.rb +1 -1
  373. data/lib/puppet/parameter/value_collection.rb +8 -8
  374. data/lib/puppet/parameter.rb +17 -10
  375. data/lib/puppet/parser/abstract_compiler.rb +36 -0
  376. data/lib/puppet/parser/ast/branch.rb +4 -4
  377. data/lib/puppet/parser/ast/leaf.rb +10 -4
  378. data/lib/puppet/parser/ast/pops_bridge.rb +34 -68
  379. data/lib/puppet/parser/ast/resourceparam.rb +1 -1
  380. data/lib/puppet/parser/ast.rb +5 -9
  381. data/lib/puppet/parser/catalog_compiler.rb +56 -0
  382. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +3 -1
  383. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +9 -2
  384. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  385. data/lib/puppet/parser/compiler.rb +73 -93
  386. data/lib/puppet/parser/environment_compiler.rb +4 -1
  387. data/lib/puppet/parser/files.rb +2 -1
  388. data/lib/puppet/parser/functions/assert_type.rb +3 -3
  389. data/lib/puppet/parser/functions/create_resources.rb +18 -14
  390. data/lib/puppet/parser/functions/each.rb +2 -2
  391. data/lib/puppet/parser/functions/epp.rb +3 -3
  392. data/lib/puppet/parser/functions/fail.rb +8 -1
  393. data/lib/puppet/parser/functions/filter.rb +3 -2
  394. data/lib/puppet/parser/functions/fqdn_rand.rb +27 -4
  395. data/lib/puppet/parser/functions/generate.rb +8 -7
  396. data/lib/puppet/parser/functions/hiera.rb +4 -4
  397. data/lib/puppet/parser/functions/hiera_array.rb +5 -5
  398. data/lib/puppet/parser/functions/hiera_hash.rb +6 -6
  399. data/lib/puppet/parser/functions/hiera_include.rb +10 -11
  400. data/lib/puppet/parser/functions/inline_epp.rb +5 -5
  401. data/lib/puppet/parser/functions/inline_template.rb +7 -1
  402. data/lib/puppet/parser/functions/lest.rb +1 -1
  403. data/lib/puppet/parser/functions/lookup.rb +1 -1
  404. data/lib/puppet/parser/functions/map.rb +1 -1
  405. data/lib/puppet/parser/functions/new.rb +32 -47
  406. data/lib/puppet/parser/functions/realize.rb +6 -0
  407. data/lib/puppet/parser/functions/reduce.rb +1 -1
  408. data/lib/puppet/parser/functions/return.rb +22 -1
  409. data/lib/puppet/parser/functions/reverse_each.rb +2 -2
  410. data/lib/puppet/parser/functions/scanf.rb +1 -1
  411. data/lib/puppet/parser/functions/sha256.rb +5 -0
  412. data/lib/puppet/parser/functions/sprintf.rb +12 -1
  413. data/lib/puppet/parser/functions/step.rb +1 -1
  414. data/lib/puppet/parser/functions/tag.rb +6 -0
  415. data/lib/puppet/parser/functions/tagged.rb +6 -3
  416. data/lib/puppet/parser/functions/template.rb +5 -0
  417. data/lib/puppet/parser/functions/then.rb +1 -1
  418. data/lib/puppet/parser/functions/with.rb +4 -4
  419. data/lib/puppet/parser/functions.rb +60 -17
  420. data/lib/puppet/parser/parser_factory.rb +1 -1
  421. data/lib/puppet/parser/relationship.rb +2 -1
  422. data/lib/puppet/parser/resource/param.rb +18 -5
  423. data/lib/puppet/parser/resource.rb +11 -8
  424. data/lib/puppet/parser/scope.rb +48 -22
  425. data/lib/puppet/parser/script_compiler.rb +123 -0
  426. data/lib/puppet/parser/templatewrapper.rb +4 -2
  427. data/lib/puppet/parser/type_loader.rb +15 -14
  428. data/lib/puppet/parser.rb +1 -0
  429. data/lib/puppet/plugins/configuration.rb +5 -1
  430. data/lib/puppet/pops/adaptable.rb +8 -17
  431. data/lib/puppet/pops/adapters.rb +22 -4
  432. data/lib/puppet/pops/evaluator/access_operator.rb +39 -5
  433. data/lib/puppet/pops/evaluator/closure.rb +19 -9
  434. data/lib/puppet/pops/evaluator/collector_transformer.rb +1 -1
  435. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +4 -4
  436. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
  437. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +3 -2
  438. data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +2 -1
  439. data/lib/puppet/pops/evaluator/compare_operator.rb +7 -5
  440. data/lib/puppet/pops/evaluator/deferred_resolver.rb +132 -0
  441. data/lib/puppet/pops/evaluator/epp_evaluator.rb +15 -2
  442. data/lib/puppet/pops/evaluator/evaluator_impl.rb +82 -16
  443. data/lib/puppet/pops/evaluator/external_syntax_support.rb +6 -5
  444. data/lib/puppet/pops/evaluator/literal_evaluator.rb +1 -1
  445. data/lib/puppet/pops/evaluator/runtime3_converter.rb +24 -5
  446. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +5 -3
  447. data/lib/puppet/pops/evaluator/runtime3_support.rb +18 -21
  448. data/lib/puppet/pops/functions/dispatch.rb +13 -6
  449. data/lib/puppet/pops/functions/function.rb +2 -2
  450. data/lib/puppet/pops/issue_reporter.rb +18 -1
  451. data/lib/puppet/pops/issues.rb +73 -10
  452. data/lib/puppet/pops/loader/base_loader.rb +14 -2
  453. data/lib/puppet/pops/loader/dependency_loader.rb +11 -2
  454. data/lib/puppet/pops/loader/gem_support.rb +4 -2
  455. data/lib/puppet/pops/loader/generic_plan_instantiator.rb +28 -0
  456. data/lib/puppet/pops/loader/loader.rb +26 -5
  457. data/lib/puppet/pops/loader/loader_paths.rb +221 -32
  458. data/lib/puppet/pops/loader/module_loaders.rb +242 -40
  459. data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +93 -0
  460. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +9 -9
  461. data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +39 -0
  462. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -2
  463. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +121 -0
  464. data/lib/puppet/pops/loader/runtime3_type_loader.rb +10 -3
  465. data/lib/puppet/pops/loader/static_loader.rb +23 -44
  466. data/lib/puppet/pops/loader/task_instantiator.rb +44 -0
  467. data/lib/puppet/pops/loader/type_definition_instantiator.rb +8 -1
  468. data/lib/puppet/pops/loaders.rb +169 -50
  469. data/lib/puppet/pops/lookup/context.rb +1 -1
  470. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +1 -1
  471. data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
  472. data/lib/puppet/pops/lookup/hiera_config.rb +16 -2
  473. data/lib/puppet/pops/lookup/interpolation.rb +3 -2
  474. data/lib/puppet/pops/lookup/invocation.rb +10 -3
  475. data/lib/puppet/pops/lookup/key_recorder.rb +18 -0
  476. data/lib/puppet/pops/lookup/lookup_adapter.rb +65 -9
  477. data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
  478. data/lib/puppet/pops/lookup.rb +1 -0
  479. data/lib/puppet/pops/merge_strategy.rb +22 -18
  480. data/lib/puppet/pops/model/ast.pp +19 -0
  481. data/lib/puppet/pops/model/ast.rb +129 -1
  482. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  483. data/lib/puppet/pops/model/factory.rb +93 -13
  484. data/lib/puppet/pops/model/model_label_provider.rb +9 -1
  485. data/lib/puppet/pops/model/model_tree_dumper.rb +16 -1
  486. data/lib/puppet/pops/model/pn_transformer.rb +401 -0
  487. data/lib/puppet/pops/model/tree_dumper.rb +1 -1
  488. data/lib/puppet/pops/parser/code_merger.rb +4 -4
  489. data/lib/puppet/pops/parser/egrammar.ra +60 -18
  490. data/lib/puppet/pops/parser/eparser.rb +1926 -1745
  491. data/lib/puppet/pops/parser/epp_parser.rb +1 -1
  492. data/lib/puppet/pops/parser/epp_support.rb +9 -6
  493. data/lib/puppet/pops/parser/evaluating_parser.rb +9 -12
  494. data/lib/puppet/pops/parser/heredoc_support.rb +20 -10
  495. data/lib/puppet/pops/parser/interpolation_support.rb +16 -11
  496. data/lib/puppet/pops/parser/lexer2.rb +109 -100
  497. data/lib/puppet/pops/parser/lexer_support.rb +5 -4
  498. data/lib/puppet/pops/parser/locatable.rb +1 -1
  499. data/lib/puppet/pops/parser/locator.rb +116 -103
  500. data/lib/puppet/pops/parser/parser_support.rb +14 -5
  501. data/lib/puppet/pops/parser/pn_parser.rb +317 -0
  502. data/lib/puppet/pops/parser/slurp_support.rb +1 -3
  503. data/lib/puppet/pops/pcore.rb +43 -10
  504. data/lib/puppet/pops/pn.rb +236 -0
  505. data/lib/puppet/pops/puppet_stack.rb +55 -37
  506. data/lib/puppet/pops/resource/param.rb +1 -1
  507. data/lib/puppet/pops/resource/resource_type_impl.rb +4 -2
  508. data/lib/puppet/pops/serialization/abstract_reader.rb +4 -0
  509. data/lib/puppet/pops/serialization/abstract_writer.rb +6 -0
  510. data/lib/puppet/pops/serialization/extension.rb +1 -0
  511. data/lib/puppet/pops/serialization/from_data_converter.rb +68 -13
  512. data/lib/puppet/pops/serialization/json.rb +7 -7
  513. data/lib/puppet/pops/serialization/json_path.rb +5 -4
  514. data/lib/puppet/pops/serialization/object.rb +3 -4
  515. data/lib/puppet/pops/serialization/serializer.rb +2 -1
  516. data/lib/puppet/pops/serialization/to_data_converter.rb +24 -12
  517. data/lib/puppet/pops/serialization/to_stringified_converter.rb +226 -0
  518. data/lib/puppet/pops/serialization.rb +4 -2
  519. data/lib/puppet/pops/time/timespan.rb +4 -6
  520. data/lib/puppet/pops/types/class_loader.rb +6 -3
  521. data/lib/puppet/pops/types/implementation_registry.rb +28 -35
  522. data/lib/puppet/pops/types/iterable.rb +68 -13
  523. data/lib/puppet/pops/types/p_binary_type.rb +1 -2
  524. data/lib/puppet/pops/types/p_init_type.rb +1 -1
  525. data/lib/puppet/pops/types/p_meta_type.rb +5 -1
  526. data/lib/puppet/pops/types/p_object_type.rb +152 -17
  527. data/lib/puppet/pops/types/p_object_type_extension.rb +228 -0
  528. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +0 -1
  529. data/lib/puppet/pops/types/p_sem_ver_type.rb +18 -4
  530. data/lib/puppet/pops/types/p_sensitive_type.rb +11 -1
  531. data/lib/puppet/pops/types/p_timespan_type.rb +4 -4
  532. data/lib/puppet/pops/types/p_type_set_type.rb +28 -2
  533. data/lib/puppet/pops/types/p_uri_type.rb +190 -0
  534. data/lib/puppet/pops/types/puppet_object.rb +15 -1
  535. data/lib/puppet/pops/types/ruby_generator.rb +49 -58
  536. data/lib/puppet/pops/types/string_converter.rb +55 -23
  537. data/lib/puppet/pops/types/tree_iterators.rb +5 -1
  538. data/lib/puppet/pops/types/type_acceptor.rb +1 -1
  539. data/lib/puppet/pops/types/type_calculator.rb +45 -16
  540. data/lib/puppet/pops/types/type_factory.rb +46 -9
  541. data/lib/puppet/pops/types/type_formatter.rb +79 -17
  542. data/lib/puppet/pops/types/type_mismatch_describer.rb +3 -3
  543. data/lib/puppet/pops/types/type_parser.rb +112 -15
  544. data/lib/puppet/pops/types/type_with_members.rb +43 -0
  545. data/lib/puppet/pops/types/types.rb +231 -115
  546. data/lib/puppet/pops/utils.rb +2 -2
  547. data/lib/puppet/pops/validation/checker4_0.rb +181 -12
  548. data/lib/puppet/pops/validation/tasks_checker.rb +105 -0
  549. data/lib/puppet/pops/validation/validator_factory_4_0.rb +14 -8
  550. data/lib/puppet/pops/validation.rb +13 -20
  551. data/lib/puppet/pops/visitor.rb +12 -6
  552. data/lib/puppet/pops.rb +2 -1
  553. data/lib/puppet/property/ensure.rb +3 -2
  554. data/lib/puppet/property/keyvalue.rb +72 -9
  555. data/lib/puppet/property/list.rb +3 -2
  556. data/lib/puppet/property.rb +21 -18
  557. data/lib/puppet/provider/aix_object.rb +485 -0
  558. data/lib/puppet/provider/exec/posix.rb +16 -4
  559. data/lib/puppet/provider/exec.rb +71 -64
  560. data/lib/puppet/provider/file/posix.rb +11 -3
  561. data/lib/puppet/provider/file/windows.rb +50 -2
  562. data/lib/puppet/provider/group/aix.rb +69 -113
  563. data/lib/puppet/provider/group/groupadd.rb +92 -24
  564. data/lib/puppet/provider/group/ldap.rb +7 -4
  565. data/lib/puppet/provider/group/pw.rb +4 -2
  566. data/lib/puppet/provider/group/windows_adsi.rb +12 -8
  567. data/lib/puppet/provider/ldap.rb +8 -4
  568. data/lib/puppet/provider/nameservice/directoryservice.rb +12 -8
  569. data/lib/puppet/provider/nameservice/objectadd.rb +13 -24
  570. data/lib/puppet/provider/nameservice/pw.rb +14 -14
  571. data/lib/puppet/provider/nameservice.rb +20 -29
  572. data/lib/puppet/provider/network_device.rb +4 -2
  573. data/lib/puppet/provider/package/aix.rb +21 -4
  574. data/lib/puppet/provider/package/appdmg.rb +4 -3
  575. data/lib/puppet/provider/package/apple.rb +2 -2
  576. data/lib/puppet/provider/package/apt.rb +156 -10
  577. data/lib/puppet/provider/package/aptitude.rb +7 -1
  578. data/lib/puppet/provider/package/blastwave.rb +2 -1
  579. data/lib/puppet/provider/package/dnf.rb +7 -4
  580. data/lib/puppet/provider/package/dnfmodule.rb +141 -0
  581. data/lib/puppet/provider/package/dpkg.rb +51 -14
  582. data/lib/puppet/provider/package/fink.rb +22 -4
  583. data/lib/puppet/provider/package/gem.rb +151 -53
  584. data/lib/puppet/provider/package/macports.rb +8 -5
  585. data/lib/puppet/provider/package/nim.rb +19 -10
  586. data/lib/puppet/provider/package/openbsd.rb +30 -12
  587. data/lib/puppet/provider/package/opkg.rb +2 -1
  588. data/lib/puppet/provider/package/pacman.rb +9 -12
  589. data/lib/puppet/provider/package/pip.rb +271 -115
  590. data/lib/puppet/provider/package/pip2.rb +17 -0
  591. data/lib/puppet/provider/package/pip3.rb +2 -5
  592. data/lib/puppet/provider/package/pkg.rb +57 -10
  593. data/lib/puppet/provider/package/pkgdmg.rb +8 -7
  594. data/lib/puppet/provider/package/pkgng.rb +56 -26
  595. data/lib/puppet/provider/package/pkgutil.rb +4 -3
  596. data/lib/puppet/provider/package/portage.rb +32 -23
  597. data/lib/puppet/provider/package/portupgrade.rb +2 -1
  598. data/lib/puppet/provider/package/puppet_gem.rb +12 -3
  599. data/lib/puppet/provider/package/puppetserver_gem.rb +171 -0
  600. data/lib/puppet/provider/package/rpm.rb +87 -242
  601. data/lib/puppet/provider/package/sun.rb +2 -2
  602. data/lib/puppet/provider/package/windows/exe_package.rb +45 -10
  603. data/lib/puppet/provider/package/windows/msi_package.rb +8 -0
  604. data/lib/puppet/provider/package/windows/package.rb +14 -4
  605. data/lib/puppet/provider/package/windows.rb +21 -4
  606. data/lib/puppet/provider/package/yum.rb +143 -39
  607. data/lib/puppet/provider/package/zypper.rb +68 -7
  608. data/lib/puppet/provider/package.rb +4 -1
  609. data/lib/puppet/provider/package_targetable.rb +69 -0
  610. data/lib/puppet/provider/parsedfile.rb +43 -12
  611. data/lib/puppet/provider/service/base.rb +10 -7
  612. data/lib/puppet/provider/service/daemontools.rb +9 -9
  613. data/lib/puppet/provider/service/debian.rb +3 -0
  614. data/lib/puppet/provider/service/init.rb +11 -9
  615. data/lib/puppet/provider/service/launchd.rb +49 -17
  616. data/lib/puppet/provider/service/openbsd.rb +1 -1
  617. data/lib/puppet/provider/service/rcng.rb +2 -2
  618. data/lib/puppet/provider/service/redhat.rb +3 -2
  619. data/lib/puppet/provider/service/runit.rb +2 -8
  620. data/lib/puppet/provider/service/service.rb +2 -1
  621. data/lib/puppet/provider/service/smf.rb +60 -6
  622. data/lib/puppet/provider/service/systemd.rb +70 -26
  623. data/lib/puppet/provider/service/upstart.rb +39 -13
  624. data/lib/puppet/provider/service/windows.rb +117 -41
  625. data/lib/puppet/provider/user/aix.rb +223 -244
  626. data/lib/puppet/provider/user/directoryservice.rb +72 -16
  627. data/lib/puppet/provider/user/hpux.rb +2 -2
  628. data/lib/puppet/provider/user/ldap.rb +8 -4
  629. data/lib/puppet/provider/user/openbsd.rb +3 -2
  630. data/lib/puppet/provider/user/pw.rb +15 -5
  631. data/lib/puppet/provider/user/user_role_add.rb +17 -5
  632. data/lib/puppet/provider/user/useradd.rb +237 -62
  633. data/lib/puppet/provider/user/windows_adsi.rb +26 -2
  634. data/lib/puppet/provider.rb +41 -19
  635. data/lib/puppet/reference/configuration.rb +12 -3
  636. data/lib/puppet/reference/indirection.rb +2 -2
  637. data/lib/puppet/reference/metaparameter.rb +1 -3
  638. data/lib/puppet/reference/providers.rb +6 -7
  639. data/lib/puppet/reference/report.rb +1 -1
  640. data/lib/puppet/reference/type.rb +14 -19
  641. data/lib/puppet/relationship.rb +4 -9
  642. data/lib/puppet/reports/http.rb +15 -8
  643. data/lib/puppet/reports/store.rb +1 -1
  644. data/lib/puppet/reports.rb +3 -3
  645. data/lib/puppet/resource/capability_finder.rb +18 -14
  646. data/lib/puppet/resource/catalog.rb +49 -64
  647. data/lib/puppet/resource/status.rb +11 -3
  648. data/lib/puppet/resource/type.rb +28 -11
  649. data/lib/puppet/resource/type_collection.rb +27 -20
  650. data/lib/puppet/resource.rb +100 -24
  651. data/lib/puppet/rest/errors.rb +15 -0
  652. data/lib/puppet/rest/response.rb +35 -0
  653. data/lib/puppet/rest/route.rb +85 -0
  654. data/lib/puppet/rest/routes.rb +135 -0
  655. data/lib/puppet/runtime.rb +66 -0
  656. data/lib/puppet/settings/alias_setting.rb +37 -0
  657. data/lib/puppet/settings/base_setting.rb +34 -4
  658. data/lib/puppet/settings/config_file.rb +5 -5
  659. data/lib/puppet/settings/environment_conf.rb +12 -2
  660. data/lib/puppet/settings/file_setting.rb +3 -2
  661. data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
  662. data/lib/puppet/settings/ini_file.rb +67 -12
  663. data/lib/puppet/settings/server_list_setting.rb +9 -0
  664. data/lib/puppet/settings/ttl_setting.rb +5 -0
  665. data/lib/puppet/settings.rb +220 -67
  666. data/lib/puppet/ssl/base.rb +4 -11
  667. data/lib/puppet/ssl/certificate.rb +11 -4
  668. data/lib/puppet/ssl/certificate_request.rb +31 -23
  669. data/lib/puppet/ssl/certificate_request_attributes.rb +1 -1
  670. data/lib/puppet/ssl/certificate_signer.rb +11 -0
  671. data/lib/puppet/ssl/error.rb +26 -0
  672. data/lib/puppet/ssl/host.rb +291 -186
  673. data/lib/puppet/ssl/key.rb +5 -7
  674. data/lib/puppet/ssl/oids.rb +4 -3
  675. data/lib/puppet/ssl/openssl_loader.rb +24 -0
  676. data/lib/puppet/ssl/ssl_context.rb +30 -0
  677. data/lib/puppet/ssl/ssl_provider.rb +333 -0
  678. data/lib/puppet/ssl/state_machine.rb +472 -0
  679. data/lib/puppet/ssl/validator/default_validator.rb +61 -25
  680. data/lib/puppet/ssl/validator/no_validator.rb +3 -1
  681. data/lib/puppet/ssl/validator.rb +2 -1
  682. data/lib/puppet/ssl/verifier.rb +140 -0
  683. data/lib/puppet/ssl/verifier_adapter.rb +58 -0
  684. data/lib/puppet/ssl.rb +9 -3
  685. data/lib/puppet/syntax_checkers/base64.rb +1 -1
  686. data/lib/puppet/syntax_checkers/epp.rb +34 -0
  687. data/lib/puppet/syntax_checkers/json.rb +1 -1
  688. data/lib/puppet/syntax_checkers/pp.rb +34 -0
  689. data/lib/puppet/test/test_helper.rb +33 -18
  690. data/lib/puppet/thread_local.rb +7 -0
  691. data/lib/puppet/transaction/additional_resource_generator.rb +3 -3
  692. data/lib/puppet/transaction/event.rb +40 -16
  693. data/lib/puppet/transaction/event_manager.rb +17 -5
  694. data/lib/puppet/transaction/persistence.rb +22 -2
  695. data/lib/puppet/transaction/report.rb +57 -34
  696. data/lib/puppet/transaction/resource_harness.rb +9 -4
  697. data/lib/puppet/transaction.rb +77 -23
  698. data/lib/puppet/trusted_external.rb +41 -0
  699. data/lib/puppet/type/component.rb +2 -1
  700. data/lib/puppet/type/exec.rb +156 -66
  701. data/lib/puppet/type/file/checksum.rb +10 -4
  702. data/lib/puppet/type/file/checksum_value.rb +4 -3
  703. data/lib/puppet/type/file/content.rb +24 -8
  704. data/lib/puppet/type/file/ctime.rb +2 -1
  705. data/lib/puppet/type/file/data_sync.rb +8 -3
  706. data/lib/puppet/type/file/ensure.rb +11 -8
  707. data/lib/puppet/type/file/mode.rb +15 -3
  708. data/lib/puppet/type/file/mtime.rb +2 -1
  709. data/lib/puppet/type/file/selcontext.rb +2 -1
  710. data/lib/puppet/type/file/source.rb +98 -75
  711. data/lib/puppet/type/file/target.rb +2 -1
  712. data/lib/puppet/type/file/type.rb +2 -1
  713. data/lib/puppet/type/file.rb +146 -51
  714. data/lib/puppet/type/filebucket.rb +15 -11
  715. data/lib/puppet/type/group.rb +43 -12
  716. data/lib/puppet/type/notify.rb +6 -5
  717. data/lib/puppet/type/package.rb +185 -35
  718. data/lib/puppet/type/resources.rb +15 -4
  719. data/lib/puppet/type/schedule.rb +59 -99
  720. data/lib/puppet/type/service.rb +76 -25
  721. data/lib/puppet/type/stage.rb +1 -1
  722. data/lib/puppet/type/tidy.rb +57 -18
  723. data/lib/puppet/type/user.rb +186 -101
  724. data/lib/puppet/type.rb +159 -90
  725. data/lib/puppet/util/at_fork.rb +1 -1
  726. data/lib/puppet/util/autoload.rb +51 -62
  727. data/lib/puppet/util/backups.rb +1 -1
  728. data/lib/puppet/util/character_encoding.rb +11 -29
  729. data/lib/puppet/util/checksums.rb +101 -7
  730. data/lib/puppet/util/classgen.rb +12 -12
  731. data/lib/puppet/util/command_line/trollop.rb +1 -1
  732. data/lib/puppet/util/command_line.rb +16 -10
  733. data/lib/puppet/util/connection.rb +88 -0
  734. data/lib/puppet/util/diff.rb +4 -2
  735. data/lib/puppet/util/errors.rb +0 -2
  736. data/lib/puppet/util/execution.rb +28 -11
  737. data/lib/puppet/util/fact_dif.rb +81 -0
  738. data/lib/puppet/util/feature.rb +77 -43
  739. data/lib/puppet/util/fileparsing.rb +79 -46
  740. data/lib/puppet/util/filetype.rb +62 -13
  741. data/lib/puppet/util/http_proxy.rb +37 -25
  742. data/lib/puppet/util/inifile.rb +3 -4
  743. data/lib/puppet/util/instance_loader.rb +16 -29
  744. data/lib/puppet/util/json.rb +89 -0
  745. data/lib/puppet/util/json_lockfile.rb +3 -3
  746. data/lib/puppet/util/ldap/connection.rb +11 -9
  747. data/lib/puppet/util/ldap/manager.rb +6 -3
  748. data/lib/puppet/util/log/destinations.rb +21 -17
  749. data/lib/puppet/util/log.rb +26 -17
  750. data/lib/puppet/util/logging.rb +36 -47
  751. data/lib/puppet/util/metric.rb +4 -3
  752. data/lib/puppet/util/monkey_patches.rb +76 -23
  753. data/lib/puppet/util/network_device/base.rb +1 -1
  754. data/lib/puppet/util/network_device/config.rb +2 -3
  755. data/lib/puppet/util/package/version/debian.rb +175 -0
  756. data/lib/puppet/util/package/version/gem.rb +15 -0
  757. data/lib/puppet/util/package/version/pip.rb +167 -0
  758. data/lib/puppet/util/package/version/range/eq.rb +14 -0
  759. data/lib/puppet/util/package/version/range/gt.rb +14 -0
  760. data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
  761. data/lib/puppet/util/package/version/range/lt.rb +14 -0
  762. data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
  763. data/lib/puppet/util/package/version/range/min_max.rb +21 -0
  764. data/lib/puppet/util/package/version/range/simple.rb +11 -0
  765. data/lib/puppet/util/package/version/range.rb +53 -0
  766. data/lib/puppet/util/package/version/rpm.rb +73 -0
  767. data/lib/puppet/util/package.rb +25 -16
  768. data/lib/puppet/util/pidlock.rb +45 -5
  769. data/lib/puppet/util/platform.rb +48 -0
  770. data/lib/puppet/util/plist.rb +10 -4
  771. data/lib/puppet/util/posix.rb +69 -3
  772. data/lib/puppet/util/provider_features.rb +5 -10
  773. data/lib/puppet/util/rdoc/code_objects.rb +2 -1
  774. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +6 -4
  775. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +2 -2
  776. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -1
  777. data/lib/puppet/util/rdoc.rb +2 -2
  778. data/lib/puppet/util/reference.rb +10 -16
  779. data/lib/puppet/util/resource_template.rb +1 -1
  780. data/lib/puppet/util/rpm_compare.rb +193 -0
  781. data/lib/puppet/util/rubygems.rb +6 -14
  782. data/lib/puppet/util/run_mode.rb +6 -2
  783. data/lib/puppet/util/selinux.rb +41 -8
  784. data/lib/puppet/util/skip_tags.rb +4 -0
  785. data/lib/puppet/util/ssl.rb +31 -1
  786. data/lib/puppet/util/storage.rb +13 -2
  787. data/lib/puppet/util/suidmanager.rb +8 -7
  788. data/lib/puppet/util/symbolic_file_mode.rb +29 -17
  789. data/lib/puppet/util/tag_set.rb +1 -1
  790. data/lib/puppet/util/tagging.rb +19 -5
  791. data/lib/puppet/util/warnings.rb +0 -2
  792. data/lib/puppet/util/windows/adsi.rb +305 -206
  793. data/lib/puppet/util/windows/api_types.rb +60 -33
  794. data/lib/puppet/util/windows/com.rb +2 -1
  795. data/lib/puppet/util/windows/eventlog.rb +1 -6
  796. data/lib/puppet/util/windows/file.rb +20 -2
  797. data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
  798. data/lib/puppet/util/windows/principal.rb +24 -14
  799. data/lib/puppet/util/windows/process.rb +93 -4
  800. data/lib/puppet/util/windows/registry.rb +48 -16
  801. data/lib/puppet/util/windows/root_certs.rb +1 -1
  802. data/lib/puppet/util/windows/security.rb +66 -16
  803. data/lib/puppet/util/windows/service.rb +1147 -0
  804. data/lib/puppet/util/windows/sid.rb +68 -12
  805. data/lib/puppet/util/windows/user.rb +254 -14
  806. data/lib/puppet/util/windows.rb +23 -2
  807. data/lib/puppet/util/yaml.rb +62 -7
  808. data/lib/puppet/util.rb +130 -55
  809. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +18 -18
  810. data/lib/puppet/vendor/require_vendored.rb +0 -1
  811. data/lib/puppet/vendor.rb +1 -1
  812. data/lib/puppet/version.rb +2 -5
  813. data/lib/puppet/x509/cert_provider.rb +355 -0
  814. data/lib/puppet/x509/pem_store.rb +55 -0
  815. data/lib/puppet/x509.rb +7 -0
  816. data/lib/puppet.rb +83 -36
  817. data/lib/puppet_pal.rb +8 -0
  818. data/locales/puppet.pot +5 -9763
  819. data/man/man5/puppet.conf.5 +651 -390
  820. data/man/man8/puppet-agent.8 +88 -67
  821. data/man/man8/puppet-apply.8 +8 -5
  822. data/man/man8/puppet-catalog.8 +39 -11
  823. data/man/man8/puppet-config.8 +42 -8
  824. data/man/man8/puppet-describe.8 +1 -1
  825. data/man/man8/puppet-device.8 +55 -22
  826. data/man/man8/puppet-doc.8 +1 -1
  827. data/man/man8/puppet-epp.8 +35 -13
  828. data/man/man8/puppet-facts.8 +144 -6
  829. data/man/man8/puppet-filebucket.8 +58 -12
  830. data/man/man8/puppet-generate.8 +2 -2
  831. data/man/man8/puppet-help.8 +7 -4
  832. data/man/man8/puppet-key.8 +9 -15
  833. data/man/man8/puppet-lookup.8 +10 -7
  834. data/man/man8/puppet-man.8 +11 -5
  835. data/man/man8/puppet-module.8 +28 -106
  836. data/man/man8/puppet-node.8 +13 -13
  837. data/man/man8/puppet-parser.8 +32 -9
  838. data/man/man8/puppet-plugin.8 +2 -2
  839. data/man/man8/puppet-report.8 +9 -6
  840. data/man/man8/puppet-resource.8 +2 -2
  841. data/man/man8/puppet-script.8 +70 -0
  842. data/man/man8/puppet-ssl.8 +59 -0
  843. data/man/man8/puppet-status.8 +7 -7
  844. data/man/man8/puppet.8 +12 -3
  845. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +92 -0
  846. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +3 -0
  847. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  848. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  849. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +4 -0
  850. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +3 -0
  851. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +8 -0
  852. data/{lib/puppet/vendor/semantic_puppet → spec/fixtures/integration/l10n/envs/prod/modules/demo}/locales/config.yaml +8 -4
  853. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +19 -0
  854. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +20 -0
  855. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +8 -0
  856. data/spec/fixtures/ssl/127.0.0.1-key.pem +117 -0
  857. data/spec/fixtures/ssl/127.0.0.1.pem +69 -0
  858. data/spec/fixtures/ssl/bad-basic-constraints.pem +81 -0
  859. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +81 -0
  860. data/spec/fixtures/ssl/ca.pem +81 -0
  861. data/spec/fixtures/ssl/crl.pem +40 -0
  862. data/spec/fixtures/ssl/ec-key.pem +18 -0
  863. data/spec/fixtures/ssl/ec.pem +49 -0
  864. data/spec/fixtures/ssl/encrypted-ec-key.pem +21 -0
  865. data/spec/fixtures/ssl/encrypted-key.pem +120 -0
  866. data/spec/fixtures/ssl/intermediate-agent-crl.pem +40 -0
  867. data/spec/fixtures/ssl/intermediate-agent.pem +81 -0
  868. data/spec/fixtures/ssl/intermediate-crl.pem +46 -0
  869. data/spec/fixtures/ssl/intermediate.pem +81 -0
  870. data/spec/fixtures/ssl/netlock-arany-utf8.pem +23 -0
  871. data/spec/fixtures/ssl/oid-key.pem +117 -0
  872. data/spec/fixtures/ssl/oid.pem +69 -0
  873. data/spec/fixtures/ssl/pluto-key.pem +117 -0
  874. data/spec/fixtures/ssl/pluto.pem +66 -0
  875. data/spec/fixtures/ssl/request-key.pem +117 -0
  876. data/spec/fixtures/ssl/request.pem +60 -0
  877. data/spec/fixtures/ssl/revoked-key.pem +117 -0
  878. data/spec/fixtures/ssl/revoked.pem +66 -0
  879. data/spec/fixtures/ssl/signed-key.pem +117 -0
  880. data/spec/fixtures/ssl/signed.pem +66 -0
  881. data/spec/fixtures/ssl/tampered-cert.pem +66 -0
  882. data/spec/fixtures/ssl/tampered-csr.pem +60 -0
  883. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +5 -0
  884. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +117 -0
  885. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +69 -0
  886. data/spec/fixtures/ssl/unknown-ca-key.pem +117 -0
  887. data/spec/fixtures/ssl/unknown-ca.pem +81 -0
  888. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  889. data/spec/fixtures/unit/forge/bacula.json +76 -0
  890. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  891. data/spec/fixtures/unit/functions/hiera/hiera/backend/hieraspec_backend.rb +22 -0
  892. data/spec/fixtures/unit/functions/lookup/hiera/backend/custom_backend.rb +18 -0
  893. data/spec/fixtures/unit/functions/lookup/hiera/backend/other_backend.rb +7 -0
  894. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +1 -1
  895. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +6 -6
  896. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load.rb +11 -0
  897. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load2.rb +11 -0
  898. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load3.rb +11 -0
  899. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load4.rb +11 -0
  900. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load5.rb +12 -0
  901. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/func_with_syntax_error.rb +9 -0
  902. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/good_func_load.rb +9 -0
  903. data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_input.out +1 -0
  904. data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_output.out +1 -0
  905. data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +19 -0
  906. data/spec/fixtures/unit/provider/package/pkgng/pkg.query +7 -1
  907. data/spec/fixtures/unit/provider/package/pkgng/pkg.query.zsh +1 -0
  908. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
  909. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  910. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
  911. data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
  912. data/spec/fixtures/unit/provider/parsedfile/aliases.txt +2 -0
  913. data/spec/fixtures/unit/provider/service/smf/svcs_fmri.out +6 -0
  914. data/spec/fixtures/unit/provider/service/smf/svcs_multiple_fmris.out +13 -0
  915. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
  916. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +9 -0
  917. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +36 -0
  918. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +1 -102
  919. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +1 -106
  920. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +1 -106
  921. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +1 -102
  922. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +1 -98
  923. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +1 -102
  924. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +1 -102
  925. data/spec/integration/agent/logging_spec.rb +7 -9
  926. data/spec/integration/application/agent_spec.rb +848 -0
  927. data/spec/integration/application/apply_spec.rb +338 -178
  928. data/spec/integration/application/doc_spec.rb +16 -7
  929. data/spec/integration/application/filebucket_spec.rb +255 -0
  930. data/spec/integration/application/help_spec.rb +42 -0
  931. data/spec/integration/application/lookup_spec.rb +105 -40
  932. data/spec/integration/application/module_spec.rb +89 -0
  933. data/spec/integration/application/plugin_spec.rb +123 -0
  934. data/spec/integration/application/resource_spec.rb +68 -0
  935. data/spec/integration/application/ssl_spec.rb +20 -0
  936. data/spec/integration/configurer_spec.rb +109 -12
  937. data/spec/integration/data_binding_spec.rb +83 -0
  938. data/spec/integration/defaults_spec.rb +30 -19
  939. data/spec/integration/directory_environments_spec.rb +17 -17
  940. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  941. data/spec/integration/environments/settings_interpolation_spec.rb +0 -4
  942. data/spec/integration/http/client_spec.rb +213 -0
  943. data/spec/integration/indirector/catalog/compiler_spec.rb +10 -11
  944. data/spec/integration/indirector/direct_file_server_spec.rb +2 -4
  945. data/spec/integration/indirector/facts/facter_spec.rb +112 -63
  946. data/spec/integration/indirector/file_content/file_server_spec.rb +7 -8
  947. data/spec/integration/indirector/file_metadata/file_server_spec.rb +7 -8
  948. data/spec/integration/l10n/compiler_spec.rb +37 -0
  949. data/spec/integration/network/authconfig_spec.rb +23 -24
  950. data/spec/integration/network/formats_spec.rb +0 -1
  951. data/spec/integration/network/http/api/indirected_routes_spec.rb +9 -38
  952. data/spec/integration/network/http_pool_spec.rb +293 -0
  953. data/spec/integration/node/environment_spec.rb +16 -2
  954. data/spec/integration/node/facts_spec.rb +9 -10
  955. data/spec/integration/node_spec.rb +6 -11
  956. data/spec/integration/parser/catalog_spec.rb +8 -8
  957. data/spec/integration/parser/collection_spec.rb +6 -11
  958. data/spec/integration/parser/compiler_spec.rb +60 -30
  959. data/spec/integration/parser/pcore_resource_spec.rb +13 -3
  960. data/spec/integration/parser/scope_spec.rb +3 -3
  961. data/spec/integration/parser/script_compiler_spec.rb +113 -0
  962. data/spec/integration/parser/undef_param_spec.rb +1 -1
  963. data/spec/integration/provider/file/windows_spec.rb +162 -0
  964. data/spec/integration/resource/catalog_spec.rb +14 -17
  965. data/spec/integration/resource/type_collection_spec.rb +3 -8
  966. data/spec/integration/transaction/report_spec.rb +12 -17
  967. data/spec/integration/transaction_spec.rb +37 -39
  968. data/spec/integration/type/exec_spec.rb +71 -47
  969. data/spec/integration/type/file_spec.rb +142 -42
  970. data/spec/integration/type/notify_spec.rb +46 -0
  971. data/spec/integration/type/package_spec.rb +27 -31
  972. data/spec/integration/type/tidy_spec.rb +1 -2
  973. data/spec/integration/type_spec.rb +1 -3
  974. data/spec/integration/util/autoload_spec.rb +10 -8
  975. data/spec/integration/util/execution_spec.rb +54 -5
  976. data/spec/integration/util/rdoc/parser_spec.rb +14 -25
  977. data/spec/integration/util/settings_spec.rb +2 -2
  978. data/spec/integration/util/windows/adsi_spec.rb +116 -8
  979. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
  980. data/spec/integration/util/windows/principal_spec.rb +33 -4
  981. data/spec/integration/util/windows/process_spec.rb +28 -44
  982. data/spec/integration/util/windows/registry_spec.rb +130 -53
  983. data/spec/integration/util/windows/security_spec.rb +103 -12
  984. data/spec/integration/util/windows/user_spec.rb +108 -29
  985. data/spec/integration/util_spec.rb +9 -38
  986. data/spec/lib/matchers/json.rb +13 -19
  987. data/{lib/puppet/ssl → spec/lib/puppet}/certificate_factory.rb +7 -8
  988. data/spec/lib/puppet/test_ca.rb +164 -0
  989. data/spec/lib/puppet_spec/compiler.rb +28 -1
  990. data/spec/lib/puppet_spec/files.rb +28 -24
  991. data/spec/lib/puppet_spec/fixtures.rb +24 -0
  992. data/spec/lib/puppet_spec/https.rb +95 -0
  993. data/spec/lib/puppet_spec/language.rb +34 -35
  994. data/spec/lib/puppet_spec/matchers.rb +0 -93
  995. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +3 -3
  996. data/spec/lib/puppet_spec/modules.rb +39 -4
  997. data/spec/lib/puppet_spec/puppetserver.rb +179 -0
  998. data/spec/lib/puppet_spec/scope.rb +1 -2
  999. data/spec/lib/puppet_spec/settings.rb +7 -1
  1000. data/spec/lib/puppet_spec/ssl.rb +265 -0
  1001. data/spec/shared_behaviours/all_parsedfile_providers.rb +1 -1
  1002. data/spec/shared_behaviours/documentation_on_faces.rb +0 -2
  1003. data/spec/shared_behaviours/file_server_terminus.rb +8 -11
  1004. data/spec/shared_behaviours/file_serving.rb +6 -8
  1005. data/spec/shared_behaviours/hiera_indirections.rb +3 -4
  1006. data/spec/shared_behaviours/iterative_functions.rb +0 -1
  1007. data/spec/shared_behaviours/memory_terminus.rb +2 -2
  1008. data/spec/shared_behaviours/path_parameters.rb +1 -1
  1009. data/spec/shared_behaviours/things_that_declare_options.rb +2 -2
  1010. data/spec/shared_contexts/checksum.rb +4 -1
  1011. data/spec/shared_contexts/digests.rb +46 -1
  1012. data/spec/shared_contexts/https.rb +29 -0
  1013. data/spec/shared_contexts/l10n.rb +32 -0
  1014. data/spec/shared_contexts/types_setup.rb +10 -3
  1015. data/spec/shared_examples/rhel_package_provider.rb +112 -70
  1016. data/spec/spec_helper.rb +49 -22
  1017. data/spec/unit/agent/disabler_spec.rb +4 -5
  1018. data/spec/unit/agent/locker_spec.rb +12 -13
  1019. data/spec/unit/agent_spec.rb +181 -104
  1020. data/spec/unit/application/agent_spec.rb +159 -130
  1021. data/spec/unit/application/apply_spec.rb +199 -145
  1022. data/spec/unit/application/config_spec.rb +224 -5
  1023. data/spec/unit/application/describe_spec.rb +88 -51
  1024. data/spec/unit/application/device_spec.rb +424 -300
  1025. data/spec/unit/application/doc_spec.rb +46 -48
  1026. data/spec/unit/application/face_base_spec.rb +69 -68
  1027. data/spec/unit/application/facts_spec.rb +518 -9
  1028. data/spec/unit/application/filebucket_spec.rb +98 -74
  1029. data/spec/unit/application/indirection_base_spec.rb +8 -6
  1030. data/spec/unit/application/lookup_spec.rb +176 -47
  1031. data/spec/unit/application/man_spec.rb +52 -0
  1032. data/spec/unit/application/resource_spec.rb +76 -51
  1033. data/spec/unit/application/ssl_spec.rb +458 -0
  1034. data/spec/unit/application_spec.rb +171 -94
  1035. data/spec/unit/capability_spec.rb +17 -15
  1036. data/spec/unit/{ssl/certificate_factory_spec.rb → certificate_factory_spec.rb} +11 -22
  1037. data/spec/unit/concurrent/lock_spec.rb +29 -0
  1038. data/spec/unit/concurrent/thread_local_singleton_spec.rb +39 -0
  1039. data/spec/unit/configurer/downloader_spec.rb +41 -21
  1040. data/spec/unit/configurer/fact_handler_spec.rb +6 -11
  1041. data/spec/unit/configurer/plugin_handler_spec.rb +71 -48
  1042. data/spec/unit/configurer_spec.rb +851 -480
  1043. data/spec/unit/confine/exists_spec.rb +17 -15
  1044. data/spec/unit/confine/false_spec.rb +32 -6
  1045. data/spec/unit/confine/feature_spec.rb +7 -5
  1046. data/spec/unit/confine/true_spec.rb +32 -6
  1047. data/spec/unit/confine/variable_spec.rb +14 -15
  1048. data/spec/unit/confine_collection_spec.rb +28 -29
  1049. data/spec/unit/confine_spec.rb +36 -14
  1050. data/spec/unit/confiner_spec.rb +10 -11
  1051. data/spec/unit/context/trusted_information_spec.rb +68 -5
  1052. data/spec/unit/context_spec.rb +119 -38
  1053. data/spec/unit/daemon_spec.rb +39 -107
  1054. data/spec/unit/data_providers/function_data_provider_spec.rb +0 -1
  1055. data/spec/unit/data_providers/hiera_data_provider_spec.rb +4 -5
  1056. data/spec/unit/datatypes_spec.rb +352 -0
  1057. data/spec/unit/defaults_spec.rb +182 -19
  1058. data/spec/unit/environments_spec.rb +592 -104
  1059. data/spec/unit/etc_spec.rb +52 -29
  1060. data/spec/unit/external/pson_spec.rb +0 -1
  1061. data/spec/unit/face/config_spec.rb +247 -33
  1062. data/spec/unit/face/epp_face_spec.rb +63 -9
  1063. data/spec/unit/face/facts_spec.rb +70 -1
  1064. data/spec/unit/face/generate_spec.rb +68 -5
  1065. data/spec/unit/face/help_spec.rb +67 -74
  1066. data/spec/unit/face/key_spec.rb +0 -1
  1067. data/spec/unit/face/module/install_spec.rb +3 -5
  1068. data/spec/unit/face/module/list_spec.rb +2 -73
  1069. data/spec/unit/face/module/search_spec.rb +39 -9
  1070. data/spec/unit/face/module/uninstall_spec.rb +4 -8
  1071. data/spec/unit/face/node_spec.rb +22 -59
  1072. data/spec/unit/face/parser_spec.rb +177 -25
  1073. data/spec/unit/face/plugin_spec.rb +56 -19
  1074. data/spec/unit/face/status_spec.rb +0 -1
  1075. data/spec/unit/facter_impl_spec.rb +31 -0
  1076. data/spec/unit/file_bucket/dipper_spec.rb +39 -28
  1077. data/spec/unit/file_bucket/file_spec.rb +0 -2
  1078. data/spec/unit/file_serving/base_spec.rb +17 -21
  1079. data/spec/unit/file_serving/configuration/parser_spec.rb +49 -28
  1080. data/spec/unit/file_serving/configuration_spec.rb +77 -70
  1081. data/spec/unit/file_serving/content_spec.rb +10 -12
  1082. data/spec/unit/file_serving/fileset_spec.rb +123 -59
  1083. data/spec/unit/file_serving/http_metadata_spec.rb +38 -14
  1084. data/spec/unit/file_serving/metadata_spec.rb +41 -42
  1085. data/spec/unit/file_serving/mount/file_spec.rb +31 -32
  1086. data/spec/unit/file_serving/mount/locales_spec.rb +25 -26
  1087. data/spec/unit/file_serving/mount/modules_spec.rb +14 -15
  1088. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +25 -26
  1089. data/spec/unit/file_serving/mount/plugins_spec.rb +25 -26
  1090. data/spec/unit/file_serving/mount/scripts_spec.rb +69 -0
  1091. data/spec/unit/file_serving/mount/tasks_spec.rb +14 -15
  1092. data/spec/unit/file_serving/mount_spec.rb +0 -1
  1093. data/spec/unit/file_serving/terminus_helper_spec.rb +47 -45
  1094. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -29
  1095. data/spec/unit/file_system/path_pattern_spec.rb +1 -1
  1096. data/spec/unit/file_system/uniquefile_spec.rb +41 -6
  1097. data/spec/unit/file_system_spec.rb +330 -9
  1098. data/spec/unit/forge/errors_spec.rb +1 -1
  1099. data/spec/unit/forge/forge_spec.rb +14 -57
  1100. data/spec/unit/forge/module_release_spec.rb +161 -48
  1101. data/spec/unit/forge/repository_spec.rb +66 -163
  1102. data/spec/unit/forge_spec.rb +47 -114
  1103. data/spec/unit/functions/abs_spec.rb +70 -0
  1104. data/spec/unit/functions/assert_type_spec.rb +2 -2
  1105. data/spec/unit/functions/binary_file_spec.rb +3 -3
  1106. data/spec/unit/functions/break_spec.rb +34 -2
  1107. data/spec/unit/functions/call_spec.rb +59 -5
  1108. data/spec/unit/functions/camelcase_spec.rb +34 -0
  1109. data/spec/unit/functions/capitalize_spec.rb +34 -0
  1110. data/spec/unit/functions/ceiling_spec.rb +65 -0
  1111. data/spec/unit/functions/chomp_spec.rb +46 -0
  1112. data/spec/unit/functions/chop_spec.rb +38 -0
  1113. data/spec/unit/functions/compare_spec.rb +147 -0
  1114. data/spec/unit/functions/contain_spec.rb +2 -3
  1115. data/spec/unit/functions/convert_to_spec.rb +25 -0
  1116. data/spec/unit/functions/defined_spec.rb +0 -1
  1117. data/spec/unit/functions/downcase_spec.rb +34 -0
  1118. data/spec/unit/functions/empty_spec.rb +87 -0
  1119. data/spec/unit/functions/epp_spec.rb +13 -5
  1120. data/spec/unit/functions/filter_spec.rb +4 -4
  1121. data/spec/unit/functions/find_file_spec.rb +7 -7
  1122. data/spec/unit/functions/find_template_spec.rb +69 -0
  1123. data/spec/unit/functions/flatten_spec.rb +31 -0
  1124. data/spec/unit/functions/floor_spec.rb +65 -0
  1125. data/spec/unit/functions/get_spec.rb +135 -0
  1126. data/spec/unit/functions/getvar_spec.rb +121 -0
  1127. data/spec/unit/functions/group_by_spec.rb +40 -0
  1128. data/spec/unit/functions/hiera_spec.rb +14 -48
  1129. data/spec/unit/functions/include_spec.rb +16 -5
  1130. data/spec/unit/functions/index_spec.rb +184 -0
  1131. data/spec/unit/functions/inline_epp_spec.rb +27 -2
  1132. data/spec/unit/functions/join_spec.rb +33 -0
  1133. data/spec/unit/functions/keys_spec.rb +31 -0
  1134. data/spec/unit/functions/length_spec.rb +50 -0
  1135. data/spec/unit/functions/logging_spec.rb +11 -3
  1136. data/spec/unit/functions/lookup_fixture_spec.rb +1 -2
  1137. data/spec/unit/functions/lookup_spec.rb +165 -63
  1138. data/spec/unit/functions/lstrip_spec.rb +30 -0
  1139. data/spec/unit/functions/match_spec.rb +21 -4
  1140. data/spec/unit/functions/max_spec.rb +129 -0
  1141. data/spec/unit/functions/min_spec.rb +129 -0
  1142. data/spec/unit/functions/module_directory_spec.rb +43 -0
  1143. data/spec/unit/functions/new_spec.rb +30 -14
  1144. data/spec/unit/functions/partition_spec.rb +40 -0
  1145. data/spec/unit/functions/regsubst_spec.rb +3 -4
  1146. data/spec/unit/functions/require_spec.rb +1 -2
  1147. data/spec/unit/functions/round_spec.rb +41 -0
  1148. data/spec/unit/functions/rstrip_spec.rb +30 -0
  1149. data/spec/unit/functions/shared.rb +15 -6
  1150. data/spec/unit/functions/size_spec.rb +50 -0
  1151. data/spec/unit/functions/sort_spec.rb +79 -0
  1152. data/spec/unit/functions/split_spec.rb +3 -4
  1153. data/spec/unit/functions/step_spec.rb +1 -1
  1154. data/spec/unit/functions/strftime_spec.rb +2 -2
  1155. data/spec/unit/functions/strip_spec.rb +30 -0
  1156. data/spec/unit/functions/tree_each_spec.rb +49 -0
  1157. data/spec/unit/functions/unwrap_spec.rb +8 -0
  1158. data/spec/unit/functions/upcase_spec.rb +34 -0
  1159. data/spec/unit/functions/values_spec.rb +30 -0
  1160. data/spec/unit/functions/versioncmp_spec.rb +43 -9
  1161. data/spec/unit/functions4_spec.rb +154 -86
  1162. data/spec/unit/gettext/config_spec.rb +45 -14
  1163. data/spec/unit/gettext/module_loading_spec.rb +7 -7
  1164. data/spec/unit/graph/rb_tree_map_spec.rb +0 -2
  1165. data/spec/unit/graph/relationship_graph_spec.rb +1 -2
  1166. data/spec/unit/graph/simple_graph_spec.rb +51 -12
  1167. data/spec/unit/hiera/scope_spec.rb +7 -0
  1168. data/spec/unit/hiera_puppet_spec.rb +20 -20
  1169. data/spec/unit/http/client_spec.rb +938 -0
  1170. data/spec/unit/http/external_client_spec.rb +201 -0
  1171. data/spec/unit/http/resolver_spec.rb +133 -0
  1172. data/spec/unit/http/response_spec.rb +75 -0
  1173. data/spec/unit/http/service/ca_spec.rb +198 -0
  1174. data/spec/unit/http/service/compiler_spec.rb +806 -0
  1175. data/spec/unit/http/service/file_server_spec.rb +307 -0
  1176. data/spec/unit/http/service/puppetserver_spec.rb +82 -0
  1177. data/spec/unit/http/service/report_spec.rb +117 -0
  1178. data/spec/unit/http/service_spec.rb +144 -0
  1179. data/spec/unit/http/session_spec.rb +307 -0
  1180. data/spec/unit/indirector/catalog/compiler_spec.rb +343 -194
  1181. data/spec/unit/indirector/catalog/json_spec.rb +10 -5
  1182. data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -1
  1183. data/spec/unit/indirector/catalog/rest_spec.rb +67 -3
  1184. data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -1
  1185. data/spec/unit/indirector/catalog/yaml_spec.rb +0 -1
  1186. data/spec/unit/indirector/certificate/file_spec.rb +0 -9
  1187. data/spec/unit/indirector/certificate/rest_spec.rb +8 -10
  1188. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -1
  1189. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -1
  1190. data/spec/unit/indirector/direct_file_server_spec.rb +47 -50
  1191. data/spec/unit/indirector/envelope_spec.rb +1 -2
  1192. data/spec/unit/indirector/exec_spec.rb +29 -24
  1193. data/spec/unit/indirector/face_spec.rb +8 -9
  1194. data/spec/unit/indirector/facts/facter_spec.rb +131 -43
  1195. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  1196. data/spec/unit/indirector/facts/network_device_spec.rb +8 -9
  1197. data/spec/unit/indirector/facts/rest_spec.rb +99 -0
  1198. data/spec/unit/indirector/facts/store_configs_spec.rb +0 -1
  1199. data/spec/unit/indirector/facts/yaml_spec.rb +95 -79
  1200. data/spec/unit/indirector/file_bucket_file/file_spec.rb +156 -100
  1201. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -3
  1202. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -9
  1203. data/spec/unit/indirector/file_content/file_server_spec.rb +0 -1
  1204. data/spec/unit/indirector/file_content/file_spec.rb +0 -1
  1205. data/spec/unit/indirector/file_content/rest_spec.rb +53 -3
  1206. data/spec/unit/indirector/file_content/selector_spec.rb +0 -1
  1207. data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -1
  1208. data/spec/unit/indirector/file_metadata/file_spec.rb +12 -13
  1209. data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
  1210. data/spec/unit/indirector/file_metadata/rest_spec.rb +110 -3
  1211. data/spec/unit/indirector/file_metadata/selector_spec.rb +0 -1
  1212. data/spec/unit/indirector/file_server_spec.rb +143 -137
  1213. data/spec/unit/indirector/indirection_spec.rb +296 -231
  1214. data/spec/unit/indirector/json_spec.rb +10 -12
  1215. data/spec/unit/indirector/key/file_spec.rb +20 -39
  1216. data/spec/unit/indirector/memory_spec.rb +6 -7
  1217. data/spec/unit/indirector/msgpack_spec.rb +10 -12
  1218. data/spec/unit/indirector/node/exec_spec.rb +43 -23
  1219. data/spec/unit/indirector/node/json_spec.rb +33 -0
  1220. data/spec/unit/indirector/node/memory_spec.rb +2 -4
  1221. data/spec/unit/indirector/node/msgpack_spec.rb +0 -1
  1222. data/spec/unit/indirector/node/plain_spec.rb +2 -4
  1223. data/spec/unit/indirector/node/rest_spec.rb +57 -3
  1224. data/spec/unit/indirector/node/store_configs_spec.rb +0 -1
  1225. data/spec/unit/indirector/node/yaml_spec.rb +0 -1
  1226. data/spec/unit/indirector/none_spec.rb +5 -5
  1227. data/spec/unit/indirector/plain_spec.rb +7 -8
  1228. data/spec/unit/indirector/report/json_spec.rb +72 -0
  1229. data/spec/unit/indirector/report/msgpack_spec.rb +0 -1
  1230. data/spec/unit/indirector/report/processor_spec.rb +21 -22
  1231. data/spec/unit/indirector/report/rest_spec.rb +58 -52
  1232. data/spec/unit/indirector/report/yaml_spec.rb +72 -9
  1233. data/spec/unit/indirector/request_spec.rb +27 -29
  1234. data/spec/unit/indirector/resource/ral_spec.rb +40 -82
  1235. data/spec/unit/indirector/resource/store_configs_spec.rb +0 -1
  1236. data/spec/unit/indirector/rest_spec.rb +166 -107
  1237. data/spec/unit/indirector/ssl_file_spec.rb +99 -122
  1238. data/spec/unit/indirector/status/local_spec.rb +0 -1
  1239. data/spec/unit/indirector/status/rest_spec.rb +43 -3
  1240. data/spec/unit/indirector/terminus_spec.rb +29 -29
  1241. data/spec/unit/indirector/yaml_spec.rb +92 -70
  1242. data/spec/unit/indirector_spec.rb +2 -4
  1243. data/spec/unit/info_service_spec.rb +195 -11
  1244. data/spec/unit/interface/action_builder_spec.rb +0 -1
  1245. data/spec/unit/interface/action_manager_spec.rb +1 -2
  1246. data/spec/unit/interface/action_spec.rb +36 -13
  1247. data/spec/unit/interface/documentation_spec.rb +0 -1
  1248. data/spec/unit/interface/face_collection_spec.rb +19 -12
  1249. data/spec/unit/interface_spec.rb +6 -6
  1250. data/spec/unit/module_spec.rb +135 -113
  1251. data/spec/unit/module_tool/applications/installer_spec.rb +116 -13
  1252. data/spec/unit/module_tool/applications/searcher_spec.rb +3 -3
  1253. data/spec/unit/module_tool/applications/uninstaller_spec.rb +16 -0
  1254. data/spec/unit/module_tool/applications/unpacker_spec.rb +17 -17
  1255. data/spec/unit/module_tool/applications/upgrader_spec.rb +11 -5
  1256. data/spec/unit/module_tool/install_directory_spec.rb +8 -8
  1257. data/spec/unit/module_tool/installed_modules_spec.rb +3 -3
  1258. data/spec/unit/module_tool/tar/gnu_spec.rb +6 -6
  1259. data/spec/unit/module_tool/tar/mini_spec.rb +32 -12
  1260. data/spec/unit/module_tool/tar_spec.rb +12 -13
  1261. data/spec/unit/module_tool_spec.rb +7 -34
  1262. data/spec/unit/network/auth_config_parser_spec.rb +11 -13
  1263. data/spec/unit/network/authconfig_spec.rb +16 -20
  1264. data/spec/unit/network/authorization_spec.rb +4 -5
  1265. data/spec/unit/network/authstore_spec.rb +0 -16
  1266. data/spec/unit/network/format_handler_spec.rb +0 -1
  1267. data/spec/unit/network/format_spec.rb +9 -10
  1268. data/spec/unit/network/format_support_spec.rb +29 -29
  1269. data/spec/unit/network/formats_spec.rb +82 -18
  1270. data/spec/unit/network/http/api/indirected_routes_spec.rb +54 -48
  1271. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +7 -9
  1272. data/spec/unit/network/http/api/master/v3/environment_spec.rb +1 -2
  1273. data/spec/unit/network/http/api/master/v3/environments_spec.rb +11 -23
  1274. data/spec/unit/network/http/api_spec.rb +0 -28
  1275. data/spec/unit/network/http/compression_spec.rb +27 -25
  1276. data/spec/unit/network/http/connection_spec.rb +537 -275
  1277. data/spec/unit/network/http/factory_spec.rb +82 -36
  1278. data/spec/unit/network/http/handler_spec.rb +10 -23
  1279. data/spec/unit/network/http/nocache_pool_spec.rb +32 -11
  1280. data/spec/unit/network/http/pool_spec.rb +166 -59
  1281. data/spec/unit/network/http/request_spec.rb +0 -2
  1282. data/spec/unit/network/http/response_spec.rb +11 -13
  1283. data/spec/unit/network/http/route_spec.rb +0 -1
  1284. data/spec/unit/network/http/session_spec.rb +9 -3
  1285. data/spec/unit/network/http/site_spec.rb +7 -1
  1286. data/spec/unit/network/http_pool_spec.rb +99 -48
  1287. data/spec/unit/network/http_spec.rb +1 -2
  1288. data/spec/unit/network/resolver_spec.rb +103 -29
  1289. data/spec/unit/network/rights_spec.rb +52 -53
  1290. data/spec/unit/network/uri_spec.rb +47 -0
  1291. data/spec/unit/node/environment_spec.rb +72 -24
  1292. data/spec/unit/node/facts_spec.rb +20 -8
  1293. data/spec/unit/node_spec.rb +38 -23
  1294. data/spec/unit/other/selinux_spec.rb +0 -72
  1295. data/spec/unit/parameter/boolean_spec.rb +1 -2
  1296. data/spec/unit/parameter/package_options_spec.rb +1 -2
  1297. data/spec/unit/parameter/path_spec.rb +0 -1
  1298. data/spec/unit/parameter/value_collection_spec.rb +0 -1
  1299. data/spec/unit/parameter/value_spec.rb +0 -1
  1300. data/spec/unit/parameter_spec.rb +9 -9
  1301. data/spec/unit/parser/ast/block_expression_spec.rb +7 -9
  1302. data/spec/unit/parser/ast/leaf_spec.rb +20 -21
  1303. data/spec/unit/parser/compiler_spec.rb +93 -114
  1304. data/spec/unit/parser/environment_compiler_spec.rb +67 -23
  1305. data/spec/unit/parser/files_spec.rb +0 -1
  1306. data/spec/unit/parser/functions/create_resources_spec.rb +10 -1
  1307. data/spec/unit/parser/functions/digest_spec.rb +0 -5
  1308. data/spec/unit/parser/functions/fail_spec.rb +2 -7
  1309. data/spec/unit/parser/functions/file_spec.rb +13 -18
  1310. data/spec/unit/parser/functions/fqdn_rand_spec.rb +39 -2
  1311. data/spec/unit/parser/functions/generate_spec.rb +36 -39
  1312. data/spec/unit/parser/functions/inline_template_spec.rb +7 -5
  1313. data/spec/unit/parser/functions/realize_spec.rb +9 -0
  1314. data/spec/unit/parser/functions/regsubst_spec.rb +0 -5
  1315. data/spec/unit/parser/functions/scanf_spec.rb +0 -5
  1316. data/spec/unit/parser/functions/shellquote_spec.rb +0 -1
  1317. data/spec/unit/parser/functions/split_spec.rb +0 -5
  1318. data/spec/unit/parser/functions/sprintf_spec.rb +0 -5
  1319. data/spec/unit/parser/functions/tag_spec.rb +8 -6
  1320. data/spec/unit/parser/functions/tagged_spec.rb +36 -0
  1321. data/spec/unit/parser/functions/template_spec.rb +21 -17
  1322. data/spec/unit/parser/functions/versioncmp_spec.rb +1 -6
  1323. data/spec/unit/parser/functions_spec.rb +28 -4
  1324. data/spec/unit/parser/relationship_spec.rb +0 -1
  1325. data/spec/unit/parser/resource/param_spec.rb +1 -1
  1326. data/spec/unit/parser/resource_spec.rb +53 -48
  1327. data/spec/unit/parser/scope_spec.rb +72 -39
  1328. data/spec/unit/parser/templatewrapper_spec.rb +25 -15
  1329. data/spec/unit/parser/type_loader_spec.rb +18 -20
  1330. data/spec/unit/plan_spec.rb +65 -0
  1331. data/spec/unit/pops/adaptable_spec.rb +0 -2
  1332. data/spec/unit/pops/benchmark_spec.rb +0 -1
  1333. data/spec/unit/pops/evaluator/access_ops_spec.rb +0 -1
  1334. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +10 -1
  1335. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +0 -1
  1336. data/spec/unit/pops/evaluator/collections_ops_spec.rb +0 -1
  1337. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +0 -1
  1338. data/spec/unit/pops/evaluator/conditionals_spec.rb +1 -2
  1339. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
  1340. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +133 -17
  1341. data/spec/unit/pops/evaluator/logical_ops_spec.rb +0 -1
  1342. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +24 -11
  1343. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +0 -1
  1344. data/spec/unit/pops/evaluator/variables_spec.rb +0 -1
  1345. data/spec/unit/pops/factory_rspec_helper.rb +1 -1
  1346. data/spec/unit/pops/factory_spec.rb +8 -9
  1347. data/spec/unit/pops/issues_spec.rb +40 -26
  1348. data/spec/unit/pops/loaders/dependency_loader_spec.rb +2 -2
  1349. data/spec/unit/pops/loaders/loader_spec.rb +516 -0
  1350. data/spec/unit/pops/loaders/loaders_spec.rb +294 -46
  1351. data/spec/unit/pops/loaders/module_loaders_spec.rb +112 -0
  1352. data/spec/unit/pops/loaders/static_loader_spec.rb +16 -44
  1353. data/spec/unit/pops/lookup/context_spec.rb +0 -1
  1354. data/spec/unit/pops/lookup/interpolation_spec.rb +7 -3
  1355. data/spec/unit/pops/lookup/lookup_spec.rb +81 -0
  1356. data/spec/unit/pops/merge_strategy_spec.rb +0 -1
  1357. data/spec/unit/pops/migration_spec.rb +3 -5
  1358. data/spec/unit/pops/model/model_spec.rb +5 -1
  1359. data/spec/unit/pops/model/pn_transformer_spec.rb +56 -0
  1360. data/spec/unit/pops/parser/lexer2_spec.rb +89 -26
  1361. data/spec/unit/pops/parser/locator_spec.rb +63 -1
  1362. data/spec/unit/pops/parser/parse_application_spec.rb +0 -1
  1363. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +42 -10
  1364. data/spec/unit/pops/parser/parse_calls_spec.rb +28 -1
  1365. data/spec/unit/pops/parser/parse_capabilities_spec.rb +0 -1
  1366. data/spec/unit/pops/parser/parse_conditionals_spec.rb +12 -1
  1367. data/spec/unit/pops/parser/parse_containers_spec.rb +2 -14
  1368. data/spec/unit/pops/parser/parse_functions_spec.rb +1 -1
  1369. data/spec/unit/pops/parser/parse_heredoc_spec.rb +124 -12
  1370. data/spec/unit/pops/parser/parse_lambda_spec.rb +1 -1
  1371. data/spec/unit/pops/parser/parse_plan_spec.rb +47 -0
  1372. data/spec/unit/pops/parser/parse_resource_spec.rb +35 -36
  1373. data/spec/unit/pops/parser/parse_site_spec.rb +0 -1
  1374. data/spec/unit/pops/parser/pn_parser_spec.rb +100 -0
  1375. data/spec/unit/pops/pn_spec.rb +147 -0
  1376. data/spec/unit/pops/puppet_stack_spec.rb +38 -9
  1377. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -1
  1378. data/spec/unit/pops/serialization/packer_spec.rb +8 -0
  1379. data/spec/unit/pops/serialization/serialization_spec.rb +37 -5
  1380. data/spec/unit/pops/serialization/to_from_hr_spec.rb +74 -4
  1381. data/spec/unit/pops/serialization/to_stringified_spec.rb +162 -0
  1382. data/spec/unit/pops/types/deferred_spec.rb +87 -0
  1383. data/spec/unit/pops/types/error_spec.rb +207 -0
  1384. data/spec/unit/pops/types/iterable_spec.rb +1 -1
  1385. data/spec/unit/pops/types/p_init_type_spec.rb +98 -0
  1386. data/spec/unit/pops/types/p_object_type_spec.rb +298 -13
  1387. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +18 -0
  1388. data/spec/unit/pops/types/p_sensitive_type_spec.rb +18 -0
  1389. data/spec/unit/pops/types/p_timespan_type_spec.rb +33 -4
  1390. data/spec/unit/pops/types/p_timestamp_type_spec.rb +28 -2
  1391. data/spec/unit/pops/types/p_type_set_type_spec.rb +106 -2
  1392. data/spec/unit/pops/types/p_uri_type_spec.rb +191 -0
  1393. data/spec/unit/pops/types/recursion_guard_spec.rb +10 -10
  1394. data/spec/unit/pops/types/ruby_generator_spec.rb +87 -54
  1395. data/spec/unit/pops/types/string_converter_spec.rb +39 -6
  1396. data/spec/unit/pops/types/task_spec.rb +411 -0
  1397. data/spec/unit/pops/types/type_asserter_spec.rb +2 -2
  1398. data/spec/unit/pops/types/type_calculator_spec.rb +120 -53
  1399. data/spec/unit/pops/types/type_formatter_spec.rb +31 -13
  1400. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +9 -0
  1401. data/spec/unit/pops/types/type_parser_spec.rb +26 -14
  1402. data/spec/unit/pops/types/types_spec.rb +99 -6
  1403. data/spec/unit/pops/validator/validator_spec.rb +455 -7
  1404. data/spec/unit/pops/visitor_spec.rb +0 -1
  1405. data/spec/unit/property/boolean_spec.rb +1 -1
  1406. data/spec/unit/property/ensure_spec.rb +0 -1
  1407. data/spec/unit/property/keyvalue_spec.rb +127 -38
  1408. data/spec/unit/property/list_spec.rb +26 -27
  1409. data/spec/unit/property/ordered_list_spec.rb +10 -14
  1410. data/spec/unit/property_spec.rb +55 -46
  1411. data/spec/unit/provider/aix_object_spec.rb +821 -0
  1412. data/spec/unit/provider/command_spec.rb +9 -9
  1413. data/spec/unit/provider/exec/posix_spec.rb +38 -15
  1414. data/spec/unit/provider/exec/shell_spec.rb +2 -2
  1415. data/spec/unit/provider/exec/windows_spec.rb +4 -6
  1416. data/spec/unit/provider/exec_spec.rb +210 -1
  1417. data/spec/unit/provider/file/posix_spec.rb +22 -24
  1418. data/spec/unit/provider/file/windows_spec.rb +17 -19
  1419. data/spec/unit/provider/group/aix_spec.rb +91 -0
  1420. data/spec/unit/provider/group/groupadd_spec.rb +237 -29
  1421. data/spec/unit/provider/group/ldap_spec.rb +33 -36
  1422. data/spec/unit/provider/group/pw_spec.rb +15 -18
  1423. data/spec/unit/provider/group/windows_adsi_spec.rb +173 -68
  1424. data/spec/unit/provider/ldap_spec.rb +61 -63
  1425. data/spec/unit/provider/nameservice/directoryservice_spec.rb +102 -109
  1426. data/spec/unit/provider/nameservice_spec.rb +99 -100
  1427. data/spec/unit/provider/package/aix_spec.rb +48 -22
  1428. data/spec/unit/provider/package/appdmg_spec.rb +13 -13
  1429. data/spec/unit/provider/package/apt_spec.rb +174 -37
  1430. data/spec/unit/provider/package/aptitude_spec.rb +8 -7
  1431. data/spec/unit/provider/package/aptrpm_spec.rb +8 -13
  1432. data/spec/unit/provider/package/base_spec.rb +7 -6
  1433. data/spec/unit/provider/package/dnf_spec.rb +43 -18
  1434. data/spec/unit/provider/package/dnfmodule_spec.rb +256 -0
  1435. data/spec/unit/provider/package/dpkg_spec.rb +348 -137
  1436. data/spec/unit/provider/package/freebsd_spec.rb +15 -18
  1437. data/spec/unit/provider/package/gem_spec.rb +210 -83
  1438. data/spec/unit/provider/package/hpux_spec.rb +15 -18
  1439. data/spec/unit/provider/package/macports_spec.rb +56 -54
  1440. data/spec/unit/provider/package/nim_spec.rb +76 -59
  1441. data/spec/unit/provider/package/openbsd_spec.rb +62 -49
  1442. data/spec/unit/provider/package/opkg_spec.rb +23 -26
  1443. data/spec/unit/provider/package/pacman_spec.rb +103 -133
  1444. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  1445. data/spec/unit/provider/package/pip3_spec.rb +20 -6
  1446. data/spec/unit/provider/package/pip_spec.rb +252 -157
  1447. data/spec/unit/provider/package/pkg_spec.rb +194 -98
  1448. data/spec/unit/provider/package/pkgdmg_spec.rb +64 -66
  1449. data/spec/unit/provider/package/pkgin_spec.rb +21 -24
  1450. data/spec/unit/provider/package/pkgng_spec.rb +80 -38
  1451. data/spec/unit/provider/package/pkgutil_spec.rb +45 -49
  1452. data/spec/unit/provider/package/portage_spec.rb +89 -74
  1453. data/spec/unit/provider/package/puppet_gem_spec.rb +53 -21
  1454. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  1455. data/spec/unit/provider/package/rpm_spec.rb +280 -261
  1456. data/spec/unit/provider/package/sun_spec.rb +16 -18
  1457. data/spec/unit/provider/package/tdnf_spec.rb +9 -12
  1458. data/spec/unit/provider/package/up2date_spec.rb +2 -4
  1459. data/spec/unit/provider/package/urpmi_spec.rb +18 -14
  1460. data/spec/unit/provider/package/windows/exe_package_spec.rb +32 -18
  1461. data/spec/unit/provider/package/windows/msi_package_spec.rb +20 -23
  1462. data/spec/unit/provider/package/windows/package_spec.rb +38 -43
  1463. data/spec/unit/provider/package/windows_spec.rb +51 -36
  1464. data/spec/unit/provider/package/yum_spec.rb +442 -13
  1465. data/spec/unit/provider/package/zypper_spec.rb +202 -106
  1466. data/spec/unit/provider/package_targetable_spec.rb +60 -0
  1467. data/spec/unit/provider/parsedfile_spec.rb +81 -46
  1468. data/spec/unit/provider/service/base_spec.rb +6 -11
  1469. data/spec/unit/provider/service/bsd_spec.rb +52 -51
  1470. data/spec/unit/provider/service/daemontools_spec.rb +71 -52
  1471. data/spec/unit/provider/service/debian_spec.rb +51 -53
  1472. data/spec/unit/provider/service/freebsd_spec.rb +21 -21
  1473. data/spec/unit/provider/service/gentoo_spec.rb +78 -82
  1474. data/spec/unit/provider/service/init_spec.rb +117 -67
  1475. data/spec/unit/provider/service/launchd_spec.rb +196 -114
  1476. data/spec/unit/provider/service/openbsd_spec.rb +98 -92
  1477. data/spec/unit/provider/service/openrc_spec.rb +73 -75
  1478. data/spec/unit/provider/service/openwrt_spec.rb +36 -44
  1479. data/spec/unit/provider/service/rcng_spec.rb +20 -21
  1480. data/spec/unit/provider/service/redhat_spec.rb +76 -58
  1481. data/spec/unit/provider/service/runit_spec.rb +62 -43
  1482. data/spec/unit/provider/service/smf_spec.rb +143 -73
  1483. data/spec/unit/provider/service/src_spec.rb +60 -69
  1484. data/spec/unit/provider/service/systemd_spec.rb +330 -155
  1485. data/spec/unit/provider/service/upstart_spec.rb +106 -84
  1486. data/spec/unit/provider/service/windows_spec.rb +336 -91
  1487. data/spec/unit/provider/user/aix_spec.rb +263 -112
  1488. data/spec/unit/provider/user/directoryservice_spec.rb +229 -124
  1489. data/spec/unit/provider/user/hpux_spec.rb +19 -20
  1490. data/spec/unit/provider/user/ldap_spec.rb +80 -83
  1491. data/spec/unit/provider/user/openbsd_spec.rb +11 -12
  1492. data/spec/unit/provider/user/pw_spec.rb +82 -44
  1493. data/spec/unit/provider/user/user_role_add_spec.rb +109 -92
  1494. data/spec/unit/provider/user/useradd_spec.rb +479 -90
  1495. data/spec/unit/provider/user/windows_adsi_spec.rb +144 -63
  1496. data/spec/unit/provider_spec.rb +241 -47
  1497. data/spec/unit/puppet_pal_2pec.rb +1033 -0
  1498. data/spec/unit/puppet_pal_catalog_spec.rb +962 -0
  1499. data/spec/unit/puppet_pal_spec.rb +3 -0
  1500. data/spec/unit/puppet_spec.rb +58 -25
  1501. data/spec/unit/relationship_spec.rb +0 -1
  1502. data/spec/unit/reports/http_spec.rb +70 -54
  1503. data/spec/unit/reports/store_spec.rb +20 -17
  1504. data/spec/unit/reports_spec.rb +12 -14
  1505. data/spec/unit/resource/capability_finder_spec.rb +31 -29
  1506. data/spec/unit/resource/catalog_spec.rb +104 -82
  1507. data/spec/unit/resource/status_spec.rb +23 -12
  1508. data/spec/unit/resource/type_collection_spec.rb +19 -17
  1509. data/spec/unit/resource/type_spec.rb +52 -38
  1510. data/spec/unit/resource_spec.rb +207 -49
  1511. data/spec/unit/rest/route_spec.rb +132 -0
  1512. data/spec/unit/scheduler/job_spec.rb +0 -1
  1513. data/spec/unit/scheduler/scheduler_spec.rb +0 -1
  1514. data/spec/unit/scheduler/splay_job_spec.rb +1 -2
  1515. data/spec/unit/settings/array_setting_spec.rb +1 -1
  1516. data/spec/unit/settings/autosign_setting_spec.rb +11 -11
  1517. data/spec/unit/settings/certificate_revocation_setting_spec.rb +1 -1
  1518. data/spec/unit/settings/config_file_spec.rb +9 -1
  1519. data/spec/unit/settings/directory_setting_spec.rb +2 -7
  1520. data/spec/unit/settings/duration_setting_spec.rb +1 -2
  1521. data/spec/unit/settings/enum_setting_spec.rb +1 -1
  1522. data/spec/unit/settings/environment_conf_spec.rb +4 -6
  1523. data/spec/unit/settings/file_setting_spec.rb +54 -48
  1524. data/spec/unit/settings/http_extra_headers_spec.rb +64 -0
  1525. data/spec/unit/settings/ini_file_spec.rb +314 -5
  1526. data/spec/unit/settings/path_setting_spec.rb +2 -3
  1527. data/spec/unit/settings/priority_setting_spec.rb +1 -2
  1528. data/spec/unit/settings/server_list_setting_spec.rb +21 -0
  1529. data/spec/unit/settings/string_setting_spec.rb +14 -15
  1530. data/spec/unit/settings/terminus_setting_spec.rb +1 -2
  1531. data/spec/unit/settings/value_translator_spec.rb +0 -1
  1532. data/spec/unit/settings_spec.rb +905 -448
  1533. data/spec/unit/ssl/base_spec.rb +13 -15
  1534. data/spec/unit/ssl/certificate_request_attributes_spec.rb +21 -8
  1535. data/spec/unit/ssl/certificate_request_spec.rb +84 -65
  1536. data/spec/unit/ssl/certificate_spec.rb +34 -32
  1537. data/spec/unit/ssl/digest_spec.rb +0 -1
  1538. data/spec/unit/ssl/host_spec.rb +336 -649
  1539. data/spec/unit/ssl/key_spec.rb +31 -49
  1540. data/spec/unit/ssl/oids_spec.rb +1 -0
  1541. data/spec/unit/ssl/ssl_provider_spec.rb +630 -0
  1542. data/spec/unit/ssl/state_machine_spec.rb +983 -0
  1543. data/spec/unit/ssl/validator_spec.rb +74 -214
  1544. data/spec/unit/ssl/verifier_spec.rb +123 -0
  1545. data/spec/unit/task_spec.rb +216 -27
  1546. data/spec/unit/test/test_helper_spec.rb +17 -0
  1547. data/spec/unit/transaction/additional_resource_generator_spec.rb +66 -72
  1548. data/spec/unit/transaction/event_manager_spec.rb +114 -89
  1549. data/spec/unit/transaction/event_spec.rb +16 -15
  1550. data/spec/unit/transaction/persistence_spec.rb +83 -27
  1551. data/spec/unit/transaction/report_spec.rb +55 -27
  1552. data/spec/unit/transaction/resource_harness_spec.rb +72 -33
  1553. data/spec/unit/transaction_spec.rb +328 -115
  1554. data/spec/unit/type/component_spec.rb +0 -1
  1555. data/spec/unit/type/exec_spec.rb +210 -95
  1556. data/spec/unit/type/file/checksum_spec.rb +29 -10
  1557. data/spec/unit/type/file/checksum_value_spec.rb +31 -32
  1558. data/spec/unit/type/file/content_spec.rb +72 -58
  1559. data/spec/unit/type/file/ctime_spec.rb +0 -1
  1560. data/spec/unit/type/file/ensure_spec.rb +13 -15
  1561. data/spec/unit/type/file/group_spec.rb +5 -7
  1562. data/spec/unit/type/file/mode_spec.rb +4 -6
  1563. data/spec/unit/type/file/mtime_spec.rb +0 -1
  1564. data/spec/unit/type/file/owner_spec.rb +6 -8
  1565. data/spec/unit/type/file/selinux_spec.rb +16 -21
  1566. data/spec/unit/type/file/source_spec.rb +186 -126
  1567. data/spec/unit/type/file/type_spec.rb +0 -1
  1568. data/spec/unit/type/file_spec.rb +321 -267
  1569. data/spec/unit/type/filebucket_spec.rb +12 -11
  1570. data/spec/unit/type/group_spec.rb +32 -11
  1571. data/spec/unit/type/noop_metaparam_spec.rb +1 -2
  1572. data/spec/unit/type/package/package_settings_spec.rb +44 -23
  1573. data/spec/unit/type/package_spec.rb +76 -54
  1574. data/spec/unit/type/resources_spec.rb +105 -75
  1575. data/spec/unit/type/schedule_spec.rb +29 -29
  1576. data/spec/unit/type/service_spec.rb +252 -76
  1577. data/spec/unit/type/stage_spec.rb +0 -1
  1578. data/spec/unit/type/tidy_spec.rb +92 -61
  1579. data/spec/unit/type/user_spec.rb +79 -143
  1580. data/spec/unit/type/whit_spec.rb +0 -1
  1581. data/spec/unit/type_spec.rb +288 -140
  1582. data/spec/unit/util/at_fork_spec.rb +21 -21
  1583. data/spec/unit/util/autoload_spec.rb +126 -94
  1584. data/spec/unit/util/backups_spec.rb +33 -35
  1585. data/spec/unit/util/character_encoding_spec.rb +5 -48
  1586. data/spec/unit/util/checksums_spec.rb +57 -42
  1587. data/spec/unit/util/colors_spec.rb +1 -2
  1588. data/spec/unit/util/command_line_spec.rb +50 -25
  1589. data/spec/unit/util/constant_inflector_spec.rb +0 -1
  1590. data/spec/unit/util/diff_spec.rb +12 -5
  1591. data/spec/unit/util/docs_spec.rb +1 -1
  1592. data/spec/unit/util/errors_spec.rb +0 -1
  1593. data/spec/unit/util/execution_spec.rb +288 -167
  1594. data/spec/unit/util/execution_stub_spec.rb +2 -3
  1595. data/spec/unit/util/feature_spec.rb +56 -29
  1596. data/spec/unit/util/filetype_spec.rb +62 -50
  1597. data/spec/unit/util/http_proxy_spec.rb +178 -17
  1598. data/spec/unit/util/inifile_spec.rb +70 -52
  1599. data/spec/unit/util/json_lockfile_spec.rb +3 -5
  1600. data/spec/unit/util/json_spec.rb +126 -0
  1601. data/spec/unit/util/ldap/connection_spec.rb +26 -25
  1602. data/spec/unit/util/ldap/generator_spec.rb +0 -1
  1603. data/spec/unit/util/ldap/manager_spec.rb +100 -129
  1604. data/spec/unit/util/lockfile_spec.rb +1 -2
  1605. data/spec/unit/util/log/destinations_spec.rb +68 -37
  1606. data/spec/unit/util/log_spec.rb +55 -151
  1607. data/spec/unit/util/logging_spec.rb +323 -105
  1608. data/spec/unit/util/metric_spec.rb +0 -1
  1609. data/spec/unit/util/monkey_patches_spec.rb +23 -13
  1610. data/spec/unit/util/multi_match_spec.rb +0 -1
  1611. data/spec/unit/util/network_device/config_spec.rb +0 -1
  1612. data/spec/unit/util/network_device/transport/base_spec.rb +5 -6
  1613. data/spec/unit/util/network_device_spec.rb +7 -9
  1614. data/spec/unit/util/package/version/debian_spec.rb +83 -0
  1615. data/spec/unit/util/package/version/pip_spec.rb +464 -0
  1616. data/spec/unit/util/package/version/range_spec.rb +175 -0
  1617. data/spec/unit/util/package/version/rpm_spec.rb +121 -0
  1618. data/spec/unit/util/package_spec.rb +0 -1
  1619. data/spec/unit/util/pidlock_spec.rb +130 -15
  1620. data/spec/unit/util/plist_spec.rb +66 -33
  1621. data/spec/unit/util/posix_spec.rb +426 -47
  1622. data/spec/unit/util/profiler/object_counts_spec.rb +2 -1
  1623. data/spec/unit/util/rdoc_spec.rb +9 -10
  1624. data/spec/unit/util/reference_spec.rb +0 -1
  1625. data/spec/unit/util/resource_template_spec.rb +20 -20
  1626. data/spec/unit/util/retry_action_spec.rb +7 -8
  1627. data/spec/unit/util/rpm_compare_spec.rb +196 -0
  1628. data/spec/unit/util/rubygems_spec.rb +8 -43
  1629. data/spec/unit/util/run_mode_spec.rb +16 -17
  1630. data/spec/unit/util/selinux_spec.rb +204 -98
  1631. data/spec/unit/util/skip_tags_spec.rb +14 -0
  1632. data/spec/unit/util/splayer_spec.rb +8 -9
  1633. data/spec/unit/util/ssl_spec.rb +0 -1
  1634. data/spec/unit/util/storage_spec.rb +125 -12
  1635. data/spec/unit/util/suidmanager_spec.rb +83 -91
  1636. data/spec/unit/util/symbolic_file_mode_spec.rb +0 -1
  1637. data/spec/unit/util/tag_set_spec.rb +8 -2
  1638. data/spec/unit/util/tagging_spec.rb +27 -9
  1639. data/spec/unit/util/terminal_spec.rb +9 -10
  1640. data/spec/unit/util/user_attr_spec.rb +1 -2
  1641. data/spec/unit/util/warnings_spec.rb +3 -4
  1642. data/spec/unit/util/watcher/periodic_watcher_spec.rb +2 -2
  1643. data/spec/unit/util/watcher_spec.rb +51 -21
  1644. data/spec/unit/util/windows/access_control_entry_spec.rb +1 -2
  1645. data/spec/unit/util/windows/access_control_list_spec.rb +1 -2
  1646. data/spec/unit/util/windows/adsi_spec.rb +285 -137
  1647. data/spec/unit/util/windows/api_types_spec.rb +105 -42
  1648. data/spec/unit/util/windows/eventlog_spec.rb +10 -13
  1649. data/spec/unit/util/windows/file_spec.rb +0 -1
  1650. data/spec/unit/util/windows/root_certs_spec.rb +1 -2
  1651. data/spec/unit/util/windows/security_descriptor_spec.rb +1 -3
  1652. data/spec/unit/util/windows/service_spec.rb +677 -0
  1653. data/spec/unit/util/windows/sid_spec.rb +131 -21
  1654. data/spec/unit/util/windows/string_spec.rb +1 -2
  1655. data/spec/unit/util/windows_spec.rb +23 -0
  1656. data/spec/unit/util/yaml_spec.rb +193 -34
  1657. data/spec/unit/util_spec.rb +110 -130
  1658. data/spec/unit/version_spec.rb +6 -6
  1659. data/spec/unit/x509/cert_provider_spec.rb +606 -0
  1660. data/spec/unit/x509/pem_store_spec.rb +160 -0
  1661. data/tasks/benchmark.rake +41 -0
  1662. data/tasks/ci.rake +0 -5
  1663. data/tasks/generate_cert_fixtures.rake +194 -0
  1664. data/tasks/manpages.rake +15 -36
  1665. data/tasks/parallel.rake +3 -3
  1666. data/tasks/parser.rake +11 -3
  1667. metadata +3497 -3514
  1668. data/COMMITTERS.md +0 -244
  1669. data/MAINTAINERS +0 -66
  1670. data/ext/README.environment +0 -8
  1671. data/ext/autotest/Rakefile +0 -8
  1672. data/ext/autotest/config +0 -43
  1673. data/ext/autotest/readme.rst +0 -16
  1674. data/ext/cert_inspector +0 -140
  1675. data/ext/dbfix.sql +0 -132
  1676. data/ext/debian/README.Debian +0 -8
  1677. data/ext/debian/README.source +0 -2
  1678. data/ext/debian/TODO.Debian +0 -1
  1679. data/ext/debian/changelog.erb +0 -1122
  1680. data/ext/debian/compat +0 -1
  1681. data/ext/debian/control +0 -144
  1682. data/ext/debian/copyright +0 -361
  1683. data/ext/debian/docs +0 -1
  1684. data/ext/debian/fileserver.conf +0 -41
  1685. data/ext/debian/puppet-common.dirs +0 -13
  1686. data/ext/debian/puppet-common.install +0 -3
  1687. data/ext/debian/puppet-common.lintian-overrides +0 -5
  1688. data/ext/debian/puppet-common.manpages +0 -28
  1689. data/ext/debian/puppet-common.postinst +0 -35
  1690. data/ext/debian/puppet-common.postrm +0 -33
  1691. data/ext/debian/puppet-el.dirs +0 -1
  1692. data/ext/debian/puppet-el.emacsen-install +0 -25
  1693. data/ext/debian/puppet-el.emacsen-remove +0 -11
  1694. data/ext/debian/puppet-el.emacsen-startup +0 -9
  1695. data/ext/debian/puppet-el.install +0 -1
  1696. data/ext/debian/puppet-testsuite.install +0 -2
  1697. data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
  1698. data/ext/debian/puppet.lintian-overrides +0 -3
  1699. data/ext/debian/puppet.logrotate +0 -20
  1700. data/ext/debian/puppet.postinst +0 -20
  1701. data/ext/debian/puppet.postrm +0 -20
  1702. data/ext/debian/puppet.preinst +0 -20
  1703. data/ext/debian/puppetmaster-common.install +0 -2
  1704. data/ext/debian/puppetmaster-common.manpages +0 -2
  1705. data/ext/debian/puppetmaster-common.postinst +0 -6
  1706. data/ext/debian/puppetmaster-passenger.dirs +0 -4
  1707. data/ext/debian/puppetmaster-passenger.postinst +0 -162
  1708. data/ext/debian/puppetmaster-passenger.postrm +0 -61
  1709. data/ext/debian/puppetmaster.README.debian +0 -17
  1710. data/ext/debian/puppetmaster.default +0 -14
  1711. data/ext/debian/puppetmaster.init +0 -137
  1712. data/ext/debian/puppetmaster.lintian-overrides +0 -3
  1713. data/ext/debian/puppetmaster.postinst +0 -20
  1714. data/ext/debian/puppetmaster.postrm +0 -5
  1715. data/ext/debian/puppetmaster.preinst +0 -22
  1716. data/ext/debian/rules +0 -132
  1717. data/ext/debian/source/format +0 -1
  1718. data/ext/debian/source/options +0 -1
  1719. data/ext/debian/vim-puppet.README.Debian +0 -13
  1720. data/ext/debian/vim-puppet.dirs +0 -5
  1721. data/ext/debian/vim-puppet.yaml +0 -7
  1722. data/ext/debian/watch +0 -2
  1723. data/ext/envpuppet +0 -139
  1724. data/ext/envpuppet.bat +0 -14
  1725. data/ext/freebsd/puppetd +0 -26
  1726. data/ext/freebsd/puppetmasterd +0 -26
  1727. data/ext/gentoo/conf.d/puppet +0 -5
  1728. data/ext/gentoo/conf.d/puppetmaster +0 -12
  1729. data/ext/gentoo/init.d/puppet +0 -38
  1730. data/ext/gentoo/init.d/puppetmaster +0 -51
  1731. data/ext/gentoo/puppet/fileserver.conf +0 -41
  1732. data/ext/ips/puppet-agent +0 -44
  1733. data/ext/ips/puppet-master +0 -44
  1734. data/ext/ips/puppet.p5m.erb +0 -12
  1735. data/ext/ips/puppetagent.xml +0 -42
  1736. data/ext/ips/puppetmaster.xml +0 -42
  1737. data/ext/ips/rules +0 -19
  1738. data/ext/ips/transforms +0 -34
  1739. data/ext/ldap/puppet.schema +0 -24
  1740. data/ext/logcheck/puppet +0 -23
  1741. data/ext/osx/file_mapping.yaml +0 -33
  1742. data/ext/osx/postflight.erb +0 -109
  1743. data/ext/osx/preflight.erb +0 -52
  1744. data/ext/osx/prototype.plist.erb +0 -38
  1745. data/ext/puppet-test +0 -477
  1746. data/ext/pure_ruby_dsl/dsl_test.rb +0 -7
  1747. data/ext/rack/config.ru +0 -44
  1748. data/ext/rack/example-passenger-vhost.conf +0 -57
  1749. data/ext/redhat/fileserver.conf +0 -41
  1750. data/ext/redhat/logrotate +0 -21
  1751. data/ext/redhat/puppet.spec.erb +0 -846
  1752. data/ext/redhat/server.init +0 -128
  1753. data/ext/redhat/server.sysconfig +0 -13
  1754. data/ext/solaris/pkginfo +0 -6
  1755. data/ext/solaris/smf/puppetd.xml +0 -77
  1756. data/ext/solaris/smf/puppetmasterd.xml +0 -77
  1757. data/ext/solaris/smf/svc-puppetd +0 -64
  1758. data/ext/solaris/smf/svc-puppetmasterd +0 -60
  1759. data/ext/suse/puppet.spec +0 -310
  1760. data/ext/suse/server.init +0 -173
  1761. data/ext/upload_facts.rb +0 -119
  1762. data/ext/windows/eventlog/Rakefile +0 -32
  1763. data/ext/windows/eventlog/puppetres.dll +0 -0
  1764. data/ext/windows/eventlog/puppetres.mc +0 -18
  1765. data/ext/yaml_nodes.rb +0 -105
  1766. data/lib/puppet/application/ca.rb +0 -11
  1767. data/lib/puppet/application/certificate.rb +0 -17
  1768. data/lib/puppet/application/certificate_request.rb +0 -7
  1769. data/lib/puppet/application/certificate_revocation_list.rb +0 -7
  1770. data/lib/puppet/application/master.rb +0 -317
  1771. data/lib/puppet/bindings.rb +0 -148
  1772. data/lib/puppet/configurer/downloader_factory.rb +0 -44
  1773. data/lib/puppet/external/nagios/base.rb +0 -472
  1774. data/lib/puppet/external/nagios/grammar.ry +0 -248
  1775. data/lib/puppet/external/nagios/makefile +0 -9
  1776. data/lib/puppet/external/nagios/parser.rb +0 -400
  1777. data/lib/puppet/external/nagios.rb +0 -46
  1778. data/lib/puppet/face/ca.rb +0 -266
  1779. data/lib/puppet/face/certificate.rb +0 -165
  1780. data/lib/puppet/face/certificate_request.rb +0 -56
  1781. data/lib/puppet/face/certificate_revocation_list.rb +0 -56
  1782. data/lib/puppet/feature/rack.rb +0 -19
  1783. data/lib/puppet/graph/random_prioritizer.rb +0 -16
  1784. data/lib/puppet/graph/title_hash_prioritizer.rb +0 -16
  1785. data/lib/puppet/indirector/certificate/ca.rb +0 -9
  1786. data/lib/puppet/indirector/certificate/disabled_ca.rb +0 -22
  1787. data/lib/puppet/indirector/certificate_request/ca.rb +0 -22
  1788. data/lib/puppet/indirector/certificate_request/disabled_ca.rb +0 -22
  1789. data/lib/puppet/indirector/certificate_revocation_list/ca.rb +0 -8
  1790. data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +0 -22
  1791. data/lib/puppet/indirector/certificate_revocation_list/file.rb +0 -8
  1792. data/lib/puppet/indirector/certificate_revocation_list/rest.rb +0 -22
  1793. data/lib/puppet/indirector/certificate_status/file.rb +0 -91
  1794. data/lib/puppet/indirector/certificate_status/rest.rb +0 -11
  1795. data/lib/puppet/indirector/certificate_status.rb +0 -4
  1796. data/lib/puppet/indirector/key/ca.rb +0 -16
  1797. data/lib/puppet/indirector/key/disabled_ca.rb +0 -22
  1798. data/lib/puppet/indirector/ldap.rb +0 -80
  1799. data/lib/puppet/indirector/node/ldap.rb +0 -259
  1800. data/lib/puppet/indirector/node/write_only_yaml.rb +0 -39
  1801. data/lib/puppet/module_tool/applications/builder.rb +0 -148
  1802. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +0 -18
  1803. data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +0 -89
  1804. data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +0 -32
  1805. data/lib/puppet/module_tool/skeleton/templates/generator/examples/init.pp.erb +0 -12
  1806. data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +0 -48
  1807. data/lib/puppet/module_tool/skeleton/templates/generator/metadata.json.erb +0 -1
  1808. data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +0 -6
  1809. data/lib/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +0 -1
  1810. data/lib/puppet/network/http/api/ca/v1.rb +0 -11
  1811. data/lib/puppet/network/http/api/ca.rb +0 -2
  1812. data/lib/puppet/network/http/rack/rest.rb +0 -162
  1813. data/lib/puppet/network/http/rack.rb +0 -33
  1814. data/lib/puppet/network/http/webrick/rest.rb +0 -114
  1815. data/lib/puppet/network/http/webrick.rb +0 -123
  1816. data/lib/puppet/network/server.rb +0 -39
  1817. data/lib/puppet/pops/loader/null_loader.rb +0 -60
  1818. data/lib/puppet/provider/aixobject.rb +0 -392
  1819. data/lib/puppet/provider/augeas/augeas.rb +0 -567
  1820. data/lib/puppet/provider/cisco.rb +0 -9
  1821. data/lib/puppet/provider/computer/computer.rb +0 -20
  1822. data/lib/puppet/provider/cron/crontab.rb +0 -297
  1823. data/lib/puppet/provider/host/parsed.rb +0 -46
  1824. data/lib/puppet/provider/interface/cisco.rb +0 -27
  1825. data/lib/puppet/provider/macauthorization/macauthorization.rb +0 -298
  1826. data/lib/puppet/provider/mailalias/aliases.rb +0 -50
  1827. data/lib/puppet/provider/maillist/mailman.rb +0 -108
  1828. data/lib/puppet/provider/mcx/mcxcontent.rb +0 -173
  1829. data/lib/puppet/provider/mount/parsed.rb +0 -282
  1830. data/lib/puppet/provider/mount.rb +0 -59
  1831. data/lib/puppet/provider/naginator.rb +0 -63
  1832. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +0 -590
  1833. data/lib/puppet/provider/selboolean/getsetsebool.rb +0 -47
  1834. data/lib/puppet/provider/selmodule/semodule.rb +0 -140
  1835. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +0 -105
  1836. data/lib/puppet/provider/sshkey/parsed.rb +0 -50
  1837. data/lib/puppet/provider/vlan/cisco.rb +0 -28
  1838. data/lib/puppet/provider/yumrepo/inifile.rb +0 -305
  1839. data/lib/puppet/provider/zfs/zfs.rb +0 -88
  1840. data/lib/puppet/provider/zone/solaris.rb +0 -364
  1841. data/lib/puppet/provider/zpool/zpool.rb +0 -125
  1842. data/lib/puppet/ssl/certificate_authority/autosign_command.rb +0 -45
  1843. data/lib/puppet/ssl/certificate_authority/interface.rb +0 -324
  1844. data/lib/puppet/ssl/certificate_authority.rb +0 -553
  1845. data/lib/puppet/ssl/certificate_revocation_list.rb +0 -110
  1846. data/lib/puppet/ssl/configuration.rb +0 -61
  1847. data/lib/puppet/ssl/inventory.rb +0 -55
  1848. data/lib/puppet/type/augeas.rb +0 -211
  1849. data/lib/puppet/type/computer.rb +0 -66
  1850. data/lib/puppet/type/cron.rb +0 -475
  1851. data/lib/puppet/type/host.rb +0 -95
  1852. data/lib/puppet/type/interface.rb +0 -121
  1853. data/lib/puppet/type/k5login.rb +0 -88
  1854. data/lib/puppet/type/macauthorization.rb +0 -167
  1855. data/lib/puppet/type/mailalias.rb +0 -46
  1856. data/lib/puppet/type/maillist.rb +0 -62
  1857. data/lib/puppet/type/mcx.rb +0 -98
  1858. data/lib/puppet/type/mount.rb +0 -310
  1859. data/lib/puppet/type/nagios_command.rb +0 -3
  1860. data/lib/puppet/type/nagios_contact.rb +0 -3
  1861. data/lib/puppet/type/nagios_contactgroup.rb +0 -3
  1862. data/lib/puppet/type/nagios_host.rb +0 -3
  1863. data/lib/puppet/type/nagios_hostdependency.rb +0 -3
  1864. data/lib/puppet/type/nagios_hostescalation.rb +0 -3
  1865. data/lib/puppet/type/nagios_hostextinfo.rb +0 -3
  1866. data/lib/puppet/type/nagios_hostgroup.rb +0 -3
  1867. data/lib/puppet/type/nagios_service.rb +0 -3
  1868. data/lib/puppet/type/nagios_servicedependency.rb +0 -3
  1869. data/lib/puppet/type/nagios_serviceescalation.rb +0 -3
  1870. data/lib/puppet/type/nagios_serviceextinfo.rb +0 -3
  1871. data/lib/puppet/type/nagios_servicegroup.rb +0 -3
  1872. data/lib/puppet/type/nagios_timeperiod.rb +0 -3
  1873. data/lib/puppet/type/router.rb +0 -17
  1874. data/lib/puppet/type/scheduled_task.rb +0 -183
  1875. data/lib/puppet/type/selboolean.rb +0 -26
  1876. data/lib/puppet/type/selmodule.rb +0 -59
  1877. data/lib/puppet/type/ssh_authorized_key.rb +0 -143
  1878. data/lib/puppet/type/sshkey.rb +0 -83
  1879. data/lib/puppet/type/vlan.rb +0 -26
  1880. data/lib/puppet/type/yumrepo.rb +0 -409
  1881. data/lib/puppet/type/zfs.rb +0 -150
  1882. data/lib/puppet/type/zone.rb +0 -382
  1883. data/lib/puppet/type/zpool.rb +0 -91
  1884. data/lib/puppet/util/methodhelper.rb +0 -32
  1885. data/lib/puppet/util/nagios_maker.rb +0 -85
  1886. data/lib/puppet/util/network_device/cisco/device.rb +0 -285
  1887. data/lib/puppet/util/network_device/cisco/facts.rb +0 -72
  1888. data/lib/puppet/util/network_device/cisco/interface.rb +0 -94
  1889. data/lib/puppet/util/network_device/cisco.rb +0 -4
  1890. data/lib/puppet/util/network_device/ipcalc.rb +0 -68
  1891. data/lib/puppet/util/network_device/transport/ssh.rb +0 -126
  1892. data/lib/puppet/util/network_device/transport/telnet.rb +0 -47
  1893. data/lib/puppet/util/windows/taskscheduler.rb +0 -1276
  1894. data/lib/puppet/vendor/deep_merge/CHANGELOG +0 -45
  1895. data/lib/puppet/vendor/deep_merge/Gemfile +0 -3
  1896. data/lib/puppet/vendor/deep_merge/LICENSE +0 -21
  1897. data/lib/puppet/vendor/deep_merge/PUPPET_README.md +0 -6
  1898. data/lib/puppet/vendor/deep_merge/README.md +0 -113
  1899. data/lib/puppet/vendor/deep_merge/Rakefile +0 -19
  1900. data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +0 -35
  1901. data/lib/puppet/vendor/deep_merge/lib/deep_merge/core.rb +0 -210
  1902. data/lib/puppet/vendor/deep_merge/lib/deep_merge/deep_merge_hash.rb +0 -28
  1903. data/lib/puppet/vendor/deep_merge/lib/deep_merge/rails_compat.rb +0 -27
  1904. data/lib/puppet/vendor/deep_merge/lib/deep_merge.rb +0 -2
  1905. data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +0 -608
  1906. data/lib/puppet/vendor/load_deep_merge.rb +0 -1
  1907. data/lib/puppet/vendor/load_semantic.rb +0 -1
  1908. data/lib/puppet/vendor/load_semantic_puppet.rb +0 -1
  1909. data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -5
  1910. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/graph.rb +0 -60
  1911. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/graph_node.rb +0 -117
  1912. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +0 -58
  1913. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/source.rb +0 -25
  1914. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/unsatisfiable_graph.rb +0 -31
  1915. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency.rb +0 -181
  1916. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +0 -3
  1917. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version.rb +0 -203
  1918. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version_range.rb +0 -758
  1919. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +0 -11
  1920. data/locales/ja/puppet.po +0 -11234
  1921. data/man/man8/puppet-ca.8 +0 -196
  1922. data/man/man8/puppet-cert.8 +0 -118
  1923. data/man/man8/puppet-certificate.8 +0 -240
  1924. data/man/man8/puppet-certificate_request.8 +0 -161
  1925. data/man/man8/puppet-certificate_revocation_list.8 +0 -139
  1926. data/man/man8/puppet-master.8 +0 -85
  1927. data/spec/fixtures/integration/provider/cron/crontab/create_normal_entry +0 -19
  1928. data/spec/fixtures/integration/provider/cron/crontab/create_special_entry +0 -18
  1929. data/spec/fixtures/integration/provider/cron/crontab/crontab_user1 +0 -15
  1930. data/spec/fixtures/integration/provider/cron/crontab/crontab_user2 +0 -4
  1931. data/spec/fixtures/integration/provider/cron/crontab/modify_entry +0 -13
  1932. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input1 +0 -15
  1933. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input2 +0 -6
  1934. data/spec/fixtures/integration/provider/cron/crontab/purged +0 -8
  1935. data/spec/fixtures/integration/provider/cron/crontab/remove_named_resource +0 -12
  1936. data/spec/fixtures/integration/provider/cron/crontab/remove_unnamed_resource +0 -14
  1937. data/spec/fixtures/integration/provider/cron/crontab/unspecialized +0 -15
  1938. data/spec/fixtures/integration/provider/mailalias/aliases/test1 +0 -31
  1939. data/spec/fixtures/integration/provider/sshkey/sample +0 -21
  1940. data/spec/fixtures/unit/provider/augeas/augeas/augeas/lenses/test.aug +0 -13
  1941. data/spec/fixtures/unit/provider/augeas/augeas/etc/fstab +0 -10
  1942. data/spec/fixtures/unit/provider/augeas/augeas/etc/hosts +0 -6
  1943. data/spec/fixtures/unit/provider/augeas/augeas/etc/test +0 -3
  1944. data/spec/fixtures/unit/provider/augeas/augeas/test.aug +0 -13
  1945. data/spec/fixtures/unit/provider/host/parsed/valid_hosts +0 -19
  1946. data/spec/fixtures/unit/provider/mount/mount-output.aix.txt +0 -7
  1947. data/spec/fixtures/unit/provider/mount/parsed/aix.filesystems +0 -152
  1948. data/spec/fixtures/unit/provider/mount/parsed/aix.mount +0 -11
  1949. data/spec/fixtures/unit/provider/mount/parsed/darwin.mount +0 -6
  1950. data/spec/fixtures/unit/provider/mount/parsed/freebsd.fstab +0 -8
  1951. data/spec/fixtures/unit/provider/mount/parsed/freebsd.mount +0 -3
  1952. data/spec/fixtures/unit/provider/mount/parsed/hpux.mount +0 -17
  1953. data/spec/fixtures/unit/provider/mount/parsed/linux.fstab +0 -11
  1954. data/spec/fixtures/unit/provider/mount/parsed/linux.mount +0 -5
  1955. data/spec/fixtures/unit/provider/mount/parsed/netbsd.fstab +0 -9
  1956. data/spec/fixtures/unit/provider/mount/parsed/netbsd.mount +0 -8
  1957. data/spec/fixtures/unit/provider/mount/parsed/openbsd.fstab +0 -4
  1958. data/spec/fixtures/unit/provider/mount/parsed/openbsd.mount +0 -4
  1959. data/spec/fixtures/unit/provider/mount/parsed/solaris.fstab +0 -11
  1960. data/spec/fixtures/unit/provider/mount/parsed/solaris.mount +0 -6
  1961. data/spec/fixtures/unit/provider/naginator/define_empty_param +0 -6
  1962. data/spec/fixtures/unit/provider/package/pkgng/pkg.info +0 -8
  1963. data/spec/fixtures/unit/provider/package/pkgng/pkg.query_absent +0 -1
  1964. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys +0 -7
  1965. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys1 +0 -3
  1966. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys2 +0 -1
  1967. data/spec/fixtures/unit/provider/sshkey/parsed/sample +0 -21
  1968. data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +0 -8
  1969. data/spec/fixtures/unit/provider/zfs/zfs/zfs-list.out +0 -2
  1970. data/spec/fixtures/unit/provider/zpool/zpool/zpool-list.out +0 -2
  1971. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_get/should_yield_to_the_block.yml +0 -24
  1972. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_head/should_yield_to_the_block.yml +0 -24
  1973. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_post/should_yield_to_the_block.yml +0 -24
  1974. data/spec/integration/faces/ca_spec.rb +0 -354
  1975. data/spec/integration/faces/config_spec.rb +0 -80
  1976. data/spec/integration/faces/documentation_spec.rb +0 -58
  1977. data/spec/integration/faces/plugin_spec.rb +0 -59
  1978. data/spec/integration/file_bucket/file_spec.rb +0 -69
  1979. data/spec/integration/file_serving/content_spec.rb +0 -8
  1980. data/spec/integration/file_serving/fileset_spec.rb +0 -13
  1981. data/spec/integration/file_serving/metadata_spec.rb +0 -9
  1982. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -21
  1983. data/spec/integration/file_system/uniquefile_spec.rb +0 -29
  1984. data/spec/integration/indirector/node/ldap_spec.rb +0 -14
  1985. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  1986. data/spec/integration/provider/cron/crontab_spec.rb +0 -242
  1987. data/spec/integration/provider/mailalias/aliases_spec.rb +0 -10
  1988. data/spec/integration/provider/mount_spec.rb +0 -161
  1989. data/spec/integration/provider/service/init_spec.rb +0 -46
  1990. data/spec/integration/provider/service/systemd_spec.rb +0 -20
  1991. data/spec/integration/provider/service/windows_spec.rb +0 -49
  1992. data/spec/integration/provider/ssh_authorized_key_spec.rb +0 -219
  1993. data/spec/integration/provider/sshkey_spec.rb +0 -159
  1994. data/spec/integration/provider/yumrepo_spec.rb +0 -130
  1995. data/spec/integration/reference/providers_spec.rb +0 -16
  1996. data/spec/integration/reports_spec.rb +0 -14
  1997. data/spec/integration/ssl/autosign_spec.rb +0 -145
  1998. data/spec/integration/ssl/certificate_authority_spec.rb +0 -162
  1999. data/spec/integration/ssl/certificate_request_spec.rb +0 -47
  2000. data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -34
  2001. data/spec/integration/ssl/host_spec.rb +0 -81
  2002. data/spec/integration/ssl/key_spec.rb +0 -104
  2003. data/spec/integration/test/test_helper_spec.rb +0 -32
  2004. data/spec/integration/type/nagios_spec.rb +0 -71
  2005. data/spec/integration/type/user_spec.rb +0 -64
  2006. data/spec/lib/matchers/include.rb +0 -27
  2007. data/spec/lib/matchers/include_spec.rb +0 -32
  2008. data/spec/shared_behaviours/file_serving_model.rb +0 -72
  2009. data/spec/unit/application/cert_spec.rb +0 -240
  2010. data/spec/unit/application/certificate_spec.rb +0 -22
  2011. data/spec/unit/application/master_spec.rb +0 -404
  2012. data/spec/unit/configurer/downloader_factory_spec.rb +0 -129
  2013. data/spec/unit/face/ca_spec.rb +0 -10
  2014. data/spec/unit/face/catalog_spec.rb +0 -7
  2015. data/spec/unit/face/certificate_request_spec.rb +0 -10
  2016. data/spec/unit/face/certificate_revocation_list_spec.rb +0 -10
  2017. data/spec/unit/face/certificate_spec.rb +0 -231
  2018. data/spec/unit/face/module/build_spec.rb +0 -69
  2019. data/spec/unit/face/module_spec.rb +0 -3
  2020. data/spec/unit/graph/title_hash_prioritizer_spec.rb +0 -49
  2021. data/spec/unit/indirector/certificate/ca_spec.rb +0 -23
  2022. data/spec/unit/indirector/certificate/disabled_ca_spec.rb +0 -33
  2023. data/spec/unit/indirector/certificate_request/ca_spec.rb +0 -57
  2024. data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +0 -33
  2025. data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +0 -16
  2026. data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +0 -33
  2027. data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +0 -17
  2028. data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +0 -34
  2029. data/spec/unit/indirector/certificate_status/file_spec.rb +0 -191
  2030. data/spec/unit/indirector/certificate_status/rest_spec.rb +0 -18
  2031. data/spec/unit/indirector/code_spec.rb +0 -31
  2032. data/spec/unit/indirector/key/ca_spec.rb +0 -23
  2033. data/spec/unit/indirector/key/disabled_ca_spec.rb +0 -33
  2034. data/spec/unit/indirector/ldap_spec.rb +0 -137
  2035. data/spec/unit/indirector/node/ldap_spec.rb +0 -462
  2036. data/spec/unit/indirector/node/write_only_yaml_spec.rb +0 -12
  2037. data/spec/unit/indirector/store_configs_spec.rb +0 -8
  2038. data/spec/unit/man_spec.rb +0 -32
  2039. data/spec/unit/module_tool/applications/builder_spec.rb +0 -432
  2040. data/spec/unit/network/http/api/ca/v1_spec.rb +0 -26
  2041. data/spec/unit/network/http/rack/rest_spec.rb +0 -325
  2042. data/spec/unit/network/http/rack_spec.rb +0 -43
  2043. data/spec/unit/network/http/webrick/rest_spec.rb +0 -231
  2044. data/spec/unit/network/http/webrick_spec.rb +0 -280
  2045. data/spec/unit/network/server_spec.rb +0 -95
  2046. data/spec/unit/provider/aixobject_spec.rb +0 -101
  2047. data/spec/unit/provider/augeas/augeas_spec.rb +0 -1025
  2048. data/spec/unit/provider/cisco_spec.rb +0 -15
  2049. data/spec/unit/provider/cron/crontab_spec.rb +0 -207
  2050. data/spec/unit/provider/cron/parsed_spec.rb +0 -358
  2051. data/spec/unit/provider/host/parsed_spec.rb +0 -233
  2052. data/spec/unit/provider/interface/cisco_spec.rb +0 -57
  2053. data/spec/unit/provider/macauthorization_spec.rb +0 -155
  2054. data/spec/unit/provider/mcx/mcxcontent_spec.rb +0 -192
  2055. data/spec/unit/provider/mount/parsed_spec.rb +0 -317
  2056. data/spec/unit/provider/mount_spec.rb +0 -165
  2057. data/spec/unit/provider/naginator_spec.rb +0 -79
  2058. data/spec/unit/provider/network_device_spec.rb +0 -152
  2059. data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +0 -2060
  2060. data/spec/unit/provider/selboolean_spec.rb +0 -36
  2061. data/spec/unit/provider/selmodule-example.pp +0 -0
  2062. data/spec/unit/provider/selmodule_spec.rb +0 -79
  2063. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -277
  2064. data/spec/unit/provider/sshkey/parsed_spec.rb +0 -95
  2065. data/spec/unit/provider/vlan/cisco_spec.rb +0 -55
  2066. data/spec/unit/provider/yumrepo/inifile_spec.rb +0 -326
  2067. data/spec/unit/provider/zfs/zfs_spec.rb +0 -112
  2068. data/spec/unit/provider/zone/solaris_spec.rb +0 -247
  2069. data/spec/unit/provider/zpool/zpool_spec.rb +0 -251
  2070. data/spec/unit/ssl/certificate_authority/autosign_command_spec.rb +0 -30
  2071. data/spec/unit/ssl/certificate_authority/interface_spec.rb +0 -560
  2072. data/spec/unit/ssl/certificate_authority_spec.rb +0 -1184
  2073. data/spec/unit/ssl/certificate_revocation_list_spec.rb +0 -196
  2074. data/spec/unit/ssl/configuration_spec.rb +0 -141
  2075. data/spec/unit/ssl/inventory_spec.rb +0 -151
  2076. data/spec/unit/type/augeas_spec.rb +0 -119
  2077. data/spec/unit/type/computer_spec.rb +0 -80
  2078. data/spec/unit/type/cron_spec.rb +0 -543
  2079. data/spec/unit/type/host_spec.rb +0 -681
  2080. data/spec/unit/type/interface_spec.rb +0 -129
  2081. data/spec/unit/type/k5login_spec.rb +0 -115
  2082. data/spec/unit/type/macauthorization_spec.rb +0 -113
  2083. data/spec/unit/type/mailalias_spec.rb +0 -49
  2084. data/spec/unit/type/maillist_spec.rb +0 -41
  2085. data/spec/unit/type/mcx_spec.rb +0 -79
  2086. data/spec/unit/type/mount_spec.rb +0 -634
  2087. data/spec/unit/type/nagios_spec.rb +0 -313
  2088. data/spec/unit/type/scheduled_task_spec.rb +0 -103
  2089. data/spec/unit/type/selboolean_spec.rb +0 -44
  2090. data/spec/unit/type/selmodule_spec.rb +0 -17
  2091. data/spec/unit/type/ssh_authorized_key_spec.rb +0 -258
  2092. data/spec/unit/type/sshkey_spec.rb +0 -77
  2093. data/spec/unit/type/vlan_spec.rb +0 -44
  2094. data/spec/unit/type/yumrepo_spec.rb +0 -398
  2095. data/spec/unit/type/zfs_spec.rb +0 -46
  2096. data/spec/unit/type/zone_spec.rb +0 -172
  2097. data/spec/unit/type/zpool_spec.rb +0 -109
  2098. data/spec/unit/util/nagios_maker_spec.rb +0 -122
  2099. data/spec/unit/util/network_device/cisco/device_spec.rb +0 -482
  2100. data/spec/unit/util/network_device/cisco/facts_spec.rb +0 -64
  2101. data/spec/unit/util/network_device/cisco/interface_spec.rb +0 -88
  2102. data/spec/unit/util/network_device/ipcalc_spec.rb +0 -62
  2103. data/spec/unit/util/network_device/transport/ssh_spec.rb +0 -218
  2104. data/spec/unit/util/network_device/transport/telnet_spec.rb +0 -86
  2105. data/spec/watchr.rb +0 -138
@@ -1,4 +1,3 @@
1
- #! /usr/bin/env ruby
2
1
  require 'spec_helper'
3
2
  require 'ostruct'
4
3
  require 'puppet/settings/errors'
@@ -10,7 +9,7 @@ describe Puppet::Settings do
10
9
  include Matchers::Resource
11
10
 
12
11
  let(:main_config_file_default_location) do
13
- File.join(Puppet::Util::RunMode[:master].conf_dir, "puppet.conf")
12
+ File.join(Puppet::Util::RunMode[:server].conf_dir, "puppet.conf")
14
13
  end
15
14
 
16
15
  let(:user_config_file_default_location) do
@@ -30,6 +29,17 @@ describe Puppet::Settings do
30
29
  end
31
30
  end
32
31
 
32
+ def stub_config_with(content)
33
+ allow(Puppet.features).to receive(:root?).and_return(false)
34
+ expect(Puppet::FileSystem).to receive(:exist?).
35
+ with(user_config_file_default_location).
36
+ and_return(true).ordered
37
+ expect(@settings).to receive(:read_file).
38
+ with(user_config_file_default_location).
39
+ and_return(content).ordered
40
+ @settings.send(:parse_config_files)
41
+ end
42
+
33
43
  describe "when specifying defaults" do
34
44
  before do
35
45
  @settings = Puppet::Settings.new
@@ -88,25 +98,15 @@ describe Puppet::Settings do
88
98
  end
89
99
  end
90
100
 
91
-
92
101
  describe "when initializing application defaults do" do
93
- let(:default_values) do
94
- values = {}
95
- PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS.keys.each do |key|
96
- values[key] = 'default value'
97
- end
98
- values
99
- end
100
-
101
102
  before do
102
103
  @settings = Puppet::Settings.new
103
104
  @settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
104
105
  end
105
106
 
106
107
  it "should fail if the app defaults hash is missing any required values" do
107
- incomplete_default_values = default_values.reject { |key, _| key == :confdir }
108
108
  expect {
109
- @settings.initialize_app_defaults(default_values.reject { |key, _| key == :confdir })
109
+ @settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.reject { |key, _| key == :confdir })
110
110
  }.to raise_error(Puppet::Settings::SettingsError)
111
111
  end
112
112
 
@@ -114,16 +114,16 @@ describe Puppet::Settings do
114
114
  # case behaviors / uses. However, until that time... we need to make sure that our private run_mode=
115
115
  # setter method gets properly called during app initialization.
116
116
  it "sets the preferred run mode when initializing the app defaults" do
117
- @settings.initialize_app_defaults(default_values.merge(:run_mode => :master))
117
+ @settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:run_mode => :server))
118
118
 
119
- expect(@settings.preferred_run_mode).to eq(:master)
119
+ expect(@settings.preferred_run_mode).to eq(:server)
120
120
  end
121
121
 
122
122
  it "creates ancestor directories for all required app settings" do
123
123
  # initialize_app_defaults is called in spec_helper, before we even
124
124
  # get here, but call it here to make it explicit what we're trying
125
125
  # to do.
126
- @settings.initialize_app_defaults(default_values)
126
+ @settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES)
127
127
 
128
128
  Puppet::Settings::REQUIRED_APP_SETTINGS.each do |key|
129
129
  expect(File).to exist(File.dirname(Puppet[key]))
@@ -150,6 +150,7 @@ describe Puppet::Settings do
150
150
  end.to_not raise_error
151
151
  end
152
152
  end
153
+
153
154
  describe "if no interpolation error" do
154
155
  it "should not raise an error" do
155
156
  hook_values = []
@@ -179,6 +180,7 @@ describe Puppet::Settings do
179
180
  @settings.send(:call_hooks_deferred_to_application_initialization, options)
180
181
  end.to raise_error(Puppet::Settings::InterpolationError)
181
182
  end
183
+
182
184
  it "should contain the setting name in error message" do
183
185
  hook_values = []
184
186
  @settings.define_settings(
@@ -195,6 +197,7 @@ describe Puppet::Settings do
195
197
  end.to raise_error(Puppet::Settings::InterpolationError, /badhook/)
196
198
  end
197
199
  end
200
+
198
201
  describe "if no interpolation error" do
199
202
  it "should not raise an error" do
200
203
  hook_values = []
@@ -272,123 +275,129 @@ describe Puppet::Settings do
272
275
  expect(@settings[:myval]).to eq("")
273
276
  end
274
277
 
275
- it "should flag string settings from the CLI" do
278
+ it "should retrieve numeric settings from the CLI" do
276
279
  @settings.handlearg("--myval", "12")
277
- expect(@settings.set_by_cli?(:myval)).to be_truthy
280
+ expect(@settings.set_by_cli(:myval)).to eq(12)
281
+ expect(@settings.set_by_cli?(:myval)).to be true
282
+ end
283
+
284
+ it "should retrieve string settings from the CLI" do
285
+ @settings.handlearg("--myval", "something")
286
+ expect(@settings.set_by_cli(:myval)).to eq("something")
287
+ expect(@settings.set_by_cli?(:myval)).to be true
278
288
  end
279
289
 
280
- it "should flag bool settings from the CLI" do
290
+ it "should retrieve bool settings from the CLI" do
281
291
  @settings.handlearg("--bool")
282
- expect(@settings.set_by_cli?(:bool)).to be_truthy
292
+ expect(@settings.set_by_cli(:bool)).to be true
293
+ expect(@settings.set_by_cli?(:bool)).to be true
283
294
  end
284
295
 
285
- it "should not flag settings memory as from CLI" do
296
+ it "should not retrieve settings set in memory as from CLI" do
286
297
  @settings[:myval] = "12"
287
- expect(@settings.set_by_cli?(:myval)).to be_falsey
298
+ expect(@settings.set_by_cli?(:myval)).to be false
288
299
  end
289
300
 
290
301
  it "should find no configured settings by default" do
291
- expect(@settings.set_by_config?(:myval)).to be_falsey
302
+ expect(@settings.set_by_config?(:myval)).to be false
292
303
  end
293
304
 
294
305
  it "should identify configured settings in memory" do
295
- @settings.instance_variable_get(:@value_sets)[:memory].expects(:lookup).with(:myval).returns('foo')
306
+ expect(@settings.instance_variable_get(:@value_sets)[:memory]).to receive(:lookup).with(:myval).and_return('foo')
296
307
  expect(@settings.set_by_config?(:myval)).to be_truthy
297
308
  end
298
309
 
299
310
  it "should identify configured settings from CLI" do
300
- @settings.instance_variable_get(:@value_sets)[:cli].expects(:lookup).with(:myval).returns('foo')
311
+ expect(@settings.instance_variable_get(:@value_sets)[:cli]).to receive(:lookup).with(:myval).and_return('foo')
301
312
  expect(@settings.set_by_config?(:myval)).to be_truthy
302
313
  end
303
314
 
304
315
  it "should not identify configured settings from environment by default" do
305
- Puppet.lookup(:environments).expects(:get_conf).with(Puppet[:environment].to_sym).never
316
+ expect(Puppet.lookup(:environments)).not_to receive(:get_conf).with(Puppet[:environment].to_sym)
306
317
  expect(@settings.set_by_config?(:manifest)).to be_falsey
307
318
  end
308
319
 
309
320
  it "should identify configured settings from environment by when an environment is specified" do
310
- foo = mock('environment', :manifest => 'foo')
311
- Puppet.lookup(:environments).expects(:get_conf).with(Puppet[:environment].to_sym).returns(foo)
321
+ foo = double('environment', :manifest => 'foo')
322
+ expect(Puppet.lookup(:environments)).to receive(:get_conf).with(Puppet[:environment].to_sym).and_return(foo)
312
323
  expect(@settings.set_by_config?(:manifest, Puppet[:environment])).to be_truthy
313
324
  end
314
325
 
315
- it "should identify configured settings from the preferred run mode" do
316
- user_config_text = "[#{@settings.preferred_run_mode}]\nmyval = foo"
317
- seq = sequence "config_file_sequence"
326
+ context "when handling puppet.conf" do
327
+ describe "#set_by_config?" do
328
+ it "should identify configured settings from the preferred run mode" do
329
+ stub_config_with(<<~CONFIG)
330
+ [#{@settings.preferred_run_mode}]
331
+ myval = foo
332
+ CONFIG
318
333
 
319
- Puppet.features.stubs(:root?).returns(false)
320
- Puppet::FileSystem.expects(:exist?).
321
- with(user_config_file_default_location).
322
- returns(true).in_sequence(seq)
323
- @settings.expects(:read_file).
324
- with(user_config_file_default_location).
325
- returns(user_config_text).in_sequence(seq)
334
+ expect(@settings.set_by_config?(:myval)).to be_truthy
335
+ end
326
336
 
327
- @settings.send(:parse_config_files)
328
- expect(@settings.set_by_config?(:myval)).to be_truthy
329
- end
337
+ it "should identify configured settings from the specified run mode" do
338
+ stub_config_with(<<~CONFIG)
339
+ [server]
340
+ myval = foo
341
+ CONFIG
330
342
 
331
- it "should identify configured settings from the specified run mode" do
332
- user_config_text = "[master]\nmyval = foo"
333
- seq = sequence "config_file_sequence"
343
+ expect(@settings.set_by_config?(:myval, nil, :server)).to be_truthy
344
+ end
334
345
 
335
- Puppet.features.stubs(:root?).returns(false)
336
- Puppet::FileSystem.expects(:exist?).
337
- with(user_config_file_default_location).
338
- returns(true).in_sequence(seq)
339
- @settings.expects(:read_file).
340
- with(user_config_file_default_location).
341
- returns(user_config_text).in_sequence(seq)
346
+ it "should not identify configured settings from an unspecified run mode" do
347
+ stub_config_with(<<~CONFIG)
348
+ [zaz]
349
+ myval = foo
350
+ CONFIG
342
351
 
343
- @settings.send(:parse_config_files)
344
- expect(@settings.set_by_config?(:myval, nil, :master)).to be_truthy
345
- end
352
+ expect(@settings.set_by_config?(:myval)).to be_falsey
353
+ end
346
354
 
347
- it "should not identify configured settings from an unspecified run mode" do
348
- user_config_text = "[zaz]\nmyval = foo"
349
- seq = sequence "config_file_sequence"
355
+ it "should identify configured settings from the main section" do
356
+ stub_config_with(<<~CONFIG)
357
+ [main]
358
+ myval = foo
359
+ CONFIG
350
360
 
351
- Puppet.features.stubs(:root?).returns(false)
352
- Puppet::FileSystem.expects(:exist?).
353
- with(user_config_file_default_location).
354
- returns(true).in_sequence(seq)
355
- @settings.expects(:read_file).
356
- with(user_config_file_default_location).
357
- returns(user_config_text).in_sequence(seq)
361
+ expect(@settings.set_by_config?(:myval)).to be_truthy
362
+ end
363
+ end
358
364
 
359
- @settings.send(:parse_config_files)
360
- expect(@settings.set_by_config?(:myval)).to be_falsey
361
- end
365
+ describe "#set_in_section" do
366
+ it "should retrieve configured settings from the specified section" do
367
+ stub_config_with(<<~CONFIG)
368
+ [agent]
369
+ myval = foo
370
+ CONFIG
362
371
 
363
- it "should identify configured settings from the main section" do
364
- user_config_text = "[main]\nmyval = foo"
365
- seq = sequence "config_file_sequence"
372
+ expect(@settings.set_in_section(:myval, :agent)).to eq("foo")
373
+ expect(@settings.set_in_section?(:myval, :agent)).to be true
374
+ end
366
375
 
367
- Puppet.features.stubs(:root?).returns(false)
368
- Puppet::FileSystem.expects(:exist?).
369
- with(user_config_file_default_location).
370
- returns(true).in_sequence(seq)
371
- @settings.expects(:read_file).
372
- with(user_config_file_default_location).
373
- returns(user_config_text).in_sequence(seq)
376
+ it "should not retrieve configured settings from a different section" do
377
+ stub_config_with(<<~CONFIG)
378
+ [main]
379
+ myval = foo
380
+ CONFIG
374
381
 
375
- @settings.send(:parse_config_files)
376
- expect(@settings.set_by_config?(:myval)).to be_truthy
382
+ expect(@settings.set_in_section(:myval, :agent)).to be nil
383
+ expect(@settings.set_in_section?(:myval, :agent)).to be false
384
+ end
385
+ end
377
386
  end
378
387
 
379
388
  it "should clear the cache when setting getopt-specific values" do
380
389
  @settings.define_settings :mysection,
381
390
  :one => { :default => "whah", :desc => "yay" },
382
391
  :two => { :default => "$one yay", :desc => "bah" }
383
- @settings.expects(:unsafe_flush_cache)
392
+ expect(@settings).to receive(:unsafe_flush_cache)
384
393
  expect(@settings[:two]).to eq("whah yay")
385
394
  @settings.handlearg("--one", "else")
386
395
  expect(@settings[:two]).to eq("else yay")
387
396
  end
388
397
 
389
398
  it "should clear the cache when the preferred_run_mode is changed" do
390
- @settings.expects(:flush_cache)
391
- @settings.preferred_run_mode = :master
399
+ expect(@settings).to receive(:flush_cache)
400
+ @settings.preferred_run_mode = :server
392
401
  end
393
402
 
394
403
  it "should not clear other values when setting getopt-specific values" do
@@ -398,127 +407,325 @@ describe Puppet::Settings do
398
407
  end
399
408
 
400
409
  it "should clear the list of used sections" do
401
- @settings.expects(:clearused)
410
+ expect(@settings).to receive(:clearused)
402
411
  @settings[:myval] = "yay"
403
412
  end
404
413
 
405
414
  describe "call_hook" do
415
+ let(:config_file) { tmpfile('config') }
416
+
417
+ before :each do
418
+ # We can't specify the config file to read from using `Puppet[:config] =`
419
+ # or pass it as an arg to Puppet.initialize_global_settings, because
420
+ # both of those will set the value on the `Puppet.settings` instance
421
+ # which is different from the `@settings` instance created in the test.
422
+ # Instead, we define a `:config` setting and set its default value to
423
+ # the `config_file` temp file, and then access the `config_file` within
424
+ # each test.
425
+ @settings.define_settings(:main, :config => { :type => :file, :desc => "config file", :default => config_file })
426
+ end
427
+
406
428
  Puppet::Settings::StringSetting.available_call_hook_values.each do |val|
407
429
  describe "when :#{val}" do
408
430
  describe "and definition invalid" do
409
431
  it "should raise error if no hook defined" do
410
432
  expect do
411
- @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => val})
433
+ @settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :call_hook => val})
412
434
  end.to raise_error(ArgumentError, /no :hook/)
413
435
  end
436
+
414
437
  it "should include the setting name in the error message" do
415
438
  expect do
416
- @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => val})
417
- end.to raise_error(ArgumentError, /for :hooker/)
439
+ @settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :call_hook => val})
440
+ end.to raise_error(ArgumentError, /for :setting/)
418
441
  end
419
442
  end
443
+
420
444
  describe "and definition valid" do
421
445
  before(:each) do
422
446
  hook_values = []
423
- @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => val, :hook => lambda { |v| hook_values << v }})
447
+ @settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :call_hook => val, :hook => lambda { |v| hook_values << v }})
424
448
  end
425
449
 
426
450
  it "should call the hook when value written" do
427
- @settings.setting(:hooker).expects(:handle).with("something").once
428
- @settings[:hooker] = "something"
451
+ expect(@settings.setting(:setting)).to receive(:handle).with("something").once
452
+ @settings[:setting] = "something"
429
453
  end
430
454
  end
431
455
  end
432
456
  end
433
457
 
434
458
  it "should have a default value of :on_write_only" do
435
- @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :hook => lambda { |v| hook_values << v }})
436
- expect(@settings.setting(:hooker).call_hook).to eq(:on_write_only)
459
+ @settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :hook => lambda { |v| hook_values << v }})
460
+ expect(@settings.setting(:setting).call_hook).to eq(:on_write_only)
437
461
  end
438
462
 
439
463
  describe "when nil" do
440
464
  it "should generate a warning" do
441
- Puppet.expects(:warning)
442
- @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => nil, :hook => lambda { |v| hook_values << v }})
465
+ expect(Puppet).to receive(:warning)
466
+ @settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :call_hook => nil, :hook => lambda { |v| hook_values << v }})
443
467
  end
468
+
444
469
  it "should use default" do
445
- @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => nil, :hook => lambda { |v| hook_values << v }})
446
- expect(@settings.setting(:hooker).call_hook).to eq(:on_write_only)
470
+ @settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :call_hook => nil, :hook => lambda { |v| hook_values << v }})
471
+ expect(@settings.setting(:setting).call_hook).to eq(:on_write_only)
447
472
  end
448
473
  end
449
474
 
450
475
  describe "when invalid" do
451
476
  it "should raise an error" do
452
477
  expect do
453
- @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => :foo, :hook => lambda { |v| hook_values << v }})
478
+ @settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :call_hook => :foo, :hook => lambda { |v| hook_values << v }})
454
479
  end.to raise_error(ArgumentError, /invalid.*call_hook/i)
455
480
  end
456
481
  end
457
482
 
483
+ describe "when :on_write_only" do
484
+ it "returns its hook type" do
485
+ @settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :hook => lambda { |_| }})
486
+
487
+ expect(@settings.setting(:setting).call_hook).to eq(:on_write_only)
488
+ end
489
+
490
+ it "should not call the hook at definition" do
491
+ hook_values = []
492
+ @settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :hook => lambda { |v| hook_values << v }})
493
+
494
+ expect(hook_values).to eq(%w[])
495
+ end
496
+
497
+ it "calls the hook when initializing global defaults with the value from the `main` section" do
498
+ hook_values = []
499
+ @settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :hook => lambda { |v| hook_values << v }})
500
+
501
+ File.write(config_file, <<~END)
502
+ [main]
503
+ setting=in_main
504
+ END
505
+ @settings.initialize_global_settings
506
+
507
+ expect(@settings[:setting]).to eq('in_main')
508
+ expect(hook_values).to eq(%w[in_main])
509
+ end
510
+
511
+ it "doesn't call the hook when initializing app defaults" do
512
+ hook_values = []
513
+ @settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
514
+ @settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :hook => lambda { |v| hook_values << v }})
515
+
516
+ File.write(config_file, <<~END)
517
+ [main]
518
+ setting=in_main
519
+ [agent]
520
+ setting=in_agent
521
+ END
522
+ @settings.initialize_global_settings
523
+
524
+ hook_values.clear
525
+
526
+ @settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES)
527
+
528
+ expect(@settings[:setting]).to eq('in_main')
529
+ expect(hook_values).to eq(%w[])
530
+ end
531
+
532
+ it "doesn't call the hook with value from a section that matches the run_mode" do
533
+ hook_values = []
534
+ @settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
535
+ @settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :hook => lambda { |v| hook_values << v }})
536
+
537
+ File.write(config_file, <<~END)
538
+ [main]
539
+ setting=in_main
540
+ [agent]
541
+ setting=in_agent
542
+ END
543
+ @settings.initialize_global_settings
544
+
545
+ hook_values.clear
546
+
547
+ @settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:run_mode => :agent))
548
+
549
+ expect(@settings[:setting]).to eq('in_agent')
550
+ expect(hook_values).to eq(%w[])
551
+ end
552
+ end
553
+
458
554
  describe "when :on_define_and_write" do
459
- it "should call the hook at definition" do
555
+ it "returns its hook type" do
556
+ @settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |_| }})
557
+
558
+ expect(@settings.setting(:setting).call_hook).to eq(:on_define_and_write)
559
+ end
560
+
561
+ it "should call the hook at definition with the default value" do
460
562
  hook_values = []
461
- @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| hook_values << v }})
462
- expect(@settings.setting(:hooker).call_hook).to eq(:on_define_and_write)
463
- expect(hook_values).to eq(%w{yay})
563
+ @settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| hook_values << v }})
564
+
565
+ expect(hook_values).to eq(%w[yay])
566
+ end
567
+
568
+ it "calls the hook when initializing global defaults with the value from the `main` section" do
569
+ hook_values = []
570
+ @settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| hook_values << v }})
571
+
572
+ File.write(config_file, <<~END)
573
+ [main]
574
+ setting=in_main
575
+ END
576
+ @settings.initialize_global_settings
577
+
578
+ expect(@settings[:setting]).to eq('in_main')
579
+ expect(hook_values).to eq(%w[yay in_main])
580
+ end
581
+
582
+ it "doesn't call the hook when initializing app defaults" do
583
+ hook_values = []
584
+ @settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
585
+ @settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| hook_values << v }})
586
+
587
+ File.write(config_file, <<~END)
588
+ [main]
589
+ setting=in_main
590
+ [agent]
591
+ setting=in_agent
592
+ END
593
+ @settings.initialize_global_settings
594
+
595
+ hook_values.clear
596
+
597
+ @settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES)
598
+
599
+ expect(@settings[:setting]).to eq('in_main')
600
+ expect(hook_values).to eq([])
601
+ end
602
+
603
+ it "doesn't call the hook with value from a section that matches the run_mode" do
604
+ hook_values = []
605
+ @settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
606
+ @settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| hook_values << v }})
607
+
608
+ File.write(config_file, <<~END)
609
+ [main]
610
+ setting=in_main
611
+ [agent]
612
+ setting=in_agent
613
+ END
614
+
615
+ @settings.initialize_global_settings
616
+
617
+ hook_values.clear
618
+
619
+ @settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:run_mode => :agent))
620
+
621
+ # The correct value is returned
622
+ expect(@settings[:setting]).to eq('in_agent')
623
+
624
+ # but the hook is never called, seems like a bug!
625
+ expect(hook_values).to eq([])
464
626
  end
465
627
  end
466
628
 
467
629
  describe "when :on_initialize_and_write" do
468
- before(:each) do
469
- @hook_values = []
470
- @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => :on_initialize_and_write, :hook => lambda { |v| @hook_values << v }})
630
+ it "returns its hook type" do
631
+ @settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_initialize_and_write, :hook => lambda { |_| }})
632
+
633
+ expect(@settings.setting(:setting).call_hook).to eq(:on_initialize_and_write)
471
634
  end
472
635
 
473
636
  it "should not call the hook at definition" do
474
- expect(@hook_values).to eq([])
475
- expect(@hook_values).not_to eq(%w{yay})
637
+ hook_values = []
638
+ @settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_initialize_and_write, :hook => lambda { |v| hook_values << v }})
639
+ expect(hook_values).to eq([])
476
640
  end
477
641
 
478
- it "should call the hook at initialization" do
479
- app_defaults = {}
480
- Puppet::Settings::REQUIRED_APP_SETTINGS.each do |key|
481
- app_defaults[key] = "foo"
482
- end
483
- app_defaults[:run_mode] = :user
642
+ it "calls the hook when initializing global defaults with the value from the `main` section" do
643
+ hook_values = []
644
+ @settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_initialize_and_write, :hook => lambda { |v| hook_values << v }})
645
+
646
+ File.write(config_file, <<~END)
647
+ [main]
648
+ setting=in_main
649
+ END
650
+ @settings.initialize_global_settings
651
+
652
+ expect(@settings[:setting]).to eq('in_main')
653
+ expect(hook_values).to eq(%w[in_main])
654
+ end
655
+
656
+ it "calls the hook when initializing app defaults" do
657
+ hook_values = []
484
658
  @settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
659
+ @settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_initialize_and_write, :hook => lambda { |v| hook_values << v }})
660
+
661
+ File.write(config_file, <<~END)
662
+ [main]
663
+ setting=in_main
664
+ [agent]
665
+ setting=in_agent
666
+ END
667
+ @settings.initialize_global_settings
485
668
 
486
- @settings.setting(:hooker).expects(:handle).with("yay").once
669
+ hook_values.clear
487
670
 
488
- @settings.initialize_app_defaults app_defaults
671
+ @settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES)
672
+
673
+ expect(@settings[:setting]).to eq('in_main')
674
+ expect(hook_values).to eq(%w[in_main])
675
+ end
676
+
677
+ it "calls the hook with the overridden value from a section that matches the run_mode" do
678
+ hook_values = []
679
+ @settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
680
+ @settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_initialize_and_write, :hook => lambda { |v| hook_values << v }})
681
+
682
+ File.write(config_file, <<~END)
683
+ [main]
684
+ setting=in_main
685
+ [agent]
686
+ setting=in_agent
687
+ END
688
+ @settings.initialize_global_settings
689
+
690
+ hook_values.clear
691
+
692
+ @settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:run_mode => :agent))
693
+
694
+ expect(@settings[:setting]).to eq('in_agent')
695
+ expect(hook_values).to eq(%w[in_agent])
489
696
  end
490
697
  end
491
698
  end
492
699
 
493
700
  it "should call passed blocks when values are set" do
494
701
  values = []
495
- @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :hook => lambda { |v| values << v }})
702
+ @settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :hook => lambda { |v| values << v }})
496
703
  expect(values).to eq([])
497
704
 
498
- @settings[:hooker] = "something"
705
+ @settings[:setting] = "something"
499
706
  expect(values).to eq(%w{something})
500
707
  end
501
708
 
502
709
  it "should call passed blocks when values are set via the command line" do
503
710
  values = []
504
- @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :hook => lambda { |v| values << v }})
711
+ @settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :hook => lambda { |v| values << v }})
505
712
  expect(values).to eq([])
506
713
 
507
- @settings.handlearg("--hooker", "yay")
714
+ @settings.handlearg("--setting", "yay")
508
715
 
509
716
  expect(values).to eq(%w{yay})
510
717
  end
511
718
 
512
719
  it "should provide an option to call passed blocks during definition" do
513
720
  values = []
514
- @settings.define_settings(:section, :hooker => {:default => "yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| values << v }})
721
+ @settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| values << v }})
515
722
  expect(values).to eq(%w{yay})
516
723
  end
517
724
 
518
725
  it "should pass the fully interpolated value to the hook when called on definition" do
519
726
  values = []
520
727
  @settings.define_settings(:section, :one => { :default => "test", :desc => "a" })
521
- @settings.define_settings(:section, :hooker => {:default => "$one/yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| values << v }})
728
+ @settings.define_settings(:section, :setting => {:default => "$one/yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| values << v }})
522
729
  expect(values).to eq(%w{test/yay})
523
730
  end
524
731
 
@@ -556,8 +763,9 @@ describe Puppet::Settings do
556
763
  :two => { :default => "$one TWO", :desc => "b"},
557
764
  :three => { :default => "$one $two THREE", :desc => "c"},
558
765
  :four => { :default => "$two $three FOUR", :desc => "d"},
559
- :five => { :default => nil, :desc => "e" }
560
- Puppet::FileSystem.stubs(:exist?).returns true
766
+ :five => { :default => nil, :desc => "e" },
767
+ :code => { :default => "", :desc => "my code"}
768
+ allow(Puppet::FileSystem).to receive(:exist?).and_return(true)
561
769
  end
562
770
 
563
771
  it "should provide a mechanism for returning set values" do
@@ -566,12 +774,8 @@ describe Puppet::Settings do
566
774
  end
567
775
 
568
776
  it "setting a value to nil causes it to return to its default" do
569
- default_values = { :one => "skipped value" }
570
- [:logdir, :confdir, :codedir, :vardir].each do |key|
571
- default_values[key] = 'default value'
572
- end
573
777
  @settings.define_settings :main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS
574
- @settings.initialize_app_defaults(default_values)
778
+ @settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:one => "skipped value"))
575
779
  @settings[:one] = "value will disappear"
576
780
 
577
781
  @settings[:one] = nil
@@ -612,6 +816,13 @@ describe Puppet::Settings do
612
816
  expect(@settings[:two]).to eq("one TWO")
613
817
  end
614
818
 
819
+ it "should not interpolate the value of the :code setting" do
820
+ @code = @settings.setting(:code)
821
+ expect(@code).not_to receive(:munge)
822
+
823
+ expect(@settings[:code]).to eq("")
824
+ end
825
+
615
826
  it "should have a run_mode that defaults to user" do
616
827
  expect(@settings.preferred_run_mode).to eq(:user)
617
828
  end
@@ -625,13 +836,14 @@ describe Puppet::Settings do
625
836
  end
626
837
 
627
838
  describe "when choosing which value to return" do
839
+ let(:config_file) { tmpfile('settings') }
840
+
628
841
  before do
629
842
  @settings = Puppet::Settings.new
630
843
  @settings.define_settings :section,
631
- :config => { :type => :file, :default => "/my/file", :desc => "a" },
844
+ :config => { :type => :file, :default => config_file, :desc => "a" },
632
845
  :one => { :default => "ONE", :desc => "a" },
633
846
  :two => { :default => "TWO", :desc => "b" }
634
- Puppet::FileSystem.stubs(:exist?).returns true
635
847
  @settings.preferred_run_mode = :agent
636
848
  end
637
849
 
@@ -640,27 +852,44 @@ describe Puppet::Settings do
640
852
  end
641
853
 
642
854
  it "should return values set on the cli before values set in the configuration file" do
643
- text = "[main]\none = fileval\n"
644
- @settings.stubs(:read_file).returns(text)
855
+ File.write(config_file, "[main]\none = fileval\n")
645
856
  @settings.handlearg("--one", "clival")
646
- @settings.send(:parse_config_files)
857
+ @settings.initialize_global_settings
647
858
 
648
859
  expect(@settings[:one]).to eq("clival")
649
860
  end
650
861
 
651
862
  it "should return values set in the mode-specific section before values set in the main section" do
652
- text = "[main]\none = mainval\n[agent]\none = modeval\n"
653
- @settings.stubs(:read_file).returns(text)
654
- @settings.send(:parse_config_files)
863
+ File.write(config_file, "[main]\none = mainval\n[agent]\none = modeval\n")
864
+ @settings.initialize_global_settings
655
865
 
656
866
  expect(@settings[:one]).to eq("modeval")
657
867
  end
658
868
 
869
+ [:master, :server].each do |run_mode|
870
+ describe "when run mode is '#{run_mode}'" do
871
+ before(:each) { @settings.preferred_run_mode = run_mode }
872
+
873
+ it "returns values set in the 'master' section if the 'server' section does not exist" do
874
+ File.write(config_file, "[main]\none = mainval\n[master]\none = modeval\n")
875
+ @settings.initialize_global_settings
876
+
877
+ expect(@settings[:one]).to eq("modeval")
878
+ end
879
+
880
+ it "prioritizes values set in the 'server' section if set" do
881
+ File.write(config_file, "[main]\none = mainval\n[server]\none = serverval\n[master]\none = masterval\n")
882
+ @settings.initialize_global_settings
883
+
884
+ expect(@settings[:one]).to eq("serverval")
885
+ end
886
+ end
887
+ end
888
+
659
889
  it "should not return values outside of its search path" do
660
- text = "[other]\none = oval\n"
661
- file = "/some/file"
662
- @settings.stubs(:read_file).returns(text)
663
- @settings.send(:parse_config_files)
890
+ File.write(config_file, "[other]\none = oval\n")
891
+ @settings.initialize_global_settings
892
+
664
893
  expect(@settings[:one]).to eq("ONE")
665
894
  end
666
895
 
@@ -678,22 +907,57 @@ describe Puppet::Settings do
678
907
 
679
908
  describe "when root" do
680
909
  it "should look for the main config file default location config settings haven't been overridden'" do
681
- Puppet.features.stubs(:root?).returns(true)
682
- Puppet::FileSystem.expects(:exist?).with(main_config_file_default_location).returns(false)
683
- Puppet::FileSystem.expects(:exist?).with(user_config_file_default_location).never
910
+ allow(Puppet.features).to receive(:root?).and_return(true)
911
+ expect(Puppet::FileSystem).to receive(:exist?).with(main_config_file_default_location).and_return(false)
912
+ expect(Puppet::FileSystem).not_to receive(:exist?).with(user_config_file_default_location)
684
913
 
685
- @settings.send(:parse_config_files)
914
+ @settings.initialize_global_settings
686
915
  end
687
916
  end
688
917
 
689
918
  describe "when not root" do
690
919
  it "should look for user config file default location if config settings haven't been overridden'" do
691
- Puppet.features.stubs(:root?).returns(false)
920
+ allow(Puppet.features).to receive(:root?).and_return(false)
692
921
 
693
- seq = sequence "load config files"
694
- Puppet::FileSystem.expects(:exist?).with(user_config_file_default_location).returns(false).in_sequence(seq)
922
+ expect(Puppet::FileSystem).to receive(:exist?).with(user_config_file_default_location).and_return(false)
695
923
 
696
- @settings.send(:parse_config_files)
924
+ @settings.initialize_global_settings
925
+ end
926
+ end
927
+
928
+ describe "when the file exists" do
929
+ it "fails if the file is not readable" do
930
+ expect(Puppet::FileSystem).to receive(:exist?).with(user_config_file_default_location).and_return(true)
931
+ expect(@settings).to receive(:read_file).and_raise('Permission denied')
932
+
933
+ expect{ @settings.initialize_global_settings }.to raise_error(RuntimeError, /Could not load #{user_config_file_default_location}: Permission denied/)
934
+ end
935
+
936
+ it "does not fail if the file is not readable and when `require_config` is false" do
937
+ expect(Puppet::FileSystem).to receive(:exist?).with(user_config_file_default_location).and_return(true)
938
+ expect(@settings).to receive(:read_file).and_raise('Permission denied')
939
+
940
+ expect(@settings).not_to receive(:parse_config)
941
+ expect(Puppet).to receive(:log_exception)
942
+
943
+ expect{ @settings.initialize_global_settings([], false) }.not_to raise_error
944
+ end
945
+
946
+ it "reads the file if it is readable" do
947
+ expect(Puppet::FileSystem).to receive(:exist?).with(user_config_file_default_location).and_return(true)
948
+ expect(@settings).to receive(:read_file).and_return('server = host.string')
949
+ expect(@settings).to receive(:parse_config)
950
+
951
+ @settings.initialize_global_settings
952
+ end
953
+ end
954
+
955
+ describe "when the file does not exist" do
956
+ it "does not attempt to parse the config file" do
957
+ expect(Puppet::FileSystem).to receive(:exist?).with(user_config_file_default_location).and_return(false)
958
+ expect(@settings).not_to receive(:parse_config)
959
+
960
+ @settings.initialize_global_settings
697
961
  end
698
962
  end
699
963
  end
@@ -701,88 +965,94 @@ describe Puppet::Settings do
701
965
  describe "when parsing its configuration" do
702
966
  before do
703
967
  @settings = Puppet::Settings.new
704
- @settings.stubs(:service_user_available?).returns true
705
- @settings.stubs(:service_group_available?).returns true
706
- @file = make_absolute("/some/file")
707
- @userconfig = make_absolute("/test/userconfigfile")
968
+ allow(@settings).to receive(:service_user_available?).and_return(true)
969
+ allow(@settings).to receive(:service_group_available?).and_return(true)
970
+ @file = tmpfile("somefile")
708
971
  @settings.define_settings :section, :user => { :default => "suser", :desc => "doc" }, :group => { :default => "sgroup", :desc => "doc" }
709
972
  @settings.define_settings :section,
710
973
  :config => { :type => :file, :default => @file, :desc => "eh" },
711
974
  :one => { :default => "ONE", :desc => "a" },
712
975
  :two => { :default => "$one TWO", :desc => "b" },
713
976
  :three => { :default => "$one $two THREE", :desc => "c" }
714
- @settings.stubs(:user_config_file).returns(@userconfig)
715
- Puppet::FileSystem.stubs(:exist?).with(@file).returns true
716
- Puppet::FileSystem.stubs(:exist?).with(@userconfig).returns false
977
+
978
+ userconfig = tmpfile("userconfig")
979
+ allow(@settings).to receive(:user_config_file).and_return(userconfig)
717
980
  end
718
981
 
719
982
  it "should not ignore the report setting" do
720
983
  @settings.define_settings :section, :report => { :default => "false", :desc => "a" }
721
- # This is needed in order to make sure we pass on windows
722
- myfile = File.expand_path(@file)
723
- @settings[:config] = myfile
724
- text = <<-CONF
984
+ File.write(@file, <<~CONF)
725
985
  [puppetd]
726
- report=true
986
+ report=true
727
987
  CONF
728
- Puppet::FileSystem.expects(:exist?).with(myfile).returns(true)
729
- @settings.expects(:read_file).returns(text)
730
- @settings.send(:parse_config_files)
988
+
989
+ @settings.initialize_global_settings
990
+
731
991
  expect(@settings[:report]).to be_truthy
732
992
  end
733
993
 
734
994
  it "should use its current ':config' value for the file to parse" do
735
- myfile = make_absolute("/my/file") # do not stub expand_path here, as this leads to a stack overflow, when mocha tries to use it
736
- @settings[:config] = myfile
737
-
738
- Puppet::FileSystem.expects(:exist?).with(myfile).returns(true)
995
+ myfile = tmpfile('myfile')
996
+ File.write(myfile, <<~CONF)
997
+ [main]
998
+ one=myfile
999
+ CONF
739
1000
 
740
- Puppet::FileSystem.expects(:read).with(myfile, :encoding => 'utf-8').returns "[main]"
1001
+ @settings[:config] = myfile
1002
+ @settings.initialize_global_settings
741
1003
 
742
- @settings.send(:parse_config_files)
1004
+ expect(@settings[:one]).to eq('myfile')
743
1005
  end
744
1006
 
745
1007
  it "should not try to parse non-existent files" do
746
- Puppet::FileSystem.expects(:exist?).with(@file).returns false
1008
+ expect(Puppet::FileSystem).to receive(:exist?).with(@file).and_return(false)
747
1009
 
748
- File.expects(:read).with(@file).never
1010
+ expect(File).not_to receive(:read).with(@file)
749
1011
 
750
- @settings.send(:parse_config_files)
1012
+ @settings.initialize_global_settings
751
1013
  end
752
1014
 
753
1015
  it "should return values set in the configuration file" do
754
- text = "[main]
755
- one = fileval
756
- "
757
- @settings.expects(:read_file).returns(text)
758
- @settings.send(:parse_config_files)
1016
+ File.write(@file, <<~CONF)
1017
+ [main]
1018
+ one = fileval
1019
+ CONF
1020
+
1021
+ @settings.initialize_global_settings
759
1022
  expect(@settings[:one]).to eq("fileval")
760
1023
  end
761
1024
 
762
1025
  #484 - this should probably be in the regression area
763
1026
  it "should not throw an exception on unknown parameters" do
764
- text = "[main]\nnosuchparam = mval\n"
765
- @settings.expects(:read_file).returns(text)
766
- expect { @settings.send(:parse_config_files) }.not_to raise_error
1027
+ File.write(@file, <<~CONF)
1028
+ [main]
1029
+ nosuchparam = mval
1030
+ CONF
1031
+
1032
+ expect { @settings.initialize_global_settings }.not_to raise_error
767
1033
  end
768
1034
 
769
1035
  it "should convert booleans in the configuration file into Ruby booleans" do
770
- text = "[main]
771
- one = true
772
- two = false
773
- "
774
- @settings.expects(:read_file).returns(text)
775
- @settings.send(:parse_config_files)
1036
+ File.write(@file, <<~CONF)
1037
+ [main]
1038
+ one = true
1039
+ two = false
1040
+ CONF
1041
+
1042
+ @settings.initialize_global_settings
1043
+
776
1044
  expect(@settings[:one]).to eq(true)
777
1045
  expect(@settings[:two]).to eq(false)
778
1046
  end
779
1047
 
780
1048
  it "should convert integers in the configuration file into Ruby Integers" do
781
- text = "[main]
782
- one = 65
783
- "
784
- @settings.expects(:read_file).returns(text)
785
- @settings.send(:parse_config_files)
1049
+ File.write(@file, <<~CONF)
1050
+ [main]
1051
+ one = 65
1052
+ CONF
1053
+
1054
+ @settings.initialize_global_settings
1055
+
786
1056
  expect(@settings[:one]).to eq(65)
787
1057
  end
788
1058
 
@@ -813,57 +1083,193 @@ describe Puppet::Settings do
813
1083
  end
814
1084
 
815
1085
  it "should support loading metadata (owner, group, or mode) from a run_mode section in the configuration file" do
816
- default_values = {}
817
- PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS.keys.each do |key|
818
- default_values[key] = 'default value'
819
- end
820
1086
  @settings.define_settings :main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS
821
- @settings.define_settings :master, :myfile => { :type => :file, :default => make_absolute("/myfile"), :desc => "a" }
1087
+ @settings.define_settings :server, :myfile => { :type => :file, :default => make_absolute("/myfile"), :desc => "a" }
822
1088
 
823
1089
  otherfile = make_absolute("/other/file")
824
- text = "[master]
825
- myfile = #{otherfile} {mode = 664}
826
- "
827
- @settings.expects(:read_file).returns(text)
1090
+ File.write(@file, <<~CONF)
1091
+ [server]
1092
+ myfile = #{otherfile} {mode = 664}
1093
+ CONF
828
1094
 
829
1095
  # will start initialization as user
830
1096
  expect(@settings.preferred_run_mode).to eq(:user)
831
- @settings.send(:parse_config_files)
1097
+ @settings.initialize_global_settings
832
1098
 
833
- # change app run_mode to master
834
- @settings.initialize_app_defaults(default_values.merge(:run_mode => :master))
835
- expect(@settings.preferred_run_mode).to eq(:master)
1099
+ # change app run_mode to server
1100
+ @settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:run_mode => :server))
1101
+ expect(@settings.preferred_run_mode).to eq(:server)
836
1102
 
837
1103
  # initializing the app should have reloaded the metadata based on run_mode
838
1104
  expect(@settings[:myfile]).to eq(otherfile)
839
1105
  expect(metadata(@settings.setting(:myfile))).to eq({:mode => "664"})
840
1106
  end
841
1107
 
842
- it "does not use the metadata from the same setting in a different section" do
843
- default_values = {}
844
- PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS.keys.each do |key|
845
- default_values[key] = 'default value'
1108
+ context "when setting serverport and masterport" do
1109
+ before(:each) do
1110
+ @settings.define_settings :main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS
1111
+ @settings.define_settings :server, :masterport => { :desc => "a", :default => 1000 }
1112
+ @settings.define_settings :server, :serverport => { :type => :alias, :alias_for => :masterport }
1113
+ @settings.define_settings :server, :ca_port => { :desc => "a", :default => "$serverport" }
1114
+ @settings.define_settings :server, :report_port => { :desc => "a", :default => "$serverport" }
1115
+
1116
+ config_file = tmpfile('config')
1117
+ @settings[:config] = config_file
1118
+ File.write(config_file, text)
1119
+
1120
+ @settings.initialize_global_settings
1121
+ @settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:run_mode => :agent))
1122
+ expect(@settings.preferred_run_mode).to eq(:agent)
1123
+ end
1124
+
1125
+ context 'with serverport in main and masterport in agent' do
1126
+ let(:text) do
1127
+ "[main]
1128
+ serverport = 444
1129
+ [agent]
1130
+ masterport = 445
1131
+ "
1132
+ end
1133
+
1134
+ it { expect(@settings[:serverport]).to eq(444) }
1135
+ it { expect(@settings[:ca_port]).to eq("444") }
1136
+ it { expect(@settings[:report_port]).to eq("444") }
1137
+ it { expect(@settings[:masterport]).to eq(445) }
846
1138
  end
847
1139
 
1140
+ context 'with serverport and masterport in main' do
1141
+ let(:text) do
1142
+ "[main]
1143
+ serverport = 445
1144
+ masterport = 444
1145
+ "
1146
+ end
1147
+
1148
+ it { expect(@settings[:serverport]).to eq(445) }
1149
+ it { expect(@settings[:ca_port]).to eq("445") }
1150
+ it { expect(@settings[:report_port]).to eq("445") }
1151
+ it { expect(@settings[:masterport]).to eq(444) }
1152
+ end
1153
+
1154
+ context 'with serverport and masterport in agent' do
1155
+ let(:text) do
1156
+ "[agent]
1157
+ serverport = 445
1158
+ masterport = 444
1159
+ "
1160
+ end
1161
+
1162
+ it { expect(@settings[:serverport]).to eq(445) }
1163
+ it { expect(@settings[:ca_port]).to eq("445") }
1164
+ it { expect(@settings[:report_port]).to eq("445") }
1165
+ it { expect(@settings[:masterport]).to eq(444) }
1166
+ end
1167
+
1168
+ context 'with both serverport and masterport in main and agent' do
1169
+ let(:text) do
1170
+ "[main]
1171
+ serverport = 447
1172
+ masterport = 442
1173
+ [agent]
1174
+ serverport = 445
1175
+ masterport = 444
1176
+ "
1177
+ end
1178
+
1179
+ it { expect(@settings[:serverport]).to eq(445) }
1180
+ it { expect(@settings[:ca_port]).to eq("445") }
1181
+ it { expect(@settings[:report_port]).to eq("445") }
1182
+ it { expect(@settings[:masterport]).to eq(444) }
1183
+ end
1184
+
1185
+ context 'with serverport in agent and masterport in main' do
1186
+ let(:text) do
1187
+ "[agent]
1188
+ serverport = 444
1189
+ [main]
1190
+ masterport = 445
1191
+ "
1192
+ end
1193
+
1194
+ it { expect(@settings[:serverport]).to eq(444) }
1195
+ it { expect(@settings[:ca_port]).to eq("444") }
1196
+ it { expect(@settings[:report_port]).to eq("444") }
1197
+ it { expect(@settings[:masterport]).to eq(445) }
1198
+ end
1199
+
1200
+ context 'with masterport in main' do
1201
+ let(:text) do
1202
+ "[main]
1203
+ masterport = 445
1204
+ "
1205
+ end
1206
+
1207
+ it { expect(@settings[:serverport]).to eq(445) }
1208
+ it { expect(@settings[:ca_port]).to eq("445") }
1209
+ it { expect(@settings[:report_port]).to eq("445") }
1210
+ it { expect(@settings[:masterport]).to eq(445) }
1211
+ end
1212
+
1213
+ context 'with masterport in agent' do
1214
+ let(:text) do
1215
+ "[agent]
1216
+ masterport = 445
1217
+ "
1218
+ end
1219
+
1220
+ it { expect(@settings[:serverport]).to eq(445) }
1221
+ it { expect(@settings[:ca_port]).to eq("445") }
1222
+ it { expect(@settings[:report_port]).to eq("445") }
1223
+ it { expect(@settings[:masterport]).to eq(445) }
1224
+ end
1225
+
1226
+ context 'with serverport in agent' do
1227
+ let(:text) do
1228
+ "[agent]
1229
+ serverport = 445
1230
+ "
1231
+ end
1232
+
1233
+ it { expect(@settings[:serverport]).to eq(445) }
1234
+ it { expect(@settings[:masterport]).to eq(1000) }
1235
+ it { expect(@settings[:ca_port]).to eq("445") }
1236
+ it { expect(@settings[:report_port]).to eq("445") }
1237
+ end
1238
+
1239
+ context 'with serverport in main' do
1240
+ let(:text) do
1241
+ "[main]
1242
+ serverport = 445
1243
+ "
1244
+ end
1245
+
1246
+ it { expect(@settings[:serverport]).to eq(445) }
1247
+ it { expect(@settings[:masterport]).to eq(1000) }
1248
+ it { expect(@settings[:ca_port]).to eq("445") }
1249
+ it { expect(@settings[:report_port]).to eq("445") }
1250
+ end
1251
+ end
1252
+
1253
+ it "does not use the metadata from the same setting in a different section" do
848
1254
  file = make_absolute("/file")
849
1255
  default_mode = "0600"
850
1256
  @settings.define_settings :main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS
851
- @settings.define_settings :master, :myfile => { :type => :file, :default => file, :desc => "a", :mode => default_mode }
1257
+ @settings.define_settings :server, :myfile => { :type => :file, :default => file, :desc => "a", :mode => default_mode }
852
1258
 
853
- text = "[master]
854
- myfile = #{file}/foo
855
- [agent]
856
- myfile = #{file} {mode = 664}
857
- "
858
- @settings.expects(:read_file).returns(text)
1259
+ File.write(@file, <<~CONF)
1260
+ [server]
1261
+ myfile = #{file}/foo
1262
+ [agent]
1263
+ myfile = #{file} {mode = 664}
1264
+ CONF
859
1265
 
860
1266
  # will start initialization as user
861
1267
  expect(@settings.preferred_run_mode).to eq(:user)
862
- @settings.send(:parse_config_files)
1268
+ @settings.initialize_global_settings
863
1269
 
864
- # change app run_mode to master
865
- @settings.initialize_app_defaults(default_values.merge(:run_mode => :master))
866
- expect(@settings.preferred_run_mode).to eq(:master)
1270
+ # change app run_mode to server
1271
+ @settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:run_mode => :server))
1272
+ expect(@settings.preferred_run_mode).to eq(:server)
867
1273
 
868
1274
  # initializing the app should have reloaded the metadata based on run_mode
869
1275
  expect(@settings[:myfile]).to eq("#{file}/foo")
@@ -874,11 +1280,12 @@ describe Puppet::Settings do
874
1280
  values = []
875
1281
  @settings.define_settings :section, :mysetting => {:default => "defval", :desc => "a", :hook => proc { |v| values << v }}
876
1282
 
877
- text = "[main]
878
- mysetting = setval
879
- "
880
- @settings.expects(:read_file).returns(text)
881
- @settings.send(:parse_config_files)
1283
+ File.write(@file, <<~CONF)
1284
+ [main]
1285
+ mysetting = setval
1286
+ CONF
1287
+ @settings.initialize_global_settings
1288
+
882
1289
  expect(values).to eq(["setval"])
883
1290
  end
884
1291
 
@@ -886,13 +1293,14 @@ describe Puppet::Settings do
886
1293
  values = []
887
1294
  @settings.define_settings :section, :mysetting => {:default => "defval", :desc => "a", :hook => proc { |v| values << v }}
888
1295
 
889
- text = "[user]
890
- mysetting = setval
891
- [main]
892
- mysetting = other
893
- "
894
- @settings.expects(:read_file).returns(text)
895
- @settings.send(:parse_config_files)
1296
+ File.write(@file, <<~CONF)
1297
+ [user]
1298
+ mysetting = setval
1299
+ [main]
1300
+ mysetting = other
1301
+ CONF
1302
+ @settings.initialize_global_settings
1303
+
896
1304
  expect(values).to eq(["setval"])
897
1305
  end
898
1306
 
@@ -901,11 +1309,12 @@ describe Puppet::Settings do
901
1309
  @settings.define_settings :section, :base => {:default => "yay", :desc => "a", :hook => proc { |v| values << v }}
902
1310
  @settings.define_settings :section, :mysetting => {:default => "defval", :desc => "a", :hook => proc { |v| values << v }}
903
1311
 
904
- text = "[main]
905
- mysetting = $base/setval
906
- "
907
- @settings.expects(:read_file).returns(text)
908
- @settings.send(:parse_config_files)
1312
+ File.write(@file, <<~CONF)
1313
+ [main]
1314
+ mysetting = $base/setval
1315
+ CONF
1316
+ @settings.initialize_global_settings
1317
+
909
1318
  expect(values).to eq(["yay/setval"])
910
1319
  end
911
1320
 
@@ -915,86 +1324,70 @@ describe Puppet::Settings do
915
1324
  :hook => proc { |v| hook_invoked = true },
916
1325
  :call_hook => :on_initialize_and_write, }
917
1326
 
1327
+ # This test relies on `confdir` defaulting to nil which causes the default
1328
+ # value of `deferred=$confdir/goose` to raise an interpolation error during
1329
+ # global initialization, and the hook to be skipped
918
1330
  @settings.define_settings(:main,
919
- :logdir => { :type => :directory, :default => nil, :desc => "logdir" },
920
- :confdir => { :type => :directory, :default => nil, :desc => "confdir" },
921
- :codedir => { :type => :directory, :default => nil, :desc => "codedir" },
922
- :vardir => { :type => :directory, :default => nil, :desc => "vardir" })
1331
+ PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS.merge(
1332
+ :confdir => { :type => :directory, :default => nil, :desc => "confdir" }))
923
1333
 
924
- text = <<-EOD
925
- [main]
926
- deferred=$confdir/goose
1334
+ File.write(@file, <<~EOD)
1335
+ [main]
1336
+ deferred=$confdir/goose
927
1337
  EOD
928
1338
 
929
- @settings.stubs(:read_file).returns(text)
930
1339
  @settings.initialize_global_settings
931
1340
 
932
1341
  expect(hook_invoked).to be_falsey
933
1342
 
934
- @settings.initialize_app_defaults(:logdir => '/path/to/logdir', :confdir => '/path/to/confdir', :vardir => '/path/to/vardir', :codedir => '/path/to/codedir')
1343
+ # And now that we initialize app defaults with `confdir`, then `deferred`
1344
+ # can be interpolated and its hook called
1345
+ @settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:confdir => '/path/to/confdir'))
935
1346
 
936
1347
  expect(hook_invoked).to be_truthy
937
1348
  expect(@settings[:deferred]).to eq(File.expand_path('/path/to/confdir/goose'))
938
1349
  end
939
1350
 
940
1351
  it "does not require the value for a setting without a hook to resolve during global setup" do
941
- hook_invoked = false
942
1352
  @settings.define_settings :section, :can_cause_problems => {:desc => '' }
943
1353
 
944
- @settings.define_settings(:main,
945
- :logdir => { :type => :directory, :default => nil, :desc => "logdir" },
946
- :confdir => { :type => :directory, :default => nil, :desc => "confdir" },
947
- :codedir => { :type => :directory, :default => nil, :desc => "codedir" },
948
- :vardir => { :type => :directory, :default => nil, :desc => "vardir" })
1354
+ @settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
949
1355
 
950
- text = <<-EOD
1356
+ File.write(@file, <<~EOD)
951
1357
  [main]
952
1358
  can_cause_problems=$confdir/goose
953
1359
  EOD
954
1360
 
955
- @settings.stubs(:read_file).returns(text)
956
1361
  @settings.initialize_global_settings
957
- @settings.initialize_app_defaults(:logdir => '/path/to/logdir', :confdir => '/path/to/confdir', :vardir => '/path/to/vardir', :codedir => '/path/to/codedir')
1362
+ @settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:confdir => '/path/to/confdir'))
958
1363
 
959
- expect(@settings[:can_cause_problems]).to eq(File.expand_path('/path/to/confdir/goose'))
1364
+ expect(@settings[:can_cause_problems]).to eq('/path/to/confdir/goose')
960
1365
  end
961
1366
 
962
1367
  it "should allow empty values" do
963
1368
  @settings.define_settings :section, :myarg => { :default => "myfile", :desc => "a" }
964
1369
 
965
- text = "[main]
966
- myarg =
967
- "
968
- @settings.stubs(:read_file).returns(text)
969
- @settings.send(:parse_config_files)
1370
+ File.write(@file, <<~CONF)
1371
+ [main]
1372
+ myarg =
1373
+ CONF
1374
+ @settings.initialize_global_settings
1375
+
970
1376
  expect(@settings[:myarg]).to eq("")
971
1377
  end
972
1378
 
973
1379
  describe "deprecations" do
974
1380
  let(:settings) { Puppet::Settings.new }
975
- let(:app_defaults) {
976
- {
977
- :logdir => "/dev/null",
978
- :confdir => "/dev/null",
979
- :codedir => "/dev/null",
980
- :vardir => "/dev/null",
981
- }
982
- }
983
1381
 
984
1382
  def assert_accessing_setting_is_deprecated(settings, setting)
985
- Puppet.expects(:deprecation_warning).with("Accessing '#{setting}' as a setting is deprecated.")
986
- Puppet.expects(:deprecation_warning).with("Modifying '#{setting}' as a setting is deprecated.")
1383
+ expect(Puppet).to receive(:deprecation_warning).with("Accessing '#{setting}' as a setting is deprecated.")
1384
+ expect(Puppet).to receive(:deprecation_warning).with("Modifying '#{setting}' as a setting is deprecated.")
987
1385
  settings[setting.intern] = apath = File.expand_path('foo')
988
1386
  expect(settings[setting.intern]).to eq(apath)
989
1387
  end
990
1388
 
991
1389
  before(:each) do
992
- settings.define_settings(:main, {
993
- :logdir => { :default => 'a', :desc => 'a' },
994
- :confdir => { :default => 'b', :desc => 'b' },
995
- :vardir => { :default => 'c', :desc => 'c' },
996
- :codedir => { :default => 'd', :desc => 'd' },
997
- })
1390
+ settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
998
1391
  end
999
1392
 
1000
1393
  context "complete" do
@@ -1010,20 +1403,20 @@ describe Puppet::Settings do
1010
1403
  end
1011
1404
 
1012
1405
  it "warns when set in puppet.conf" do
1013
- Puppet.expects(:deprecation_warning).with(regexp_matches(/completely_deprecated_setting is deprecated\./), 'setting-completely_deprecated_setting')
1406
+ expect(Puppet).to receive(:deprecation_warning).with(/completely_deprecated_setting is deprecated\./, 'setting-completely_deprecated_setting')
1014
1407
 
1015
1408
  completely_deprecated_settings.parse_config(<<-CONF)
1016
1409
  completely_deprecated_setting='should warn'
1017
1410
  CONF
1018
- completely_deprecated_settings.initialize_app_defaults(app_defaults)
1411
+ completely_deprecated_settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES)
1019
1412
  end
1020
1413
 
1021
1414
  it "warns when set on the commandline" do
1022
- Puppet.expects(:deprecation_warning).with(regexp_matches(/completely_deprecated_setting is deprecated\./), 'setting-completely_deprecated_setting')
1415
+ expect(Puppet).to receive(:deprecation_warning).with(/completely_deprecated_setting is deprecated\./, 'setting-completely_deprecated_setting')
1023
1416
 
1024
1417
  args = ["--completely_deprecated_setting", "/some/value"]
1025
1418
  completely_deprecated_settings.send(:parse_global_options, args)
1026
- completely_deprecated_settings.initialize_app_defaults(app_defaults)
1419
+ completely_deprecated_settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES)
1027
1420
  end
1028
1421
 
1029
1422
  it "warns when set in code" do
@@ -1044,19 +1437,19 @@ describe Puppet::Settings do
1044
1437
  end
1045
1438
 
1046
1439
  it "warns for a deprecated setting allowed on the command line set in puppet.conf" do
1047
- Puppet.expects(:deprecation_warning).with(regexp_matches(/partially_deprecated_setting is deprecated in puppet\.conf/), 'puppet-conf-setting-partially_deprecated_setting')
1440
+ expect(Puppet).to receive(:deprecation_warning).with(/partially_deprecated_setting is deprecated in puppet\.conf/, 'puppet-conf-setting-partially_deprecated_setting')
1048
1441
  partially_deprecated_settings.parse_config(<<-CONF)
1049
1442
  partially_deprecated_setting='should warn'
1050
1443
  CONF
1051
- partially_deprecated_settings.initialize_app_defaults(app_defaults)
1444
+ partially_deprecated_settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES)
1052
1445
  end
1053
1446
 
1054
1447
  it "does not warn when manifest is set on command line" do
1055
- Puppet.expects(:deprecation_warning).never
1448
+ expect(Puppet).not_to receive(:deprecation_warning)
1056
1449
 
1057
1450
  args = ["--partially_deprecated_setting", "/some/value"]
1058
1451
  partially_deprecated_settings.send(:parse_global_options, args)
1059
- partially_deprecated_settings.initialize_app_defaults(app_defaults)
1452
+ partially_deprecated_settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES)
1060
1453
  end
1061
1454
 
1062
1455
  it "warns when set in code" do
@@ -1069,7 +1462,6 @@ describe Puppet::Settings do
1069
1462
  describe "when there are multiple config files" do
1070
1463
  let(:main_config_text) { "[main]\none = main\ntwo = main2" }
1071
1464
  let(:user_config_text) { "[main]\none = user\n" }
1072
- let(:seq) { sequence "config_file_sequence" }
1073
1465
 
1074
1466
  before :each do
1075
1467
  @settings = Puppet::Settings.new
@@ -1082,13 +1474,13 @@ describe Puppet::Settings do
1082
1474
 
1083
1475
  context "running non-root without explicit config file" do
1084
1476
  before :each do
1085
- Puppet.features.stubs(:root?).returns(false)
1086
- Puppet::FileSystem.expects(:exist?).
1477
+ allow(Puppet.features).to receive(:root?).and_return(false)
1478
+ expect(Puppet::FileSystem).to receive(:exist?).
1087
1479
  with(user_config_file_default_location).
1088
- returns(true).in_sequence(seq)
1089
- @settings.expects(:read_file).
1480
+ and_return(true).ordered
1481
+ expect(@settings).to receive(:read_file).
1090
1482
  with(user_config_file_default_location).
1091
- returns(user_config_text).in_sequence(seq)
1483
+ and_return(user_config_text).ordered
1092
1484
  end
1093
1485
 
1094
1486
  it "should return values from the user config file" do
@@ -1104,13 +1496,13 @@ describe Puppet::Settings do
1104
1496
 
1105
1497
  context "running as root without explicit config file" do
1106
1498
  before :each do
1107
- Puppet.features.stubs(:root?).returns(true)
1108
- Puppet::FileSystem.expects(:exist?).
1499
+ allow(Puppet.features).to receive(:root?).and_return(true)
1500
+ expect(Puppet::FileSystem).to receive(:exist?).
1109
1501
  with(main_config_file_default_location).
1110
- returns(true).in_sequence(seq)
1111
- @settings.expects(:read_file).
1502
+ and_return(true).ordered
1503
+ expect(@settings).to receive(:read_file).
1112
1504
  with(main_config_file_default_location).
1113
- returns(main_config_text).in_sequence(seq)
1505
+ and_return(main_config_text).ordered
1114
1506
  end
1115
1507
 
1116
1508
  it "should return values from the main config file" do
@@ -1126,14 +1518,14 @@ describe Puppet::Settings do
1126
1518
 
1127
1519
  context "running with an explicit config file as a user (e.g. Apache + Passenger)" do
1128
1520
  before :each do
1129
- Puppet.features.stubs(:root?).returns(false)
1521
+ allow(Puppet.features).to receive(:root?).and_return(false)
1130
1522
  @settings[:confdir] = File.dirname(main_config_file_default_location)
1131
- Puppet::FileSystem.expects(:exist?).
1523
+ expect(Puppet::FileSystem).to receive(:exist?).
1132
1524
  with(main_config_file_default_location).
1133
- returns(true).in_sequence(seq)
1134
- @settings.expects(:read_file).
1525
+ and_return(true).ordered
1526
+ expect(@settings).to receive(:read_file).
1135
1527
  with(main_config_file_default_location).
1136
- returns(main_config_text).in_sequence(seq)
1528
+ and_return(main_config_text).ordered
1137
1529
  end
1138
1530
 
1139
1531
  it "should return values from the main config file" do
@@ -1150,24 +1542,25 @@ describe Puppet::Settings do
1150
1542
 
1151
1543
  describe "when reparsing its configuration" do
1152
1544
  before do
1153
- @file = make_absolute("/test/file")
1154
- @userconfig = make_absolute("/test/userconfigfile")
1545
+ @file = tmpfile("testfile")
1546
+ Puppet::FileSystem.touch(@file)
1547
+
1155
1548
  @settings = Puppet::Settings.new
1156
1549
  @settings.define_settings :section,
1157
1550
  :config => { :type => :file, :default => @file, :desc => "a" },
1158
1551
  :one => { :default => "ONE", :desc => "a" },
1159
1552
  :two => { :default => "$one TWO", :desc => "b" },
1160
1553
  :three => { :default => "$one $two THREE", :desc => "c" }
1161
- Puppet::FileSystem.stubs(:exist?).with(@file).returns true
1162
- Puppet::FileSystem.stubs(:exist?).with(@userconfig).returns false
1163
- @settings.stubs(:user_config_file).returns(@userconfig)
1554
+
1555
+ userconfig = tmpfile("userconfig")
1556
+ allow(@settings).to receive(:user_config_file).and_return(userconfig)
1164
1557
  end
1165
1558
 
1166
1559
  it "does not create the WatchedFile instance and should not parse if the file does not exist" do
1167
- Puppet::FileSystem.expects(:exist?).with(@file).returns false
1168
- Puppet::Util::WatchedFile.expects(:new).never
1560
+ Puppet::FileSystem.unlink(@file)
1169
1561
 
1170
- @settings.expects(:parse_config_files).never
1562
+ expect(Puppet::Util::WatchedFile).not_to receive(:new)
1563
+ expect(@settings).not_to receive(:parse_config_files)
1171
1564
 
1172
1565
  @settings.reparse_config_files
1173
1566
  end
@@ -1175,38 +1568,38 @@ describe Puppet::Settings do
1175
1568
  context "and watched file exists" do
1176
1569
  before do
1177
1570
  @watched_file = Puppet::Util::WatchedFile.new(@file)
1178
- Puppet::Util::WatchedFile.expects(:new).with(@file).returns @watched_file
1571
+ expect(Puppet::Util::WatchedFile).to receive(:new).with(@file).and_return(@watched_file)
1179
1572
  end
1180
1573
 
1181
1574
  it "uses a WatchedFile instance to determine if the file has changed" do
1182
- @watched_file.expects(:changed?)
1575
+ expect(@watched_file).to receive(:changed?)
1183
1576
 
1184
1577
  @settings.reparse_config_files
1185
1578
  end
1186
1579
 
1187
1580
  it "does not reparse if the file has not changed" do
1188
- @watched_file.expects(:changed?).returns false
1581
+ expect(@watched_file).to receive(:changed?).and_return(false)
1189
1582
 
1190
- @settings.expects(:parse_config_files).never
1583
+ expect(@settings).not_to receive(:parse_config_files)
1191
1584
 
1192
1585
  @settings.reparse_config_files
1193
1586
  end
1194
1587
 
1195
1588
  it "reparses if the file has changed" do
1196
- @watched_file.expects(:changed?).returns true
1589
+ expect(@watched_file).to receive(:changed?).and_return(true)
1197
1590
 
1198
- @settings.expects(:parse_config_files)
1591
+ expect(@settings).to receive(:parse_config_files)
1199
1592
 
1200
1593
  @settings.reparse_config_files
1201
1594
  end
1202
1595
 
1203
1596
  it "replaces in-memory values with on-file values" do
1204
- @watched_file.stubs(:changed?).returns(true)
1597
+ allow(@watched_file).to receive(:changed?).and_return(true)
1205
1598
  @settings[:one] = "init"
1206
1599
 
1207
1600
  # Now replace the value
1208
- text = "[main]\none = disk-replace\n"
1209
- @settings.stubs(:read_file).returns(text)
1601
+ File.write(@file, "[main]\none = disk-replace\n")
1602
+
1210
1603
  @settings.reparse_config_files
1211
1604
  expect(@settings[:one]).to eq("disk-replace")
1212
1605
  end
@@ -1215,23 +1608,20 @@ describe Puppet::Settings do
1215
1608
  it "should retain parameters set by cli when configuration files are reparsed" do
1216
1609
  @settings.handlearg("--one", "clival")
1217
1610
 
1218
- text = "[main]\none = on-disk\n"
1219
- @settings.stubs(:read_file).returns(text)
1220
- @settings.send(:parse_config_files)
1611
+ File.write(@file, "[main]\none = on-disk\n")
1612
+ @settings.initialize_global_settings
1221
1613
 
1222
1614
  expect(@settings[:one]).to eq("clival")
1223
1615
  end
1224
1616
 
1225
1617
  it "should remove in-memory values that are no longer set in the file" do
1226
1618
  # Init the value
1227
- text = "[main]\none = disk-init\n"
1228
- @settings.expects(:read_file).returns(text)
1619
+ File.write(@file, "[main]\none = disk-init\n")
1229
1620
  @settings.send(:parse_config_files)
1230
1621
  expect(@settings[:one]).to eq("disk-init")
1231
1622
 
1232
1623
  # Now replace the value
1233
- text = "[main]\ntwo = disk-replace\n"
1234
- @settings.expects(:read_file).returns(text)
1624
+ File.write(@file, "[main]\ntwo = disk-replace\n")
1235
1625
  @settings.send(:parse_config_files)
1236
1626
 
1237
1627
  # The originally-overridden value should be replaced with the default
@@ -1243,14 +1633,12 @@ describe Puppet::Settings do
1243
1633
 
1244
1634
  it "should retain in-memory values if the file has a syntax error" do
1245
1635
  # Init the value
1246
- text = "[main]\none = initial-value\n"
1247
- @settings.expects(:read_file).with(@file).returns(text)
1248
- @settings.send(:parse_config_files)
1636
+ File.write(@file, "[main]\none = initial-value\n")
1637
+ @settings.initialize_global_settings
1249
1638
  expect(@settings[:one]).to eq("initial-value")
1250
1639
 
1251
1640
  # Now replace the value with something bogus
1252
- text = "[main]\nkenny = killed-by-what-follows\n1 is 2, blah blah florp\n"
1253
- @settings.expects(:read_file).with(@file).returns(text)
1641
+ File.write(@file, "[main]\nkenny = killed-by-what-follows\n1 is 2, blah blah florp\n")
1254
1642
  @settings.send(:parse_config_files)
1255
1643
 
1256
1644
  # The originally-overridden value should not be replaced with the default
@@ -1262,55 +1650,58 @@ describe Puppet::Settings do
1262
1650
  end
1263
1651
 
1264
1652
  it "should provide a method for creating a catalog of resources from its configuration" do
1265
- expect(Puppet::Settings.new).to respond_to(:to_catalog)
1653
+ expect(Puppet::Settings.new.to_catalog).to be_an_instance_of(Puppet::Resource::Catalog)
1266
1654
  end
1267
1655
 
1268
1656
  describe "when creating a catalog" do
1657
+ let(:maindir) { make_absolute('/maindir') }
1658
+ let(:seconddir) { make_absolute('/seconddir') }
1659
+ let(:otherdir) { make_absolute('/otherdir') }
1660
+
1269
1661
  before do
1270
1662
  @settings = Puppet::Settings.new
1271
- @settings.stubs(:service_user_available?).returns true
1272
- @prefix = Puppet.features.posix? ? "" : "C:"
1663
+ allow(@settings).to receive(:service_user_available?).and_return(true)
1273
1664
  end
1274
1665
 
1275
1666
  it "should add all file resources to the catalog if no sections have been specified" do
1276
1667
  @settings.define_settings :main,
1277
- :maindir => { :type => :directory, :default => @prefix+"/maindir", :desc => "a"},
1278
- :seconddir => { :type => :directory, :default => @prefix+"/seconddir", :desc => "a"}
1668
+ :maindir => { :type => :directory, :default => maindir, :desc => "a"},
1669
+ :seconddir => { :type => :directory, :default => seconddir, :desc => "a"}
1279
1670
  @settings.define_settings :other,
1280
- :otherdir => { :type => :directory, :default => @prefix+"/otherdir", :desc => "a" }
1671
+ :otherdir => { :type => :directory, :default => otherdir, :desc => "a" }
1281
1672
 
1282
1673
  catalog = @settings.to_catalog
1283
1674
 
1284
- [@prefix+"/maindir", @prefix+"/seconddir", @prefix+"/otherdir"].each do |path|
1675
+ [maindir, seconddir, otherdir].each do |path|
1285
1676
  expect(catalog.resource(:file, path)).to be_instance_of(Puppet::Resource)
1286
1677
  end
1287
1678
  end
1288
1679
 
1289
1680
  it "should add only files in the specified sections if section names are provided" do
1290
- @settings.define_settings :main, :maindir => { :type => :directory, :default => @prefix+"/maindir", :desc => "a" }
1291
- @settings.define_settings :other, :otherdir => { :type => :directory, :default => @prefix+"/otherdir", :desc => "a" }
1681
+ @settings.define_settings :main, :maindir => { :type => :directory, :default => maindir, :desc => "a" }
1682
+ @settings.define_settings :other, :otherdir => { :type => :directory, :default => otherdir, :desc => "a" }
1292
1683
  catalog = @settings.to_catalog(:main)
1293
- expect(catalog.resource(:file, @prefix+"/otherdir")).to be_nil
1294
- expect(catalog.resource(:file, @prefix+"/maindir")).to be_instance_of(Puppet::Resource)
1684
+ expect(catalog.resource(:file, otherdir)).to be_nil
1685
+ expect(catalog.resource(:file, maindir)).to be_instance_of(Puppet::Resource)
1295
1686
  end
1296
1687
 
1297
1688
  it "should not try to add the same file twice" do
1298
- @settings.define_settings :main, :maindir => { :type => :directory, :default => @prefix+"/maindir", :desc => "a" }
1299
- @settings.define_settings :other, :otherdir => { :type => :directory, :default => @prefix+"/maindir", :desc => "a" }
1689
+ @settings.define_settings :main, :maindir => { :type => :directory, :default => maindir, :desc => "a" }
1690
+ @settings.define_settings :other, :otherdir => { :type => :directory, :default => maindir, :desc => "a" }
1300
1691
  expect { @settings.to_catalog }.not_to raise_error
1301
1692
  end
1302
1693
 
1303
1694
  it "should ignore files whose :to_resource method returns nil" do
1304
- @settings.define_settings :main, :maindir => { :type => :directory, :default => @prefix+"/maindir", :desc => "a" }
1305
- @settings.setting(:maindir).expects(:to_resource).returns nil
1695
+ @settings.define_settings :main, :maindir => { :type => :directory, :default => maindir, :desc => "a" }
1696
+ expect(@settings.setting(:maindir)).to receive(:to_resource).and_return(nil)
1306
1697
 
1307
- Puppet::Resource::Catalog.any_instance.expects(:add_resource).never
1698
+ expect_any_instance_of(Puppet::Resource::Catalog).not_to receive(:add_resource)
1308
1699
  @settings.to_catalog
1309
1700
  end
1310
1701
 
1311
- describe "on Microsoft Windows", :if => Puppet.features.microsoft_windows? do
1702
+ describe "on Microsoft Windows", :if => Puppet::Util::Platform.windows? do
1312
1703
  before :each do
1313
- Puppet.features.stubs(:root?).returns true
1704
+ allow(Puppet.features).to receive(:root?).and_return(true)
1314
1705
 
1315
1706
  @settings.define_settings :foo,
1316
1707
  :mkusers => { :type => :boolean, :default => true, :desc => "e" },
@@ -1331,6 +1722,7 @@ describe Puppet::Settings do
1331
1722
  describe "adding default directory environment to the catalog" do
1332
1723
  let(:tmpenv) { tmpdir("envs") }
1333
1724
  let(:default_path) { "#{tmpenv}/environments" }
1725
+
1334
1726
  before(:each) do
1335
1727
  @settings.define_settings :main,
1336
1728
  :environment => { :default => "production", :desc => "env"},
@@ -1354,6 +1746,49 @@ describe Puppet::Settings do
1354
1746
  expect(catalog.resource_keys).to include(["File", "#{envdir}/production"])
1355
1747
  end
1356
1748
 
1749
+ it 'adds the creation of the production directory when not run as root' do
1750
+ envdir = "#{tmpenv}/custom_envpath"
1751
+ envpath = "#{envdir}#{File::PATH_SEPARATOR}/some/other/envdir"
1752
+ @settings[:environmentpath] = envpath
1753
+ Dir.mkdir(envdir)
1754
+ allow(Puppet.features).to receive(:root?).and_return(false)
1755
+ catalog = @settings.to_catalog
1756
+ resource = catalog.resource('File', File.join(envdir, 'production'))
1757
+ expect(resource[:mode]).to eq('0750')
1758
+ expect(resource[:owner]).to be_nil
1759
+ expect(resource[:group]).to be_nil
1760
+ end
1761
+
1762
+ it 'adds the creation of the production directory with service owner and group information when available' do
1763
+ envdir = "#{tmpenv}/custom_envpath"
1764
+ envpath = "#{envdir}#{File::PATH_SEPARATOR}/some/other/envdir"
1765
+ @settings[:environmentpath] = envpath
1766
+ Dir.mkdir(envdir)
1767
+ allow(Puppet.features).to receive(:root?).and_return(true)
1768
+ allow(@settings).to receive(:service_user_available?).and_return(true)
1769
+ allow(@settings).to receive(:service_group_available?).and_return(true)
1770
+ catalog = @settings.to_catalog
1771
+ resource = catalog.resource('File', File.join(envdir, 'production'))
1772
+ expect(resource[:mode]).to eq('0750')
1773
+ expect(resource[:owner]).to eq('puppet')
1774
+ expect(resource[:group]).to eq('puppet')
1775
+ end
1776
+
1777
+ it 'adds the creation of the production directory without service owner and group when not available' do
1778
+ envdir = "#{tmpenv}/custom_envpath"
1779
+ envpath = "#{envdir}#{File::PATH_SEPARATOR}/some/other/envdir"
1780
+ @settings[:environmentpath] = envpath
1781
+ Dir.mkdir(envdir)
1782
+ allow(Puppet.features).to receive(:root?).and_return(true)
1783
+ allow(@settings).to receive(:service_user_available?).and_return(false)
1784
+ allow(@settings).to receive(:service_group_available?).and_return(false)
1785
+ catalog = @settings.to_catalog
1786
+ resource = catalog.resource('File', File.join(envdir, 'production'))
1787
+ expect(resource[:mode]).to eq('0750')
1788
+ expect(resource[:owner]).to be_nil
1789
+ expect(resource[:group]).to be_nil
1790
+ end
1791
+
1357
1792
  it "handles a non-existent environmentpath" do
1358
1793
  catalog = @settings.to_catalog
1359
1794
  expect(catalog.resource_keys).to be_empty
@@ -1377,7 +1812,7 @@ describe Puppet::Settings do
1377
1812
  before :all do
1378
1813
  # when this spec is run in isolation to build a settings catalog
1379
1814
  # it will not be able to autorequire and load types for the first time
1380
- # on Windows with microsoft_windows? stubbed to false, because
1815
+ # on Windows with windows? stubbed to false, because
1381
1816
  # Puppet::Util.path_to_uri is called to generate a URI to load code
1382
1817
  # and it manipulates the path based on OS
1383
1818
  # so instead we forcefully "prime" the cached types
@@ -1387,9 +1822,9 @@ describe Puppet::Settings do
1387
1822
  end
1388
1823
 
1389
1824
  before do
1390
- Puppet.features.stubs(:root?).returns true
1825
+ allow(Puppet.features).to receive(:root?).and_return(true)
1391
1826
  # stubbed to false, as Windows catalogs don't add users / groups
1392
- Puppet.features.stubs(:microsoft_windows?).returns false
1827
+ allow(Puppet::Util::Platform).to receive(:windows?).and_return(false)
1393
1828
 
1394
1829
  @settings.define_settings :foo,
1395
1830
  :mkusers => { :type => :boolean, :default => true, :desc => "e" },
@@ -1413,7 +1848,7 @@ describe Puppet::Settings do
1413
1848
  end
1414
1849
 
1415
1850
  it "should not add users or groups to the catalog if :mkusers not running as root" do
1416
- Puppet.features.stubs(:root?).returns false
1851
+ allow(Puppet.features).to receive(:root?).and_return(false)
1417
1852
 
1418
1853
  catalog = @settings.to_catalog
1419
1854
  expect(catalog.resource(:user, "suser")).to be_nil
@@ -1421,7 +1856,7 @@ describe Puppet::Settings do
1421
1856
  end
1422
1857
 
1423
1858
  it "should not add users or groups to the catalog if :mkusers is not a valid setting" do
1424
- Puppet.features.stubs(:root?).returns true
1859
+ allow(Puppet.features).to receive(:root?).and_return(true)
1425
1860
  settings = Puppet::Settings.new
1426
1861
  settings.define_settings :other, :otherdir => {:type => :directory, :default => "/otherdir", :desc => "a", :owner => "service", :group => "service"}
1427
1862
 
@@ -1432,6 +1867,8 @@ describe Puppet::Settings do
1432
1867
 
1433
1868
  it "should not add users or groups to the catalog if :mkusers is a valid setting but is disabled" do
1434
1869
  @settings[:mkusers] = false
1870
+ allow(@settings).to receive(:service_user_available?).and_return(false)
1871
+ allow(@settings).to receive(:service_group_available?).and_return(false)
1435
1872
 
1436
1873
  catalog = @settings.to_catalog
1437
1874
  expect(catalog.resource(:user, "suser")).to be_nil
@@ -1455,7 +1892,7 @@ describe Puppet::Settings do
1455
1892
  end
1456
1893
 
1457
1894
  it "should not attempt to manage the root user" do
1458
- Puppet.features.stubs(:root?).returns true
1895
+ allow(Puppet.features).to receive(:root?).and_return(true)
1459
1896
  @settings.define_settings :foo, :foodir => {:type => :directory, :default => "/foodir", :desc => "a", :owner => "root", :group => "service"}
1460
1897
 
1461
1898
  expect(@settings.to_catalog.resource(:user, "root")).to be_nil
@@ -1474,15 +1911,15 @@ describe Puppet::Settings do
1474
1911
  :maindir => { :type => :directory, :default => "/maindir", :desc => "a"},
1475
1912
  :seconddir => { :type => :directory, :default => "/seconddir", :desc => "a"}
1476
1913
 
1477
- main = stub 'main_resource', :ref => "File[/maindir]"
1478
- main.expects(:to_manifest).returns "maindir"
1479
- main.expects(:'[]').with(:alias).returns nil
1480
- second = stub 'second_resource', :ref => "File[/seconddir]"
1481
- second.expects(:to_manifest).returns "seconddir"
1482
- second.expects(:'[]').with(:alias).returns nil
1914
+ main = double('main_resource', :ref => "File[/maindir]")
1915
+ expect(main).to receive(:to_manifest).and_return("maindir")
1916
+ expect(main).to receive(:'[]').with(:alias).and_return(nil)
1917
+ second = double('second_resource', :ref => "File[/seconddir]")
1918
+ expect(second).to receive(:to_manifest).and_return("seconddir")
1919
+ expect(second).to receive(:'[]').with(:alias).and_return(nil)
1483
1920
 
1484
- @settings.setting(:maindir).expects(:to_resource).returns main
1485
- @settings.setting(:seconddir).expects(:to_resource).returns second
1921
+ expect(@settings.setting(:maindir)).to receive(:to_resource).and_return(main)
1922
+ expect(@settings.setting(:seconddir)).to receive(:to_resource).and_return(second)
1486
1923
 
1487
1924
  expect(@settings.to_manifest.split("\n\n").sort).to eq(%w{maindir seconddir})
1488
1925
  end
@@ -1491,8 +1928,8 @@ describe Puppet::Settings do
1491
1928
  describe "when using sections of the configuration to manage the local host" do
1492
1929
  before do
1493
1930
  @settings = Puppet::Settings.new
1494
- @settings.stubs(:service_user_available?).returns true
1495
- @settings.stubs(:service_group_available?).returns true
1931
+ allow(@settings).to receive(:service_user_available?).and_return(true)
1932
+ allow(@settings).to receive(:service_group_available?).and_return(true)
1496
1933
  @settings.define_settings :main, :noop => { :default => false, :desc => "", :type => :boolean }
1497
1934
  @settings.define_settings :main,
1498
1935
  :maindir => { :type => :directory, :default => make_absolute("/maindir"), :desc => "a" },
@@ -1504,44 +1941,44 @@ describe Puppet::Settings do
1504
1941
  end
1505
1942
 
1506
1943
  it "should create a catalog with the specified sections" do
1507
- @settings.expects(:to_catalog).with(:main, :other).returns Puppet::Resource::Catalog.new("foo")
1944
+ expect(@settings).to receive(:to_catalog).with(:main, :other).and_return(Puppet::Resource::Catalog.new("foo"))
1508
1945
  @settings.use(:main, :other)
1509
1946
  end
1510
1947
 
1511
1948
  it "should canonicalize the sections" do
1512
- @settings.expects(:to_catalog).with(:main, :other).returns Puppet::Resource::Catalog.new("foo")
1949
+ expect(@settings).to receive(:to_catalog).with(:main, :other).and_return(Puppet::Resource::Catalog.new("foo"))
1513
1950
  @settings.use("main", "other")
1514
1951
  end
1515
1952
 
1516
1953
  it "should ignore sections that have already been used" do
1517
- @settings.expects(:to_catalog).with(:main).returns Puppet::Resource::Catalog.new("foo")
1954
+ expect(@settings).to receive(:to_catalog).with(:main).and_return(Puppet::Resource::Catalog.new("foo"))
1518
1955
  @settings.use(:main)
1519
- @settings.expects(:to_catalog).with(:other).returns Puppet::Resource::Catalog.new("foo")
1956
+ expect(@settings).to receive(:to_catalog).with(:other).and_return(Puppet::Resource::Catalog.new("foo"))
1520
1957
  @settings.use(:main, :other)
1521
1958
  end
1522
1959
 
1523
1960
  it "should convert the created catalog to a RAL catalog" do
1524
1961
  @catalog = Puppet::Resource::Catalog.new("foo")
1525
- @settings.expects(:to_catalog).with(:main).returns @catalog
1962
+ expect(@settings).to receive(:to_catalog).with(:main).and_return(@catalog)
1526
1963
 
1527
- @catalog.expects(:to_ral).returns @catalog
1964
+ expect(@catalog).to receive(:to_ral).and_return(@catalog)
1528
1965
  @settings.use(:main)
1529
1966
  end
1530
1967
 
1531
1968
  it "should specify that it is not managing a host catalog" do
1532
1969
  catalog = Puppet::Resource::Catalog.new("foo")
1533
- catalog.expects(:apply)
1534
- @settings.expects(:to_catalog).returns catalog
1970
+ expect(catalog).to receive(:apply)
1971
+ expect(@settings).to receive(:to_catalog).and_return(catalog)
1535
1972
 
1536
- catalog.stubs(:to_ral).returns catalog
1973
+ allow(catalog).to receive(:to_ral).and_return(catalog)
1537
1974
 
1538
- catalog.expects(:host_config=).with false
1975
+ expect(catalog).to receive(:host_config=).with(false)
1539
1976
 
1540
1977
  @settings.use(:main)
1541
1978
  end
1542
1979
 
1543
1980
  it "should support a method for re-using all currently used sections" do
1544
- @settings.expects(:to_catalog).with(:main, :third).times(2).returns Puppet::Resource::Catalog.new("foo")
1981
+ expect(@settings).to receive(:to_catalog).with(:main, :third).exactly(2).times.and_return(Puppet::Resource::Catalog.new("foo"))
1545
1982
 
1546
1983
  @settings.use(:main, :third)
1547
1984
  @settings.reuse
@@ -1549,13 +1986,13 @@ describe Puppet::Settings do
1549
1986
 
1550
1987
  it "should fail with an appropriate message if any resources fail" do
1551
1988
  @catalog = Puppet::Resource::Catalog.new("foo")
1552
- @catalog.stubs(:to_ral).returns @catalog
1553
- @settings.expects(:to_catalog).returns @catalog
1989
+ allow(@catalog).to receive(:to_ral).and_return(@catalog)
1990
+ expect(@settings).to receive(:to_catalog).and_return(@catalog)
1554
1991
 
1555
- @trans = mock("transaction")
1556
- @catalog.expects(:apply).yields(@trans)
1992
+ @trans = double("transaction")
1993
+ expect(@catalog).to receive(:apply).and_yield(@trans)
1557
1994
 
1558
- @trans.expects(:any_failed?).returns(true)
1995
+ expect(@trans).to receive(:any_failed?).and_return(true)
1559
1996
 
1560
1997
  resource = Puppet::Type.type(:notify).new(:title => 'failed')
1561
1998
  status = Puppet::Resource::Status.new(resource)
@@ -1568,9 +2005,9 @@ describe Puppet::Settings do
1568
2005
  report = Puppet::Transaction::Report.new('apply')
1569
2006
  report.add_resource_status(status)
1570
2007
 
1571
- @trans.expects(:report).returns report
2008
+ expect(@trans).to receive(:report).and_return(report)
1572
2009
 
1573
- @settings.expects(:raise).with(includes("My failure"))
2010
+ expect(@settings).to receive(:raise).with(/My failure/)
1574
2011
  @settings.use(:whatever)
1575
2012
  end
1576
2013
  end
@@ -1579,10 +2016,10 @@ describe Puppet::Settings do
1579
2016
  before do
1580
2017
  @settings = Puppet::Settings.new
1581
2018
  #these are the magic default values
1582
- @settings.stubs(:value).with(:configprint).returns("")
1583
- @settings.stubs(:value).with(:genconfig).returns(false)
1584
- @settings.stubs(:value).with(:genmanifest).returns(false)
1585
- @settings.stubs(:value).with(:environment).returns(nil)
2019
+ allow(@settings).to receive(:value).with(:configprint).and_return("")
2020
+ allow(@settings).to receive(:value).with(:genconfig).and_return(false)
2021
+ allow(@settings).to receive(:value).with(:genmanifest).and_return(false)
2022
+ allow(@settings).to receive(:value).with(:environment).and_return(nil)
1586
2023
  end
1587
2024
 
1588
2025
  describe "when checking print_config?" do
@@ -1591,17 +2028,17 @@ describe Puppet::Settings do
1591
2028
  end
1592
2029
 
1593
2030
  it "should return true when :configprint has a value" do
1594
- @settings.stubs(:value).with(:configprint).returns("something")
2031
+ allow(@settings).to receive(:value).with(:configprint).and_return("something")
1595
2032
  expect(@settings.print_configs?).to be_truthy
1596
2033
  end
1597
2034
 
1598
2035
  it "should return true when :genconfig has a value" do
1599
- @settings.stubs(:value).with(:genconfig).returns(true)
2036
+ allow(@settings).to receive(:value).with(:genconfig).and_return(true)
1600
2037
  expect(@settings.print_configs?).to be_truthy
1601
2038
  end
1602
2039
 
1603
2040
  it "should return true when :genmanifest has a value" do
1604
- @settings.stubs(:value).with(:genmanifest).returns(true)
2041
+ allow(@settings).to receive(:value).with(:genmanifest).and_return(true)
1605
2042
  expect(@settings.print_configs?).to be_truthy
1606
2043
  end
1607
2044
  end
@@ -1609,87 +2046,87 @@ describe Puppet::Settings do
1609
2046
  describe "when printing configs" do
1610
2047
  describe "when :configprint has a value" do
1611
2048
  it "should call print_config_options" do
1612
- @settings.stubs(:value).with(:configprint).returns("something")
1613
- @settings.expects(:print_config_options)
2049
+ allow(@settings).to receive(:value).with(:configprint).and_return("something")
2050
+ expect(@settings).to receive(:print_config_options)
1614
2051
  @settings.print_configs
1615
2052
  end
1616
2053
 
1617
2054
  it "should get the value of the option using the environment" do
1618
- @settings.stubs(:value).with(:configprint).returns("something")
1619
- @settings.stubs(:include?).with("something").returns(true)
1620
- @settings.expects(:value).with(:environment).returns("env")
1621
- @settings.expects(:value).with("something", "env").returns("foo")
1622
- @settings.stubs(:puts).with("foo")
2055
+ allow(@settings).to receive(:value).with(:configprint).and_return("something")
2056
+ allow(@settings).to receive(:include?).with("something").and_return(true)
2057
+ expect(@settings).to receive(:value).with(:environment).and_return("env")
2058
+ expect(@settings).to receive(:value).with("something", "env").and_return("foo")
2059
+ allow(@settings).to receive(:puts).with("foo")
1623
2060
  @settings.print_configs
1624
2061
  end
1625
2062
 
1626
2063
  it "should print the value of the option" do
1627
- @settings.stubs(:value).with(:configprint).returns("something")
1628
- @settings.stubs(:include?).with("something").returns(true)
1629
- @settings.stubs(:value).with("something", nil).returns("foo")
1630
- @settings.expects(:puts).with("foo")
2064
+ allow(@settings).to receive(:value).with(:configprint).and_return("something")
2065
+ allow(@settings).to receive(:include?).with("something").and_return(true)
2066
+ allow(@settings).to receive(:value).with("something", nil).and_return("foo")
2067
+ expect(@settings).to receive(:puts).with("foo")
1631
2068
  @settings.print_configs
1632
2069
  end
1633
2070
 
1634
2071
  it "should print the value pairs if there are multiple options" do
1635
- @settings.stubs(:value).with(:configprint).returns("bar,baz")
1636
- @settings.stubs(:include?).with("bar").returns(true)
1637
- @settings.stubs(:include?).with("baz").returns(true)
1638
- @settings.stubs(:value).with("bar", nil).returns("foo")
1639
- @settings.stubs(:value).with("baz", nil).returns("fud")
1640
- @settings.expects(:puts).with("bar = foo")
1641
- @settings.expects(:puts).with("baz = fud")
2072
+ allow(@settings).to receive(:value).with(:configprint).and_return("bar,baz")
2073
+ allow(@settings).to receive(:include?).with("bar").and_return(true)
2074
+ allow(@settings).to receive(:include?).with("baz").and_return(true)
2075
+ allow(@settings).to receive(:value).with("bar", nil).and_return("foo")
2076
+ allow(@settings).to receive(:value).with("baz", nil).and_return("fud")
2077
+ expect(@settings).to receive(:puts).with("bar = foo")
2078
+ expect(@settings).to receive(:puts).with("baz = fud")
1642
2079
  @settings.print_configs
1643
2080
  end
1644
2081
 
1645
2082
  it "should return true after printing" do
1646
- @settings.stubs(:value).with(:configprint).returns("something")
1647
- @settings.stubs(:include?).with("something").returns(true)
1648
- @settings.stubs(:value).with("something", nil).returns("foo")
1649
- @settings.stubs(:puts).with("foo")
2083
+ allow(@settings).to receive(:value).with(:configprint).and_return("something")
2084
+ allow(@settings).to receive(:include?).with("something").and_return(true)
2085
+ allow(@settings).to receive(:value).with("something", nil).and_return("foo")
2086
+ allow(@settings).to receive(:puts).with("foo")
1650
2087
  expect(@settings.print_configs).to be_truthy
1651
2088
  end
1652
2089
 
1653
2090
  it "should return false if a config param is not found" do
1654
- @settings.stubs :puts
1655
- @settings.stubs(:value).with(:configprint).returns("something")
1656
- @settings.stubs(:include?).with("something").returns(false)
2091
+ allow(@settings).to receive(:puts)
2092
+ allow(@settings).to receive(:value).with(:configprint).and_return("something")
2093
+ allow(@settings).to receive(:include?).with("something").and_return(false)
1657
2094
  expect(@settings.print_configs).to be_falsey
1658
2095
  end
1659
2096
  end
1660
2097
 
1661
2098
  describe "when genconfig is true" do
1662
2099
  before do
1663
- @settings.stubs :puts
2100
+ allow(@settings).to receive(:puts)
1664
2101
  end
1665
2102
 
1666
2103
  it "should call to_config" do
1667
- @settings.stubs(:value).with(:genconfig).returns(true)
1668
- @settings.expects(:to_config)
2104
+ allow(@settings).to receive(:value).with(:genconfig).and_return(true)
2105
+ expect(@settings).to receive(:to_config)
1669
2106
  @settings.print_configs
1670
2107
  end
1671
2108
 
1672
2109
  it "should return true from print_configs" do
1673
- @settings.stubs(:value).with(:genconfig).returns(true)
1674
- @settings.stubs(:to_config)
2110
+ allow(@settings).to receive(:value).with(:genconfig).and_return(true)
2111
+ allow(@settings).to receive(:to_config)
1675
2112
  expect(@settings.print_configs).to be_truthy
1676
2113
  end
1677
2114
  end
1678
2115
 
1679
2116
  describe "when genmanifest is true" do
1680
2117
  before do
1681
- @settings.stubs :puts
2118
+ allow(@settings).to receive(:puts)
1682
2119
  end
1683
2120
 
1684
2121
  it "should call to_config" do
1685
- @settings.stubs(:value).with(:genmanifest).returns(true)
1686
- @settings.expects(:to_manifest)
2122
+ allow(@settings).to receive(:value).with(:genmanifest).and_return(true)
2123
+ expect(@settings).to receive(:to_manifest)
1687
2124
  @settings.print_configs
1688
2125
  end
1689
2126
 
1690
2127
  it "should return true from print_configs" do
1691
- @settings.stubs(:value).with(:genmanifest).returns(true)
1692
- @settings.stubs(:to_manifest)
2128
+ allow(@settings).to receive(:value).with(:genmanifest).and_return(true)
2129
+ allow(@settings).to receive(:to_manifest)
1693
2130
  expect(@settings.print_configs).to be_truthy
1694
2131
  end
1695
2132
  end
@@ -1704,8 +2141,8 @@ describe Puppet::Settings do
1704
2141
  end
1705
2142
 
1706
2143
  def a_user_type_for(username)
1707
- user = mock 'user'
1708
- Puppet::Type.type(:user).expects(:new).with { |args| args[:name] == username }.returns user
2144
+ user = double('user', 'suitable?': true, to_s: "User[#{username}]")
2145
+ expect(Puppet::Type.type(:user)).to receive(:new).with(hash_including(name: username)).and_return(user)
1709
2146
  user
1710
2147
  end
1711
2148
 
@@ -1716,7 +2153,7 @@ describe Puppet::Settings do
1716
2153
  it "should return false if the user provider says the user is missing" do
1717
2154
  settings[:user] = "foo"
1718
2155
 
1719
- a_user_type_for("foo").expects(:exists?).returns false
2156
+ expect(a_user_type_for("foo")).to receive(:exists?).and_return(false)
1720
2157
 
1721
2158
  expect(settings).not_to be_service_user_available
1722
2159
  end
@@ -1724,7 +2161,7 @@ describe Puppet::Settings do
1724
2161
  it "should return true if the user provider says the user is present" do
1725
2162
  settings[:user] = "foo"
1726
2163
 
1727
- a_user_type_for("foo").expects(:exists?).returns true
2164
+ expect(a_user_type_for("foo")).to receive(:exists?).and_return(true)
1728
2165
 
1729
2166
  expect(settings).to be_service_user_available
1730
2167
  end
@@ -1732,11 +2169,21 @@ describe Puppet::Settings do
1732
2169
  it "caches the result of determining if the user is present" do
1733
2170
  settings[:user] = "foo"
1734
2171
 
1735
- a_user_type_for("foo").expects(:exists?).returns true
2172
+ expect(a_user_type_for("foo")).to receive(:exists?).and_return(true)
1736
2173
  expect(settings).to be_service_user_available
1737
2174
 
1738
2175
  expect(settings).to be_service_user_available
1739
2176
  end
2177
+
2178
+ it "raises if the user is not suitable" do
2179
+ settings[:user] = "foo"
2180
+
2181
+ expect(a_user_type_for("foo")).to receive(:suitable?).and_return(false)
2182
+
2183
+ expect {
2184
+ settings.service_user_available?
2185
+ }.to raise_error(Puppet::Error, /Cannot manage owner permissions, because the provider for 'User\[foo\]' is not functional/)
2186
+ end
1740
2187
  end
1741
2188
 
1742
2189
  describe "when determining if the service group is available" do
@@ -1747,8 +2194,8 @@ describe Puppet::Settings do
1747
2194
  end
1748
2195
 
1749
2196
  def a_group_type_for(groupname)
1750
- group = mock 'group'
1751
- Puppet::Type.type(:group).expects(:new).with { |args| args[:name] == groupname }.returns group
2197
+ group = double('group', 'suitable?': true, to_s: "Group[#{groupname}]")
2198
+ expect(Puppet::Type.type(:group)).to receive(:new).with(hash_including(name: groupname)).and_return(group)
1752
2199
  group
1753
2200
  end
1754
2201
 
@@ -1759,7 +2206,7 @@ describe Puppet::Settings do
1759
2206
  it "should return false if the group provider says the group is missing" do
1760
2207
  settings[:group] = "foo"
1761
2208
 
1762
- a_group_type_for("foo").expects(:exists?).returns false
2209
+ expect(a_group_type_for("foo")).to receive(:exists?).and_return(false)
1763
2210
 
1764
2211
  expect(settings).not_to be_service_group_available
1765
2212
  end
@@ -1767,7 +2214,7 @@ describe Puppet::Settings do
1767
2214
  it "should return true if the group provider says the group is present" do
1768
2215
  settings[:group] = "foo"
1769
2216
 
1770
- a_group_type_for("foo").expects(:exists?).returns true
2217
+ expect(a_group_type_for("foo")).to receive(:exists?).and_return(true)
1771
2218
 
1772
2219
  expect(settings).to be_service_group_available
1773
2220
  end
@@ -1775,25 +2222,35 @@ describe Puppet::Settings do
1775
2222
  it "caches the result of determining if the group is present" do
1776
2223
  settings[:group] = "foo"
1777
2224
 
1778
- a_group_type_for("foo").expects(:exists?).returns true
2225
+ expect(a_group_type_for("foo")).to receive(:exists?).and_return(true)
1779
2226
  expect(settings).to be_service_group_available
1780
2227
 
1781
2228
  expect(settings).to be_service_group_available
1782
2229
  end
2230
+
2231
+ it "raises if the group is not suitable" do
2232
+ settings[:group] = "foo"
2233
+
2234
+ expect(a_group_type_for("foo")).to receive(:suitable?).and_return(false)
2235
+
2236
+ expect {
2237
+ settings.service_group_available?
2238
+ }.to raise_error(Puppet::Error, /Cannot manage group permissions, because the provider for 'Group\[foo\]' is not functional/)
2239
+ end
1783
2240
  end
1784
2241
 
1785
2242
  describe "when dealing with command-line options" do
1786
2243
  let(:settings) { Puppet::Settings.new }
1787
2244
 
1788
2245
  it "should get options from Puppet.settings.optparse_addargs" do
1789
- settings.expects(:optparse_addargs).returns([])
2246
+ expect(settings).to receive(:optparse_addargs).and_return([])
1790
2247
 
1791
2248
  settings.send(:parse_global_options, [])
1792
2249
  end
1793
2250
 
1794
2251
  it "should add options to OptionParser" do
1795
- settings.stubs(:optparse_addargs).returns( [["--option","-o", "Funny Option", :NONE]])
1796
- settings.expects(:handlearg).with("--option", true)
2252
+ allow(settings).to receive(:optparse_addargs).and_return([["--option","-o", "Funny Option", :NONE]])
2253
+ expect(settings).to receive(:handlearg).with("--option", true)
1797
2254
  settings.send(:parse_global_options, ["--option"])
1798
2255
  end
1799
2256
 
@@ -1802,13 +2259,13 @@ describe Puppet::Settings do
1802
2259
  end
1803
2260
 
1804
2261
  it "should not pass an unrecognized option to handleargs" do
1805
- settings.expects(:handlearg).with("--topuppet", "value").never
2262
+ expect(settings).not_to receive(:handlearg).with("--topuppet", "value")
1806
2263
  expect { settings.send(:parse_global_options, ["--topuppet", "value"]) } .to_not raise_error
1807
2264
  end
1808
2265
 
1809
2266
  it "should pass valid puppet settings options to handlearg even if they appear after an unrecognized option" do
1810
- settings.stubs(:optparse_addargs).returns( [["--option","-o", "Funny Option", :NONE]])
1811
- settings.expects(:handlearg).with("--option", true)
2267
+ allow(settings).to receive(:optparse_addargs).and_return([["--option","-o", "Funny Option", :NONE]])
2268
+ expect(settings).to receive(:handlearg).with("--option", true)
1812
2269
  settings.send(:parse_global_options, ["--invalidoption", "--option"])
1813
2270
  end
1814
2271
 
@@ -1821,18 +2278,18 @@ describe Puppet::Settings do
1821
2278
  end
1822
2279
 
1823
2280
  it "should set preferred run mode from --run_mode <foo> string without error" do
1824
- args = ["--run_mode", "master"]
1825
- settings.expects(:handlearg).with("--run_mode", "master").never
2281
+ args = ["--run_mode", "server"]
2282
+ expect(settings).not_to receive(:handlearg).with("--run_mode", "server")
1826
2283
  expect { settings.send(:parse_global_options, args) } .to_not raise_error
1827
- expect(Puppet.settings.preferred_run_mode).to eq(:master)
2284
+ expect(Puppet.settings.preferred_run_mode).to eq(:server)
1828
2285
  expect(args.empty?).to eq(true)
1829
2286
  end
1830
2287
 
1831
2288
  it "should set preferred run mode from --run_mode=<foo> string without error" do
1832
- args = ["--run_mode=master"]
1833
- settings.expects(:handlearg).with("--run_mode", "master").never
1834
- expect { settings.send(:parse_global_options, args) } .to_not raise_error
1835
- expect(Puppet.settings.preferred_run_mode).to eq(:master)
2289
+ args = ["--run_mode=server"]
2290
+ expect(settings).not_to receive(:handlearg).with("--run_mode", "server")
2291
+ expect { settings.send(:parse_global_options, args) }.to_not raise_error
2292
+ expect(Puppet.settings.preferred_run_mode).to eq(:server)
1836
2293
  expect(args.empty?).to eq(true)
1837
2294
  end
1838
2295
  end
@@ -1840,8 +2297,8 @@ describe Puppet::Settings do
1840
2297
  describe "default_certname" do
1841
2298
  describe "using hostname and domain" do
1842
2299
  before :each do
1843
- Puppet::Settings.stubs(:hostname_fact).returns("testhostname")
1844
- Puppet::Settings.stubs(:domain_fact).returns("domain.test.")
2300
+ allow(Puppet::Settings).to receive(:hostname_fact).and_return("testhostname")
2301
+ allow(Puppet::Settings).to receive(:domain_fact).and_return("domain.test.")
1845
2302
  end
1846
2303
 
1847
2304
  it "should use both to generate fqdn" do
@@ -1854,8 +2311,8 @@ describe Puppet::Settings do
1854
2311
 
1855
2312
  describe "using just hostname" do
1856
2313
  before :each do
1857
- Puppet::Settings.stubs(:hostname_fact).returns("testhostname")
1858
- Puppet::Settings.stubs(:domain_fact).returns("")
2314
+ allow(Puppet::Settings).to receive(:hostname_fact).and_return("testhostname")
2315
+ allow(Puppet::Settings).to receive(:domain_fact).and_return("")
1859
2316
  end
1860
2317
 
1861
2318
  it "should use only hostname to generate fqdn" do