puppet 5.5.22 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (1407) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +46 -72
  3. data/Gemfile.lock +86 -102
  4. data/MAINTAINERS +47 -0
  5. data/Rakefile +15 -19
  6. data/ext/build_defaults.yaml +0 -1
  7. data/ext/cert_inspector +3 -3
  8. data/ext/debian/copyright +0 -22
  9. data/ext/project_data.yaml +8 -10
  10. data/ext/puppet-test +2 -2
  11. data/ext/redhat/puppet.spec.erb +0 -4
  12. data/ext/regexp_nodes/regexp_nodes.rb +4 -4
  13. data/ext/solaris/smf/puppet.xml +0 -2
  14. data/ext/solaris/smf/svc-puppetd +1 -8
  15. data/ext/solaris/smf/svc-puppetmasterd +1 -8
  16. data/ext/windows/eventlog/Rakefile +32 -0
  17. data/ext/windows/eventlog/puppetres.dll +0 -0
  18. data/ext/windows/eventlog/puppetres.mc +18 -0
  19. data/ext/windows/service/daemon.rb +8 -54
  20. data/install.rb +24 -6
  21. data/lib/hiera/scope.rb +0 -7
  22. data/lib/puppet.rb +10 -21
  23. data/lib/puppet/agent.rb +13 -5
  24. data/lib/puppet/application.rb +10 -8
  25. data/lib/puppet/application/agent.rb +3 -21
  26. data/lib/puppet/application/apply.rb +22 -12
  27. data/lib/puppet/application/cert.rb +25 -180
  28. data/lib/puppet/application/describe.rb +9 -3
  29. data/lib/puppet/application/device.rb +41 -74
  30. data/lib/puppet/application/doc.rb +5 -3
  31. data/lib/puppet/application/filebucket.rb +1 -23
  32. data/lib/puppet/application/lookup.rb +2 -2
  33. data/lib/puppet/application/resource.rb +4 -4
  34. data/lib/puppet/application/script.rb +3 -3
  35. data/lib/puppet/application/ssl.rb +133 -0
  36. data/lib/puppet/application_support.rb +1 -2
  37. data/lib/puppet/configurer.rb +62 -127
  38. data/lib/puppet/configurer/downloader.rb +17 -34
  39. data/lib/puppet/configurer/fact_handler.rb +5 -1
  40. data/lib/puppet/configurer/plugin_handler.rb +2 -3
  41. data/lib/puppet/confine/false.rb +1 -7
  42. data/lib/puppet/confine/true.rb +1 -7
  43. data/lib/puppet/daemon.rb +2 -2
  44. data/lib/puppet/datatypes.rb +1 -1
  45. data/lib/puppet/defaults.rb +126 -286
  46. data/lib/puppet/environments.rb +2 -7
  47. data/lib/puppet/error.rb +14 -10
  48. data/lib/puppet/etc.rb +4 -25
  49. data/lib/puppet/external/dot.rb +23 -17
  50. data/lib/puppet/face/config.rb +50 -12
  51. data/lib/puppet/face/epp.rb +2 -2
  52. data/lib/puppet/face/facts.rb +1 -1
  53. data/lib/puppet/face/help.rb +21 -7
  54. data/lib/puppet/face/help/global.erb +2 -2
  55. data/lib/puppet/face/module/build.rb +4 -59
  56. data/lib/puppet/face/module/generate.rb +5 -247
  57. data/lib/puppet/face/module/install.rb +0 -4
  58. data/lib/puppet/face/module/list.rb +5 -10
  59. data/lib/puppet/face/module/search.rb +2 -2
  60. data/lib/puppet/face/module/uninstall.rb +1 -5
  61. data/lib/puppet/face/module/upgrade.rb +1 -5
  62. data/lib/puppet/face/node/clean.rb +14 -10
  63. data/lib/puppet/face/plugin.rb +2 -9
  64. data/lib/puppet/feature/base.rb +7 -26
  65. data/lib/puppet/feature/eventlog.rb +1 -1
  66. data/lib/puppet/file_bucket/dipper.rb +1 -1
  67. data/lib/puppet/file_serving/base.rb +7 -7
  68. data/lib/puppet/file_serving/fileset.rb +2 -2
  69. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  70. data/lib/puppet/file_serving/metadata.rb +4 -3
  71. data/lib/puppet/file_serving/mount/locales.rb +2 -1
  72. data/lib/puppet/file_serving/mount/pluginfacts.rb +2 -1
  73. data/lib/puppet/file_serving/mount/plugins.rb +2 -1
  74. data/lib/puppet/file_system.rb +8 -0
  75. data/lib/puppet/file_system/memory_file.rb +1 -1
  76. data/lib/puppet/file_system/posix.rb +2 -3
  77. data/lib/puppet/file_system/uniquefile.rb +0 -4
  78. data/lib/puppet/forge.rb +8 -12
  79. data/lib/puppet/functions.rb +138 -0
  80. data/lib/puppet/functions/abs.rb +61 -0
  81. data/lib/puppet/functions/call.rb +38 -2
  82. data/lib/puppet/functions/camelcase.rb +62 -0
  83. data/lib/puppet/functions/capitalize.rb +61 -0
  84. data/lib/puppet/functions/ceiling.rb +37 -0
  85. data/lib/puppet/functions/chomp.rb +57 -0
  86. data/lib/puppet/functions/chop.rb +67 -0
  87. data/lib/puppet/functions/compare.rb +125 -0
  88. data/lib/puppet/functions/convert_to.rb +3 -2
  89. data/lib/puppet/functions/dig.rb +21 -1
  90. data/lib/puppet/functions/downcase.rb +89 -0
  91. data/lib/puppet/functions/epp.rb +4 -4
  92. data/lib/puppet/functions/eyaml_lookup_key.rb +4 -5
  93. data/lib/puppet/functions/filter.rb +7 -6
  94. data/lib/puppet/functions/floor.rb +37 -0
  95. data/lib/puppet/functions/get.rb +150 -0
  96. data/lib/puppet/functions/getvar.rb +87 -0
  97. data/lib/puppet/functions/inline_epp.rb +5 -5
  98. data/lib/puppet/functions/lstrip.rb +58 -0
  99. data/lib/puppet/functions/max.rb +183 -0
  100. data/lib/puppet/functions/min.rb +182 -0
  101. data/lib/puppet/functions/new.rb +3 -8
  102. data/lib/puppet/functions/reduce.rb +4 -2
  103. data/lib/puppet/functions/reverse_each.rb +1 -1
  104. data/lib/puppet/functions/round.rb +24 -0
  105. data/lib/puppet/functions/rstrip.rb +58 -0
  106. data/lib/puppet/functions/size.rb +15 -0
  107. data/lib/puppet/functions/sort.rb +74 -0
  108. data/lib/puppet/functions/step.rb +1 -1
  109. data/lib/puppet/functions/strip.rb +58 -0
  110. data/lib/puppet/functions/upcase.rb +89 -0
  111. data/lib/puppet/functions/yaml_data.rb +4 -5
  112. data/lib/puppet/gettext/config.rb +1 -1
  113. data/lib/puppet/gettext/module_translations.rb +1 -1
  114. data/lib/puppet/graph.rb +0 -2
  115. data/lib/puppet/graph/rb_tree_map.rb +2 -2
  116. data/lib/puppet/graph/simple_graph.rb +10 -7
  117. data/lib/puppet/indirector/catalog/compiler.rb +0 -8
  118. data/lib/puppet/indirector/catalog/json.rb +14 -3
  119. data/lib/puppet/indirector/catalog/yaml.rb +0 -16
  120. data/lib/puppet/indirector/certificate/file.rb +0 -1
  121. data/lib/puppet/indirector/facts/yaml.rb +4 -2
  122. data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
  123. data/lib/puppet/indirector/hiera.rb +0 -6
  124. data/lib/puppet/indirector/indirection.rb +8 -12
  125. data/lib/puppet/indirector/key/file.rb +1 -6
  126. data/lib/puppet/indirector/node/exec.rb +1 -3
  127. data/lib/puppet/indirector/node/yaml.rb +0 -6
  128. data/lib/puppet/indirector/request.rb +20 -27
  129. data/lib/puppet/indirector/resource/ral.rb +3 -1
  130. data/lib/puppet/indirector/resource/validator.rb +1 -1
  131. data/lib/puppet/indirector/rest.rb +7 -65
  132. data/lib/puppet/indirector/ssl_file.rb +3 -44
  133. data/lib/puppet/indirector/terminus.rb +1 -1
  134. data/lib/puppet/indirector/yaml.rb +4 -4
  135. data/lib/puppet/info_service/task_information_service.rb +7 -3
  136. data/lib/puppet/interface.rb +2 -3
  137. data/lib/puppet/interface/action.rb +2 -5
  138. data/lib/puppet/interface/face_collection.rb +3 -1
  139. data/lib/puppet/loaders.rb +2 -0
  140. data/lib/puppet/metatype/manager.rb +3 -5
  141. data/lib/puppet/module.rb +5 -31
  142. data/lib/puppet/module/task.rb +208 -30
  143. data/lib/puppet/module_tool.rb +2 -5
  144. data/lib/puppet/module_tool/applications.rb +0 -1
  145. data/lib/puppet/module_tool/applications/application.rb +1 -1
  146. data/lib/puppet/module_tool/applications/installer.rb +7 -8
  147. data/lib/puppet/module_tool/applications/uninstaller.rb +4 -5
  148. data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
  149. data/lib/puppet/module_tool/applications/upgrader.rb +5 -6
  150. data/lib/puppet/module_tool/installed_modules.rb +2 -2
  151. data/lib/puppet/module_tool/local_tarball.rb +3 -3
  152. data/lib/puppet/module_tool/metadata.rb +1 -2
  153. data/lib/puppet/module_tool/shared_behaviors.rb +6 -6
  154. data/lib/puppet/module_tool/tar/mini.rb +2 -12
  155. data/lib/puppet/network/authconfig.rb +0 -13
  156. data/lib/puppet/network/format_support.rb +13 -8
  157. data/lib/puppet/network/formats.rb +93 -2
  158. data/lib/puppet/network/http.rb +0 -2
  159. data/lib/puppet/network/http/api.rb +1 -10
  160. data/lib/puppet/network/http/api/indirected_routes.rb +22 -16
  161. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -3
  162. data/lib/puppet/network/http/connection.rb +14 -57
  163. data/lib/puppet/network/http/factory.rb +13 -7
  164. data/lib/puppet/network/http/handler.rb +59 -27
  165. data/lib/puppet/network/http/pool.rb +1 -7
  166. data/lib/puppet/network/http/site.rb +1 -1
  167. data/lib/puppet/network/resolver.rb +140 -67
  168. data/lib/puppet/node.rb +1 -2
  169. data/lib/puppet/node/environment.rb +5 -30
  170. data/lib/puppet/node/facts.rb +11 -1
  171. data/lib/puppet/parameter.rb +4 -7
  172. data/lib/puppet/parser/ast.rb +5 -9
  173. data/lib/puppet/parser/ast/branch.rb +3 -3
  174. data/lib/puppet/parser/ast/leaf.rb +5 -0
  175. data/lib/puppet/parser/ast/resourceparam.rb +1 -1
  176. data/lib/puppet/parser/catalog_compiler.rb +32 -0
  177. data/lib/puppet/parser/compiler.rb +2 -3
  178. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -2
  179. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -2
  180. data/lib/puppet/parser/environment_compiler.rb +0 -3
  181. data/lib/puppet/parser/functions.rb +48 -18
  182. data/lib/puppet/parser/functions/epp.rb +3 -3
  183. data/lib/puppet/parser/functions/filter.rb +1 -1
  184. data/lib/puppet/parser/functions/generate.rb +1 -1
  185. data/lib/puppet/parser/functions/inline_epp.rb +5 -5
  186. data/lib/puppet/parser/resource.rb +2 -4
  187. data/lib/puppet/parser/resource/param.rb +12 -11
  188. data/lib/puppet/parser/scope.rb +6 -8
  189. data/lib/puppet/parser/script_compiler.rb +7 -2
  190. data/lib/puppet/pops.rb +1 -0
  191. data/lib/puppet/pops/adaptable.rb +13 -7
  192. data/lib/puppet/pops/adapters.rb +18 -8
  193. data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
  194. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +4 -4
  195. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
  196. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
  197. data/lib/puppet/pops/evaluator/compare_operator.rb +3 -1
  198. data/lib/puppet/pops/evaluator/deferred_resolver.rb +127 -0
  199. data/lib/puppet/pops/evaluator/evaluator_impl.rb +17 -2
  200. data/lib/puppet/pops/evaluator/external_syntax_support.rb +2 -3
  201. data/lib/puppet/pops/evaluator/runtime3_converter.rb +23 -4
  202. data/lib/puppet/pops/evaluator/runtime3_support.rb +7 -8
  203. data/lib/puppet/pops/functions/dispatch.rb +6 -0
  204. data/lib/puppet/pops/issues.rb +9 -10
  205. data/lib/puppet/pops/loader/loader.rb +1 -1
  206. data/lib/puppet/pops/loader/loader_paths.rb +5 -3
  207. data/lib/puppet/pops/loader/module_loaders.rb +47 -21
  208. data/lib/puppet/pops/loader/null_loader.rb +60 -0
  209. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +54 -0
  210. data/lib/puppet/pops/loader/static_loader.rb +0 -36
  211. data/lib/puppet/pops/loader/task_instantiator.rb +72 -44
  212. data/lib/puppet/pops/loaders.rb +21 -33
  213. data/lib/puppet/pops/lookup/hiera_config.rb +1 -2
  214. data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
  215. data/lib/puppet/pops/merge_strategy.rb +18 -22
  216. data/lib/puppet/pops/model/ast.pp +16 -0
  217. data/lib/puppet/pops/model/ast.rb +94 -0
  218. data/lib/puppet/pops/model/factory.rb +17 -38
  219. data/lib/puppet/pops/model/model_label_provider.rb +8 -1
  220. data/lib/puppet/pops/parser/egrammar.ra +14 -3
  221. data/lib/puppet/pops/parser/eparser.rb +1537 -1492
  222. data/lib/puppet/pops/parser/epp_support.rb +6 -2
  223. data/lib/puppet/pops/parser/heredoc_support.rb +8 -17
  224. data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
  225. data/lib/puppet/pops/parser/lexer2.rb +2 -7
  226. data/lib/puppet/pops/parser/locator.rb +87 -107
  227. data/lib/puppet/pops/parser/parser_support.rb +2 -11
  228. data/lib/puppet/pops/parser/pn_parser.rb +16 -17
  229. data/lib/puppet/pops/pcore.rb +19 -8
  230. data/lib/puppet/pops/puppet_stack.rb +48 -51
  231. data/lib/puppet/pops/resource/resource_type_impl.rb +0 -2
  232. data/lib/puppet/pops/serialization.rb +3 -2
  233. data/lib/puppet/pops/serialization/from_data_converter.rb +4 -3
  234. data/lib/puppet/pops/serialization/to_data_converter.rb +3 -3
  235. data/lib/puppet/pops/serialization/to_stringified_converter.rb +226 -0
  236. data/lib/puppet/pops/types/iterable.rb +8 -34
  237. data/lib/puppet/pops/types/p_binary_type.rb +1 -2
  238. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  239. data/lib/puppet/pops/types/p_object_type.rb +3 -0
  240. data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
  241. data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
  242. data/lib/puppet/pops/types/p_type_set_type.rb +0 -4
  243. data/lib/puppet/pops/types/string_converter.rb +12 -21
  244. data/lib/puppet/pops/types/type_calculator.rb +0 -24
  245. data/lib/puppet/pops/types/type_factory.rb +17 -0
  246. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  247. data/lib/puppet/pops/types/types.rb +7 -32
  248. data/lib/puppet/pops/validation/checker4_0.rb +23 -33
  249. data/lib/puppet/pops/validation/tasks_checker.rb +47 -6
  250. data/lib/puppet/pops/validation/validator_factory_4_0.rb +7 -10
  251. data/lib/puppet/property.rb +1 -1
  252. data/lib/puppet/property/ensure.rb +1 -1
  253. data/lib/puppet/provider.rb +14 -2
  254. data/lib/puppet/provider/exec.rb +58 -59
  255. data/lib/puppet/provider/file/posix.rb +0 -5
  256. data/lib/puppet/provider/file/windows.rb +2 -50
  257. data/lib/puppet/provider/group/aix.rb +2 -18
  258. data/lib/puppet/provider/group/groupadd.rb +19 -19
  259. data/lib/puppet/provider/group/windows_adsi.rb +4 -11
  260. data/lib/puppet/provider/nameservice.rb +28 -11
  261. data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
  262. data/lib/puppet/provider/nameservice/pw.rb +2 -2
  263. data/lib/puppet/provider/package.rb +0 -2
  264. data/lib/puppet/provider/package/aix.rb +2 -17
  265. data/lib/puppet/provider/package/apt.rb +3 -14
  266. data/lib/puppet/provider/package/dnf.rb +3 -3
  267. data/lib/puppet/provider/package/dpkg.rb +7 -18
  268. data/lib/puppet/provider/package/fink.rb +3 -20
  269. data/lib/puppet/provider/package/gem.rb +43 -105
  270. data/lib/puppet/provider/package/openbsd.rb +2 -14
  271. data/lib/puppet/provider/package/pip.rb +108 -160
  272. data/lib/puppet/provider/package/pip3.rb +1 -1
  273. data/lib/puppet/provider/package/pkg.rb +5 -18
  274. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  275. data/lib/puppet/provider/package/pkgng.rb +4 -16
  276. data/lib/puppet/provider/package/portage.rb +6 -6
  277. data/lib/puppet/provider/package/puppet_gem.rb +2 -7
  278. data/lib/puppet/provider/package/rpm.rb +33 -82
  279. data/lib/puppet/provider/package/windows.rb +2 -6
  280. data/lib/puppet/provider/package/windows/exe_package.rb +10 -16
  281. data/lib/puppet/provider/package/windows/msi_package.rb +0 -8
  282. data/lib/puppet/provider/package/windows/package.rb +2 -10
  283. data/lib/puppet/provider/package/yum.rb +25 -37
  284. data/lib/puppet/provider/package/zypper.rb +0 -1
  285. data/lib/puppet/provider/parsedfile.rb +5 -26
  286. data/lib/puppet/provider/service/base.rb +1 -1
  287. data/lib/puppet/provider/service/daemontools.rb +9 -9
  288. data/lib/puppet/provider/service/debian.rb +1 -0
  289. data/lib/puppet/provider/service/launchd.rb +8 -39
  290. data/lib/puppet/provider/service/openbsd.rb +1 -1
  291. data/lib/puppet/provider/service/rcng.rb +2 -2
  292. data/lib/puppet/provider/service/runit.rb +8 -2
  293. data/lib/puppet/provider/service/smf.rb +0 -54
  294. data/lib/puppet/provider/service/systemd.rb +24 -35
  295. data/lib/puppet/provider/service/upstart.rb +1 -3
  296. data/lib/puppet/provider/service/windows.rb +3 -23
  297. data/lib/puppet/provider/user/aix.rb +2 -48
  298. data/lib/puppet/provider/user/directoryservice.rb +8 -45
  299. data/lib/puppet/provider/user/hpux.rb +1 -1
  300. data/lib/puppet/provider/user/pw.rb +3 -12
  301. data/lib/puppet/provider/user/user_role_add.rb +1 -5
  302. data/lib/puppet/provider/user/useradd.rb +44 -74
  303. data/lib/puppet/provider/user/windows_adsi.rb +0 -7
  304. data/lib/puppet/reference/indirection.rb +2 -2
  305. data/lib/puppet/reference/metaparameter.rb +3 -1
  306. data/lib/puppet/reference/providers.rb +1 -1
  307. data/lib/puppet/reference/type.rb +9 -3
  308. data/lib/puppet/reports.rb +3 -3
  309. data/lib/puppet/resource.rb +22 -22
  310. data/lib/puppet/resource/catalog.rb +8 -14
  311. data/lib/puppet/resource/type.rb +1 -10
  312. data/lib/puppet/rest/client.rb +83 -0
  313. data/lib/puppet/rest/errors.rb +14 -0
  314. data/lib/puppet/rest/response.rb +34 -0
  315. data/lib/puppet/rest/route.rb +84 -0
  316. data/lib/puppet/rest/routes.rb +154 -0
  317. data/lib/puppet/rest/ssl_context.rb +13 -0
  318. data/lib/puppet/settings.rb +9 -54
  319. data/lib/puppet/settings/config_file.rb +1 -2
  320. data/lib/puppet/settings/environment_conf.rb +0 -1
  321. data/lib/puppet/settings/file_setting.rb +1 -1
  322. data/lib/puppet/settings/server_list_setting.rb +0 -9
  323. data/lib/puppet/ssl.rb +0 -1
  324. data/lib/puppet/ssl/base.rb +1 -9
  325. data/lib/puppet/ssl/certificate.rb +7 -4
  326. data/lib/puppet/ssl/certificate_request.rb +6 -14
  327. data/lib/puppet/ssl/certificate_request_attributes.rb +1 -1
  328. data/lib/puppet/ssl/host.rb +400 -174
  329. data/lib/puppet/ssl/key.rb +1 -5
  330. data/lib/puppet/ssl/oids.rb +3 -3
  331. data/lib/puppet/ssl/validator/default_validator.rb +33 -49
  332. data/lib/puppet/test/test_helper.rb +12 -18
  333. data/lib/puppet/transaction.rb +7 -12
  334. data/lib/puppet/transaction/event.rb +37 -14
  335. data/lib/puppet/transaction/event_manager.rb +3 -11
  336. data/lib/puppet/transaction/persistence.rb +1 -1
  337. data/lib/puppet/transaction/report.rb +1 -1
  338. data/lib/puppet/transaction/resource_harness.rb +2 -5
  339. data/lib/puppet/type.rb +7 -10
  340. data/lib/puppet/type/exec.rb +16 -50
  341. data/lib/puppet/type/file.rb +7 -16
  342. data/lib/puppet/type/file/content.rb +2 -3
  343. data/lib/puppet/type/file/data_sync.rb +1 -5
  344. data/lib/puppet/type/file/mode.rb +2 -7
  345. data/lib/puppet/type/file/source.rb +2 -1
  346. data/lib/puppet/type/filebucket.rb +8 -12
  347. data/lib/puppet/type/group.rb +3 -33
  348. data/lib/puppet/type/notify.rb +2 -3
  349. data/lib/puppet/type/package.rb +18 -154
  350. data/lib/puppet/type/resources.rb +2 -12
  351. data/lib/puppet/type/schedule.rb +34 -96
  352. data/lib/puppet/type/service.rb +10 -9
  353. data/lib/puppet/type/tidy.rb +1 -1
  354. data/lib/puppet/type/user.rb +30 -14
  355. data/lib/puppet/util.rb +28 -52
  356. data/lib/puppet/util/autoload.rb +62 -56
  357. data/lib/puppet/util/character_encoding.rb +0 -22
  358. data/lib/puppet/util/classgen.rb +0 -6
  359. data/lib/puppet/util/command_line.rb +4 -7
  360. data/lib/puppet/util/command_line/trollop.rb +1 -1
  361. data/lib/puppet/util/connection.rb +74 -0
  362. data/lib/puppet/util/execution.rb +7 -22
  363. data/lib/puppet/util/feature.rb +63 -41
  364. data/lib/puppet/util/fileparsing.rb +27 -5
  365. data/lib/puppet/util/filetype.rb +8 -56
  366. data/lib/puppet/util/http_proxy.rb +18 -27
  367. data/lib/puppet/util/instance_loader.rb +3 -21
  368. data/lib/puppet/util/json.rb +0 -8
  369. data/lib/puppet/util/ldap/connection.rb +7 -7
  370. data/lib/puppet/util/log.rb +3 -8
  371. data/lib/puppet/util/log/destinations.rb +13 -5
  372. data/lib/puppet/util/logging.rb +19 -31
  373. data/lib/puppet/util/metric.rb +2 -2
  374. data/lib/puppet/util/monkey_patches.rb +1 -1
  375. data/lib/puppet/util/network_device/base.rb +1 -1
  376. data/lib/puppet/util/pidlock.rb +3 -23
  377. data/lib/puppet/util/platform.rb +3 -0
  378. data/lib/puppet/util/plist.rb +0 -6
  379. data/lib/puppet/util/posix.rb +0 -15
  380. data/lib/puppet/util/provider_features.rb +6 -7
  381. data/lib/puppet/util/rdoc.rb +2 -2
  382. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  383. data/lib/puppet/util/reference.rb +8 -7
  384. data/lib/puppet/util/resource_template.rb +1 -1
  385. data/lib/puppet/util/rubygems.rb +1 -13
  386. data/lib/puppet/util/run_mode.rb +1 -1
  387. data/lib/puppet/util/selinux.rb +3 -9
  388. data/lib/puppet/util/ssl.rb +40 -1
  389. data/lib/puppet/util/storage.rb +1 -13
  390. data/lib/puppet/util/suidmanager.rb +7 -5
  391. data/lib/puppet/util/tag_set.rb +1 -1
  392. data/lib/puppet/util/tagging.rb +1 -1
  393. data/lib/puppet/util/windows.rb +15 -0
  394. data/lib/puppet/util/windows/adsi.rb +7 -116
  395. data/lib/puppet/util/windows/api_types.rb +33 -46
  396. data/lib/puppet/util/windows/eventlog.rb +6 -1
  397. data/lib/puppet/util/windows/principal.rb +6 -8
  398. data/lib/puppet/util/windows/process.rb +3 -94
  399. data/lib/puppet/util/windows/registry.rb +14 -46
  400. data/lib/puppet/util/windows/security.rb +2 -40
  401. data/lib/puppet/util/windows/service.rb +72 -431
  402. data/lib/puppet/util/windows/sid.rb +3 -4
  403. data/lib/puppet/util/windows/user.rb +9 -17
  404. data/lib/puppet/util/yaml.rb +41 -5
  405. data/lib/puppet/vendor.rb +1 -1
  406. data/lib/puppet/version.rb +1 -1
  407. data/lib/puppet_pal.rb +246 -23
  408. data/locales/ja/puppet.po +11128 -0
  409. data/locales/puppet.pot +1321 -2527
  410. data/man/man5/puppet.conf.5 +31 -191
  411. data/man/man8/puppet-agent.8 +2 -2
  412. data/man/man8/puppet-apply.8 +1 -1
  413. data/man/man8/puppet-catalog.8 +1 -1
  414. data/man/man8/puppet-config.8 +3 -3
  415. data/man/man8/puppet-describe.8 +1 -1
  416. data/man/man8/puppet-device.8 +19 -23
  417. data/man/man8/puppet-doc.8 +1 -1
  418. data/man/man8/puppet-epp.8 +1 -1
  419. data/man/man8/puppet-facts.8 +1 -1
  420. data/man/man8/puppet-filebucket.8 +2 -21
  421. data/man/man8/puppet-generate.8 +1 -1
  422. data/man/man8/puppet-help.8 +1 -1
  423. data/man/man8/puppet-key.8 +1 -7
  424. data/man/man8/puppet-lookup.8 +1 -1
  425. data/man/man8/puppet-man.8 +1 -1
  426. data/man/man8/puppet-module.8 +10 -100
  427. data/man/man8/puppet-node.8 +4 -7
  428. data/man/man8/puppet-parser.8 +1 -1
  429. data/man/man8/puppet-plugin.8 +1 -1
  430. data/man/man8/puppet-report.8 +1 -1
  431. data/man/man8/puppet-resource.8 +1 -1
  432. data/man/man8/puppet-script.8 +1 -1
  433. data/man/man8/puppet-ssl.8 +28 -0
  434. data/man/man8/puppet-status.8 +1 -1
  435. data/man/man8/puppet.8 +12 -3
  436. data/spec/fixtures/unit/functions/hiera/hiera/backend/hieraspec_backend.rb +22 -0
  437. data/spec/fixtures/unit/functions/lookup/hiera/backend/custom_backend.rb +18 -0
  438. data/spec/fixtures/unit/functions/lookup/hiera/backend/other_backend.rb +7 -0
  439. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +6 -6
  440. data/spec/fixtures/unit/provider/package/pkgng/pkg.info +0 -1
  441. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +0 -2
  442. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +0 -9
  443. data/spec/integration/agent/logging_spec.rb +9 -7
  444. data/spec/integration/application/apply_spec.rb +31 -26
  445. data/spec/integration/application/doc_spec.rb +2 -1
  446. data/spec/integration/application/lookup_spec.rb +5 -5
  447. data/spec/integration/configurer_spec.rb +8 -76
  448. data/spec/integration/data_binding_spec.rb +1 -1
  449. data/spec/integration/defaults_spec.rb +13 -16
  450. data/spec/integration/directory_environments_spec.rb +1 -1
  451. data/spec/integration/faces/config_spec.rb +4 -3
  452. data/spec/integration/faces/documentation_spec.rb +1 -0
  453. data/spec/integration/faces/plugin_spec.rb +49 -29
  454. data/spec/integration/file_bucket/file_spec.rb +4 -19
  455. data/spec/integration/file_serving/content_spec.rb +1 -0
  456. data/spec/integration/file_serving/fileset_spec.rb +1 -0
  457. data/spec/integration/file_serving/metadata_spec.rb +1 -0
  458. data/spec/integration/file_serving/terminus_helper_spec.rb +1 -0
  459. data/spec/integration/file_system/uniquefile_spec.rb +26 -29
  460. data/spec/integration/indirector/catalog/compiler_spec.rb +11 -10
  461. data/spec/integration/indirector/direct_file_server_spec.rb +1 -1
  462. data/spec/integration/indirector/facts/facter_spec.rb +8 -22
  463. data/spec/integration/indirector/file_content/file_server_spec.rb +8 -7
  464. data/spec/integration/indirector/file_metadata/file_server_spec.rb +8 -7
  465. data/spec/integration/network/authconfig_spec.rb +24 -23
  466. data/spec/integration/network/formats_spec.rb +1 -0
  467. data/spec/integration/network/http/api/indirected_routes_spec.rb +6 -34
  468. data/spec/integration/node/environment_spec.rb +2 -1
  469. data/spec/integration/node/facts_spec.rb +10 -9
  470. data/spec/integration/node_spec.rb +7 -10
  471. data/spec/integration/parser/catalog_spec.rb +8 -6
  472. data/spec/integration/parser/collection_spec.rb +9 -4
  473. data/spec/integration/parser/compiler_spec.rb +7 -25
  474. data/spec/integration/parser/scope_spec.rb +1 -1
  475. data/spec/integration/parser/undef_param_spec.rb +1 -1
  476. data/spec/integration/provider/service/init_spec.rb +9 -6
  477. data/spec/integration/provider/service/systemd_spec.rb +14 -11
  478. data/spec/integration/provider/service/windows_spec.rb +11 -8
  479. data/spec/integration/reference/providers_spec.rb +7 -0
  480. data/spec/integration/reports_spec.rb +2 -1
  481. data/spec/integration/resource/catalog_spec.rb +17 -14
  482. data/spec/integration/resource/type_collection_spec.rb +5 -4
  483. data/spec/integration/ssl/certificate_request_spec.rb +1 -2
  484. data/spec/integration/ssl/host_spec.rb +17 -24
  485. data/spec/integration/ssl/key_spec.rb +7 -2
  486. data/spec/integration/test/test_helper_spec.rb +32 -0
  487. data/spec/integration/transaction/report_spec.rb +14 -9
  488. data/spec/integration/type/exec_spec.rb +2 -1
  489. data/spec/integration/type/file_spec.rb +38 -46
  490. data/spec/integration/type/package_spec.rb +25 -21
  491. data/spec/integration/type/tidy_spec.rb +2 -1
  492. data/spec/integration/type_spec.rb +1 -0
  493. data/spec/integration/util/autoload_spec.rb +11 -7
  494. data/spec/integration/util/execution_spec.rb +5 -32
  495. data/spec/integration/util/rdoc/parser_spec.rb +14 -23
  496. data/spec/integration/util/settings_spec.rb +2 -1
  497. data/spec/integration/util/windows/adsi_spec.rb +8 -11
  498. data/spec/integration/util/windows/principal_spec.rb +2 -1
  499. data/spec/integration/util/windows/process_spec.rb +9 -7
  500. data/spec/integration/util/windows/registry_spec.rb +46 -127
  501. data/spec/integration/util/windows/security_spec.rb +15 -16
  502. data/spec/integration/util/windows/user_spec.rb +29 -66
  503. data/spec/integration/util_spec.rb +10 -7
  504. data/spec/lib/matchers/json.rb +12 -18
  505. data/{lib/puppet/ssl → spec/lib/puppet}/certificate_factory.rb +5 -6
  506. data/spec/lib/puppet/test_ca.rb +109 -0
  507. data/spec/lib/puppet_spec/compiler.rb +28 -1
  508. data/spec/lib/puppet_spec/files.rb +29 -23
  509. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +1 -1
  510. data/spec/lib/puppet_spec/modules.rb +11 -1
  511. data/spec/lib/puppet_spec/scope.rb +2 -1
  512. data/spec/lib/puppet_spec/ssl.rb +265 -0
  513. data/spec/lib/puppet_spec/validators.rb +37 -0
  514. data/spec/shared_behaviours/all_parsedfile_providers.rb +1 -1
  515. data/spec/shared_behaviours/file_server_terminus.rb +9 -8
  516. data/spec/shared_behaviours/file_serving.rb +8 -6
  517. data/spec/shared_behaviours/file_serving_model.rb +5 -22
  518. data/spec/shared_behaviours/hiera_indirections.rb +4 -3
  519. data/spec/shared_behaviours/iterative_functions.rb +1 -0
  520. data/spec/shared_behaviours/memory_terminus.rb +2 -2
  521. data/spec/shared_behaviours/path_parameters.rb +1 -1
  522. data/spec/shared_contexts/types_setup.rb +0 -2
  523. data/spec/shared_examples/rhel_package_provider.rb +70 -112
  524. data/spec/spec_helper.rb +1 -15
  525. data/spec/unit/agent/disabler_spec.rb +5 -4
  526. data/spec/unit/agent/locker_spec.rb +13 -12
  527. data/spec/unit/agent_spec.rb +102 -105
  528. data/spec/unit/application/agent_spec.rb +95 -114
  529. data/spec/unit/application/apply_spec.rb +92 -119
  530. data/spec/unit/application/config_spec.rb +1 -0
  531. data/spec/unit/application/describe_spec.rb +7 -6
  532. data/spec/unit/application/device_spec.rb +180 -181
  533. data/spec/unit/application/doc_spec.rb +46 -44
  534. data/spec/unit/application/face_base_spec.rb +62 -61
  535. data/spec/unit/application/facts_spec.rb +4 -3
  536. data/spec/unit/application/filebucket_spec.rb +74 -66
  537. data/spec/unit/application/indirection_base_spec.rb +6 -8
  538. data/spec/unit/application/lookup_spec.rb +44 -37
  539. data/spec/unit/application/resource_spec.rb +48 -42
  540. data/spec/unit/application/ssl_spec.rb +322 -0
  541. data/spec/unit/application_spec.rb +108 -90
  542. data/spec/unit/capability_spec.rb +15 -16
  543. data/spec/unit/{ssl/certificate_factory_spec.rb → certificate_factory_spec.rb} +13 -20
  544. data/spec/unit/configurer/downloader_spec.rb +22 -31
  545. data/spec/unit/configurer/fact_handler_spec.rb +7 -2
  546. data/spec/unit/configurer/plugin_handler_spec.rb +8 -41
  547. data/spec/unit/configurer_spec.rb +475 -520
  548. data/spec/unit/confine/exists_spec.rb +15 -17
  549. data/spec/unit/confine/false_spec.rb +6 -32
  550. data/spec/unit/confine/feature_spec.rb +5 -7
  551. data/spec/unit/confine/true_spec.rb +6 -32
  552. data/spec/unit/confine/variable_spec.rb +15 -14
  553. data/spec/unit/confine_collection_spec.rb +29 -28
  554. data/spec/unit/confine_spec.rb +14 -13
  555. data/spec/unit/confiner_spec.rb +11 -10
  556. data/spec/unit/context/trusted_information_spec.rb +4 -3
  557. data/spec/unit/daemon_spec.rb +38 -35
  558. data/spec/unit/data_providers/function_data_provider_spec.rb +1 -0
  559. data/spec/unit/data_providers/hiera_data_provider_spec.rb +1 -0
  560. data/spec/unit/datatypes_spec.rb +4 -3
  561. data/spec/unit/defaults_spec.rb +61 -32
  562. data/spec/unit/environments_spec.rb +7 -7
  563. data/spec/unit/etc_spec.rb +29 -52
  564. data/spec/unit/external/pson_spec.rb +1 -0
  565. data/spec/unit/face/catalog_spec.rb +1 -0
  566. data/spec/unit/face/config_spec.rb +35 -31
  567. data/spec/unit/face/epp_face_spec.rb +4 -3
  568. data/spec/unit/face/facts_spec.rb +6 -14
  569. data/spec/unit/face/generate_spec.rb +5 -4
  570. data/spec/unit/face/help_spec.rb +8 -7
  571. data/spec/unit/face/key_spec.rb +1 -0
  572. data/spec/unit/face/man_spec.rb +2 -1
  573. data/spec/unit/face/module/install_spec.rb +5 -3
  574. data/spec/unit/face/module/list_spec.rb +12 -62
  575. data/spec/unit/face/module/search_spec.rb +9 -11
  576. data/spec/unit/face/module/uninstall_spec.rb +8 -4
  577. data/spec/unit/face/node_spec.rb +30 -52
  578. data/spec/unit/face/parser_spec.rb +3 -3
  579. data/spec/unit/face/plugin_spec.rb +9 -44
  580. data/spec/unit/face/status_spec.rb +1 -0
  581. data/spec/unit/file_bucket/dipper_spec.rb +24 -28
  582. data/spec/unit/file_bucket/file_spec.rb +2 -0
  583. data/spec/unit/file_serving/base_spec.rb +18 -20
  584. data/spec/unit/file_serving/configuration/parser_spec.rb +28 -27
  585. data/spec/unit/file_serving/configuration_spec.rb +66 -63
  586. data/spec/unit/file_serving/content_spec.rb +11 -10
  587. data/spec/unit/file_serving/fileset_spec.rb +58 -63
  588. data/spec/unit/file_serving/http_metadata_spec.rb +7 -8
  589. data/spec/unit/file_serving/metadata_spec.rb +40 -40
  590. data/spec/unit/file_serving/mount/file_spec.rb +32 -31
  591. data/spec/unit/file_serving/mount/locales_spec.rb +26 -25
  592. data/spec/unit/file_serving/mount/modules_spec.rb +15 -14
  593. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +26 -25
  594. data/spec/unit/file_serving/mount/plugins_spec.rb +26 -25
  595. data/spec/unit/file_serving/mount/tasks_spec.rb +15 -14
  596. data/spec/unit/file_serving/mount_spec.rb +1 -0
  597. data/spec/unit/file_serving/terminus_helper_spec.rb +42 -37
  598. data/spec/unit/file_serving/terminus_selector_spec.rb +13 -12
  599. data/spec/unit/file_system/path_pattern_spec.rb +1 -1
  600. data/spec/unit/file_system/uniquefile_spec.rb +6 -17
  601. data/spec/unit/file_system_spec.rb +9 -6
  602. data/spec/unit/forge/errors_spec.rb +1 -1
  603. data/spec/unit/forge/forge_spec.rb +16 -15
  604. data/spec/unit/forge/module_release_spec.rb +18 -18
  605. data/spec/unit/forge/repository_spec.rb +30 -27
  606. data/spec/unit/forge_spec.rb +11 -15
  607. data/spec/unit/functions/abs_spec.rb +70 -0
  608. data/spec/unit/functions/binary_file_spec.rb +3 -3
  609. data/spec/unit/functions/call_spec.rb +59 -5
  610. data/spec/unit/functions/camelcase_spec.rb +34 -0
  611. data/spec/unit/functions/capitalize_spec.rb +34 -0
  612. data/spec/unit/functions/ceiling_spec.rb +65 -0
  613. data/spec/unit/functions/chomp_spec.rb +46 -0
  614. data/spec/unit/functions/chop_spec.rb +38 -0
  615. data/spec/unit/functions/compare_spec.rb +147 -0
  616. data/spec/unit/functions/contain_spec.rb +2 -0
  617. data/spec/unit/functions/convert_to_spec.rb +3 -0
  618. data/spec/unit/functions/defined_spec.rb +1 -0
  619. data/spec/unit/functions/downcase_spec.rb +34 -0
  620. data/spec/unit/functions/epp_spec.rb +2 -2
  621. data/spec/unit/functions/filter_spec.rb +4 -4
  622. data/spec/unit/functions/find_file_spec.rb +7 -7
  623. data/spec/unit/functions/floor_spec.rb +65 -0
  624. data/spec/unit/functions/get_spec.rb +135 -0
  625. data/spec/unit/functions/getvar_spec.rb +121 -0
  626. data/spec/unit/functions/hiera_spec.rb +14 -48
  627. data/spec/unit/functions/include_spec.rb +4 -0
  628. data/spec/unit/functions/lookup_fixture_spec.rb +1 -0
  629. data/spec/unit/functions/lookup_spec.rb +37 -62
  630. data/spec/unit/functions/lstrip_spec.rb +30 -0
  631. data/spec/unit/functions/match_spec.rb +3 -4
  632. data/spec/unit/functions/max_spec.rb +129 -0
  633. data/spec/unit/functions/min_spec.rb +129 -0
  634. data/spec/unit/functions/module_directory_spec.rb +12 -12
  635. data/spec/unit/functions/new_spec.rb +0 -15
  636. data/spec/unit/functions/regsubst_spec.rb +3 -4
  637. data/spec/unit/functions/require_spec.rb +3 -0
  638. data/spec/unit/functions/round_spec.rb +41 -0
  639. data/spec/unit/functions/rstrip_spec.rb +30 -0
  640. data/spec/unit/functions/shared.rb +8 -5
  641. data/spec/unit/functions/size_spec.rb +50 -0
  642. data/spec/unit/functions/sort_spec.rb +79 -0
  643. data/spec/unit/functions/split_spec.rb +3 -4
  644. data/spec/unit/functions/strip_spec.rb +30 -0
  645. data/spec/unit/functions/upcase_spec.rb +34 -0
  646. data/spec/unit/functions/versioncmp_spec.rb +4 -4
  647. data/spec/unit/functions4_spec.rb +78 -51
  648. data/spec/unit/gettext/config_spec.rb +4 -4
  649. data/spec/unit/gettext/module_loading_spec.rb +7 -7
  650. data/spec/unit/graph/rb_tree_map_spec.rb +2 -0
  651. data/spec/unit/graph/relationship_graph_spec.rb +2 -1
  652. data/spec/unit/graph/simple_graph_spec.rb +52 -11
  653. data/spec/unit/hiera/scope_spec.rb +0 -7
  654. data/spec/unit/hiera_puppet_spec.rb +20 -20
  655. data/spec/unit/indirector/catalog/compiler_spec.rb +166 -183
  656. data/spec/unit/indirector/catalog/json_spec.rb +2 -1
  657. data/spec/unit/indirector/catalog/msgpack_spec.rb +1 -0
  658. data/spec/unit/indirector/catalog/rest_spec.rb +1 -0
  659. data/spec/unit/indirector/catalog/store_configs_spec.rb +1 -0
  660. data/spec/unit/indirector/catalog/yaml_spec.rb +1 -0
  661. data/spec/unit/indirector/certificate/file_spec.rb +1 -8
  662. data/spec/unit/indirector/certificate/rest_spec.rb +10 -8
  663. data/spec/unit/indirector/certificate_request/file_spec.rb +1 -0
  664. data/spec/unit/indirector/certificate_request/rest_spec.rb +1 -0
  665. data/spec/unit/indirector/direct_file_server_spec.rb +49 -57
  666. data/spec/unit/indirector/envelope_spec.rb +2 -1
  667. data/spec/unit/indirector/exec_spec.rb +31 -26
  668. data/spec/unit/indirector/face_spec.rb +9 -9
  669. data/spec/unit/indirector/facts/facter_spec.rb +43 -37
  670. data/spec/unit/indirector/facts/network_device_spec.rb +9 -8
  671. data/spec/unit/indirector/facts/rest_spec.rb +8 -7
  672. data/spec/unit/indirector/facts/store_configs_spec.rb +1 -0
  673. data/spec/unit/indirector/facts/yaml_spec.rb +90 -77
  674. data/spec/unit/indirector/file_bucket_file/file_spec.rb +13 -9
  675. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +1 -0
  676. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +5 -4
  677. data/spec/unit/indirector/file_content/file_server_spec.rb +1 -0
  678. data/spec/unit/indirector/file_content/file_spec.rb +1 -0
  679. data/spec/unit/indirector/file_content/rest_spec.rb +1 -0
  680. data/spec/unit/indirector/file_content/selector_spec.rb +1 -0
  681. data/spec/unit/indirector/file_metadata/file_server_spec.rb +1 -0
  682. data/spec/unit/indirector/file_metadata/file_spec.rb +13 -12
  683. data/spec/unit/indirector/file_metadata/rest_spec.rb +1 -0
  684. data/spec/unit/indirector/file_metadata/selector_spec.rb +1 -0
  685. data/spec/unit/indirector/file_server_spec.rb +145 -145
  686. data/spec/unit/indirector/indirection_spec.rb +226 -249
  687. data/spec/unit/indirector/json_spec.rb +9 -7
  688. data/spec/unit/indirector/key/file_spec.rb +22 -38
  689. data/spec/unit/indirector/memory_spec.rb +7 -6
  690. data/spec/unit/indirector/msgpack_spec.rb +9 -7
  691. data/spec/unit/indirector/node/exec_spec.rb +43 -22
  692. data/spec/unit/indirector/node/memory_spec.rb +4 -2
  693. data/spec/unit/indirector/node/msgpack_spec.rb +1 -0
  694. data/spec/unit/indirector/node/plain_spec.rb +4 -2
  695. data/spec/unit/indirector/node/rest_spec.rb +1 -0
  696. data/spec/unit/indirector/node/store_configs_spec.rb +1 -0
  697. data/spec/unit/indirector/node/yaml_spec.rb +1 -0
  698. data/spec/unit/indirector/none_spec.rb +5 -5
  699. data/spec/unit/indirector/plain_spec.rb +8 -7
  700. data/spec/unit/indirector/report/msgpack_spec.rb +1 -0
  701. data/spec/unit/indirector/report/processor_spec.rb +22 -21
  702. data/spec/unit/indirector/report/rest_spec.rb +12 -11
  703. data/spec/unit/indirector/report/yaml_spec.rb +1 -0
  704. data/spec/unit/indirector/request_spec.rb +18 -15
  705. data/spec/unit/indirector/resource/ral_spec.rb +55 -47
  706. data/spec/unit/indirector/resource/store_configs_spec.rb +1 -0
  707. data/spec/unit/indirector/rest_spec.rb +110 -113
  708. data/spec/unit/indirector/ssl_file_spec.rb +100 -119
  709. data/spec/unit/indirector/status/local_spec.rb +1 -0
  710. data/spec/unit/indirector/status/rest_spec.rb +1 -0
  711. data/spec/unit/indirector/store_configs_spec.rb +1 -0
  712. data/spec/unit/indirector/terminus_spec.rb +30 -32
  713. data/spec/unit/indirector/yaml_spec.rb +90 -68
  714. data/spec/unit/indirector_spec.rb +2 -1
  715. data/spec/unit/info_service_spec.rb +144 -10
  716. data/spec/unit/interface/action_builder_spec.rb +1 -0
  717. data/spec/unit/interface/action_manager_spec.rb +1 -0
  718. data/spec/unit/interface/action_spec.rb +3 -2
  719. data/spec/unit/interface/documentation_spec.rb +1 -0
  720. data/spec/unit/interface/face_collection_spec.rb +12 -19
  721. data/spec/unit/interface_spec.rb +3 -3
  722. data/spec/unit/man_spec.rb +4 -3
  723. data/spec/unit/module_spec.rb +52 -102
  724. data/spec/unit/module_tool/applications/installer_spec.rb +13 -12
  725. data/spec/unit/module_tool/applications/searcher_spec.rb +3 -3
  726. data/spec/unit/module_tool/applications/uninstaller_spec.rb +2 -1
  727. data/spec/unit/module_tool/applications/unpacker_spec.rb +13 -13
  728. data/spec/unit/module_tool/applications/upgrader_spec.rb +6 -6
  729. data/spec/unit/module_tool/install_directory_spec.rb +8 -8
  730. data/spec/unit/module_tool/installed_modules_spec.rb +3 -3
  731. data/spec/unit/module_tool/tar/gnu_spec.rb +6 -6
  732. data/spec/unit/module_tool/tar/mini_spec.rb +12 -12
  733. data/spec/unit/module_tool/tar_spec.rb +13 -12
  734. data/spec/unit/module_tool_spec.rb +12 -29
  735. data/spec/unit/network/auth_config_parser_spec.rb +13 -11
  736. data/spec/unit/network/authconfig_spec.rb +18 -17
  737. data/spec/unit/network/authorization_spec.rb +5 -4
  738. data/spec/unit/network/authstore_spec.rb +1 -0
  739. data/spec/unit/network/format_handler_spec.rb +1 -0
  740. data/spec/unit/network/format_spec.rb +10 -9
  741. data/spec/unit/network/format_support_spec.rb +29 -28
  742. data/spec/unit/network/formats_spec.rb +31 -4
  743. data/spec/unit/network/http/api/indirected_routes_spec.rb +41 -51
  744. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +7 -9
  745. data/spec/unit/network/http/api/master/v3/environment_spec.rb +1 -2
  746. data/spec/unit/network/http/api/master/v3/environments_spec.rb +7 -6
  747. data/spec/unit/network/http/api_spec.rb +2 -26
  748. data/spec/unit/network/http/compression_spec.rb +28 -24
  749. data/spec/unit/network/http/connection_spec.rb +122 -72
  750. data/spec/unit/network/http/factory_spec.rb +11 -40
  751. data/spec/unit/network/http/handler_spec.rb +18 -9
  752. data/spec/unit/network/http/nocache_pool_spec.rb +7 -6
  753. data/spec/unit/network/http/pool_spec.rb +29 -60
  754. data/spec/unit/network/http/request_spec.rb +2 -0
  755. data/spec/unit/network/http/response_spec.rb +13 -11
  756. data/spec/unit/network/http/route_spec.rb +1 -0
  757. data/spec/unit/network/http/session_spec.rb +2 -1
  758. data/spec/unit/network/http/site_spec.rb +1 -0
  759. data/spec/unit/network/http_pool_spec.rb +9 -18
  760. data/spec/unit/network/http_spec.rb +1 -0
  761. data/spec/unit/network/resolver_spec.rb +104 -28
  762. data/spec/unit/network/rights_spec.rb +53 -52
  763. data/spec/unit/node/environment_spec.rb +17 -18
  764. data/spec/unit/node/facts_spec.rb +21 -6
  765. data/spec/unit/node_spec.rb +23 -17
  766. data/spec/unit/other/selinux_spec.rb +1 -71
  767. data/spec/unit/parameter/boolean_spec.rb +2 -1
  768. data/spec/unit/parameter/package_options_spec.rb +2 -1
  769. data/spec/unit/parameter/path_spec.rb +1 -0
  770. data/spec/unit/parameter/value_collection_spec.rb +1 -0
  771. data/spec/unit/parameter/value_spec.rb +1 -0
  772. data/spec/unit/parameter_spec.rb +9 -9
  773. data/spec/unit/parser/ast/block_expression_spec.rb +8 -6
  774. data/spec/unit/parser/ast/leaf_spec.rb +21 -20
  775. data/spec/unit/parser/compiler_spec.rb +96 -84
  776. data/spec/unit/parser/environment_compiler_spec.rb +16 -23
  777. data/spec/unit/parser/files_spec.rb +1 -0
  778. data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
  779. data/spec/unit/parser/functions/digest_spec.rb +1 -4
  780. data/spec/unit/parser/functions/fail_spec.rb +2 -5
  781. data/spec/unit/parser/functions/file_spec.rb +14 -17
  782. data/spec/unit/parser/functions/fqdn_rand_spec.rb +6 -5
  783. data/spec/unit/parser/functions/generate_spec.rb +37 -38
  784. data/spec/unit/parser/functions/inline_template_spec.rb +1 -4
  785. data/spec/unit/parser/functions/regsubst_spec.rb +1 -4
  786. data/spec/unit/parser/functions/scanf_spec.rb +1 -4
  787. data/spec/unit/parser/functions/shellquote_spec.rb +1 -0
  788. data/spec/unit/parser/functions/split_spec.rb +1 -4
  789. data/spec/unit/parser/functions/sprintf_spec.rb +1 -4
  790. data/spec/unit/parser/functions/tag_spec.rb +2 -5
  791. data/spec/unit/parser/functions/tagged_spec.rb +3 -6
  792. data/spec/unit/parser/functions/template_spec.rb +13 -17
  793. data/spec/unit/parser/functions/versioncmp_spec.rb +2 -5
  794. data/spec/unit/parser/functions_spec.rb +29 -3
  795. data/spec/unit/parser/relationship_spec.rb +1 -0
  796. data/spec/unit/parser/resource/param_spec.rb +1 -1
  797. data/spec/unit/parser/resource_spec.rb +42 -42
  798. data/spec/unit/parser/scope_spec.rb +35 -39
  799. data/spec/unit/parser/templatewrapper_spec.rb +12 -11
  800. data/spec/unit/parser/type_loader_spec.rb +19 -17
  801. data/spec/unit/pops/adaptable_spec.rb +1 -0
  802. data/spec/unit/pops/benchmark_spec.rb +1 -0
  803. data/spec/unit/pops/evaluator/access_ops_spec.rb +1 -0
  804. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +11 -0
  805. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -0
  806. data/spec/unit/pops/evaluator/collections_ops_spec.rb +1 -0
  807. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +1 -0
  808. data/spec/unit/pops/evaluator/conditionals_spec.rb +1 -0
  809. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +78 -18
  810. data/spec/unit/pops/evaluator/logical_ops_spec.rb +1 -0
  811. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +5 -4
  812. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +1 -0
  813. data/spec/unit/pops/evaluator/variables_spec.rb +1 -0
  814. data/spec/unit/pops/factory_spec.rb +4 -3
  815. data/spec/unit/pops/issues_spec.rb +20 -19
  816. data/spec/unit/pops/loaders/dependency_loader_spec.rb +2 -2
  817. data/spec/unit/pops/loaders/loader_spec.rb +12 -36
  818. data/spec/unit/pops/loaders/loaders_spec.rb +57 -54
  819. data/spec/unit/pops/loaders/module_loaders_spec.rb +35 -3
  820. data/spec/unit/pops/loaders/static_loader_spec.rb +0 -36
  821. data/spec/unit/pops/lookup/context_spec.rb +1 -0
  822. data/spec/unit/pops/lookup/interpolation_spec.rb +3 -2
  823. data/spec/unit/pops/merge_strategy_spec.rb +1 -0
  824. data/spec/unit/pops/migration_spec.rb +5 -3
  825. data/spec/unit/pops/model/model_spec.rb +1 -0
  826. data/spec/unit/pops/model/pn_transformer_spec.rb +1 -0
  827. data/spec/unit/pops/parser/lexer2_spec.rb +60 -21
  828. data/spec/unit/pops/parser/locator_spec.rb +6 -48
  829. data/spec/unit/pops/parser/parse_application_spec.rb +1 -0
  830. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +1 -0
  831. data/spec/unit/pops/parser/parse_calls_spec.rb +1 -0
  832. data/spec/unit/pops/parser/parse_capabilities_spec.rb +1 -0
  833. data/spec/unit/pops/parser/parse_conditionals_spec.rb +1 -0
  834. data/spec/unit/pops/parser/parse_containers_spec.rb +1 -0
  835. data/spec/unit/pops/parser/parse_heredoc_spec.rb +12 -124
  836. data/spec/unit/pops/parser/parse_plan_spec.rb +1 -0
  837. data/spec/unit/pops/parser/parse_resource_spec.rb +1 -0
  838. data/spec/unit/pops/parser/parse_site_spec.rb +1 -0
  839. data/spec/unit/pops/parser/pn_parser_spec.rb +1 -0
  840. data/spec/unit/pops/pn_spec.rb +1 -0
  841. data/spec/unit/pops/resource/resource_type_impl_spec.rb +1 -0
  842. data/spec/unit/pops/serialization/serialization_spec.rb +7 -5
  843. data/spec/unit/pops/serialization/to_from_hr_spec.rb +29 -4
  844. data/spec/unit/pops/serialization/to_stringified_spec.rb +157 -0
  845. data/spec/unit/pops/types/deferred_spec.rb +87 -0
  846. data/spec/unit/pops/types/p_object_type_spec.rb +20 -0
  847. data/spec/unit/pops/types/p_timespan_type_spec.rb +0 -22
  848. data/spec/unit/pops/types/p_timestamp_type_spec.rb +0 -19
  849. data/spec/unit/pops/types/recursion_guard_spec.rb +10 -10
  850. data/spec/unit/pops/types/ruby_generator_spec.rb +2 -2
  851. data/spec/unit/pops/types/string_converter_spec.rb +11 -22
  852. data/spec/unit/pops/types/task_spec.rb +148 -16
  853. data/spec/unit/pops/types/type_asserter_spec.rb +2 -2
  854. data/spec/unit/pops/types/type_calculator_spec.rb +36 -36
  855. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +0 -9
  856. data/spec/unit/pops/types/type_parser_spec.rb +13 -13
  857. data/spec/unit/pops/types/types_spec.rb +12 -6
  858. data/spec/unit/pops/validator/validator_spec.rb +162 -82
  859. data/spec/unit/pops/visitor_spec.rb +1 -0
  860. data/spec/unit/property/boolean_spec.rb +1 -1
  861. data/spec/unit/property/ensure_spec.rb +1 -0
  862. data/spec/unit/property/keyvalue_spec.rb +34 -32
  863. data/spec/unit/property/list_spec.rb +27 -26
  864. data/spec/unit/property/ordered_list_spec.rb +14 -10
  865. data/spec/unit/property_spec.rb +53 -43
  866. data/spec/unit/provider/aix_object_spec.rb +45 -47
  867. data/spec/unit/provider/command_spec.rb +9 -9
  868. data/spec/unit/provider/exec/posix_spec.rb +9 -8
  869. data/spec/unit/provider/exec/shell_spec.rb +3 -1
  870. data/spec/unit/provider/exec/windows_spec.rb +6 -4
  871. data/spec/unit/provider/exec_spec.rb +1 -209
  872. data/spec/unit/provider/file/posix_spec.rb +24 -22
  873. data/spec/unit/provider/file/windows_spec.rb +19 -17
  874. data/spec/unit/provider/group/aix_spec.rb +7 -22
  875. data/spec/unit/provider/group/groupadd_spec.rb +27 -60
  876. data/spec/unit/provider/group/ldap_spec.rb +36 -33
  877. data/spec/unit/provider/group/pw_spec.rb +18 -15
  878. data/spec/unit/provider/group/windows_adsi_spec.rb +80 -128
  879. data/spec/unit/provider/ldap_spec.rb +62 -61
  880. data/spec/unit/provider/nameservice/directoryservice_spec.rb +109 -102
  881. data/spec/unit/provider/nameservice_spec.rb +41 -39
  882. data/spec/unit/provider/package/aix_spec.rb +22 -48
  883. data/spec/unit/provider/package/appdmg_spec.rb +13 -13
  884. data/spec/unit/provider/package/apt_spec.rb +35 -60
  885. data/spec/unit/provider/package/aptitude_spec.rb +7 -7
  886. data/spec/unit/provider/package/aptrpm_spec.rb +13 -8
  887. data/spec/unit/provider/package/base_spec.rb +4 -4
  888. data/spec/unit/provider/package/dnf_spec.rb +23 -34
  889. data/spec/unit/provider/package/dpkg_spec.rb +72 -114
  890. data/spec/unit/provider/package/freebsd_spec.rb +18 -15
  891. data/spec/unit/provider/package/gem_spec.rb +86 -163
  892. data/spec/unit/provider/package/hpux_spec.rb +18 -15
  893. data/spec/unit/provider/package/macports_spec.rb +54 -56
  894. data/spec/unit/provider/package/nim_spec.rb +49 -33
  895. data/spec/unit/provider/package/openbsd_spec.rb +49 -60
  896. data/spec/unit/provider/package/opkg_spec.rb +26 -23
  897. data/spec/unit/provider/package/pacman_spec.rb +118 -97
  898. data/spec/unit/provider/package/pip3_spec.rb +6 -20
  899. data/spec/unit/provider/package/pip_spec.rb +129 -185
  900. data/spec/unit/provider/package/pkg_spec.rb +119 -129
  901. data/spec/unit/provider/package/pkgdmg_spec.rb +63 -65
  902. data/spec/unit/provider/package/pkgin_spec.rb +23 -20
  903. data/spec/unit/provider/package/pkgng_spec.rb +35 -67
  904. data/spec/unit/provider/package/pkgutil_spec.rb +49 -45
  905. data/spec/unit/provider/package/portage_spec.rb +76 -72
  906. data/spec/unit/provider/package/puppet_gem_spec.rb +21 -45
  907. data/spec/unit/provider/package/rpm_spec.rb +79 -291
  908. data/spec/unit/provider/package/sun_spec.rb +18 -16
  909. data/spec/unit/provider/package/tdnf_spec.rb +12 -9
  910. data/spec/unit/provider/package/up2date_spec.rb +4 -2
  911. data/spec/unit/provider/package/urpmi_spec.rb +17 -15
  912. data/spec/unit/provider/package/windows/exe_package_spec.rb +18 -15
  913. data/spec/unit/provider/package/windows/msi_package_spec.rb +23 -20
  914. data/spec/unit/provider/package/windows/package_spec.rb +43 -38
  915. data/spec/unit/provider/package/windows_spec.rb +36 -51
  916. data/spec/unit/provider/package/yum_spec.rb +24 -128
  917. data/spec/unit/provider/package/zypper_spec.rb +106 -117
  918. data/spec/unit/provider/parsedfile_spec.rb +45 -44
  919. data/spec/unit/provider/service/base_spec.rb +6 -5
  920. data/spec/unit/provider/service/bsd_spec.rb +54 -47
  921. data/spec/unit/provider/service/daemontools_spec.rb +53 -70
  922. data/spec/unit/provider/service/debian_spec.rb +58 -46
  923. data/spec/unit/provider/service/freebsd_spec.rb +23 -20
  924. data/spec/unit/provider/service/gentoo_spec.rb +81 -74
  925. data/spec/unit/provider/service/init_spec.rb +66 -65
  926. data/spec/unit/provider/service/launchd_spec.rb +114 -181
  927. data/spec/unit/provider/service/openbsd_spec.rb +94 -87
  928. data/spec/unit/provider/service/openrc_spec.rb +74 -70
  929. data/spec/unit/provider/service/openwrt_spec.rb +38 -30
  930. data/spec/unit/provider/service/rcng_spec.rb +24 -19
  931. data/spec/unit/provider/service/redhat_spec.rb +60 -60
  932. data/spec/unit/provider/service/runit_spec.rb +44 -61
  933. data/spec/unit/provider/service/smf_spec.rb +74 -143
  934. data/spec/unit/provider/service/src_spec.rb +69 -60
  935. data/spec/unit/provider/service/systemd_spec.rb +160 -222
  936. data/spec/unit/provider/service/upstart_spec.rb +99 -83
  937. data/spec/unit/provider/service/windows_spec.rb +42 -84
  938. data/spec/unit/provider/user/aix_spec.rb +24 -65
  939. data/spec/unit/provider/user/directoryservice_spec.rb +114 -187
  940. data/spec/unit/provider/user/hpux_spec.rb +21 -17
  941. data/spec/unit/provider/user/ldap_spec.rb +83 -80
  942. data/spec/unit/provider/user/openbsd_spec.rb +12 -11
  943. data/spec/unit/provider/user/pw_spec.rb +44 -80
  944. data/spec/unit/provider/user/user_role_add_spec.rb +94 -94
  945. data/spec/unit/provider/user/useradd_spec.rb +100 -208
  946. data/spec/unit/provider/user/windows_adsi_spec.rb +63 -62
  947. data/spec/unit/provider_spec.rb +189 -41
  948. data/spec/unit/puppet_pal_2pec.rb +26 -12
  949. data/spec/unit/puppet_pal_catalog_spec.rb +801 -0
  950. data/spec/unit/puppet_pal_spec.rb +2 -8
  951. data/spec/unit/puppet_spec.rb +7 -27
  952. data/spec/unit/relationship_spec.rb +1 -0
  953. data/spec/unit/reports/http_spec.rb +23 -21
  954. data/spec/unit/reports/store_spec.rb +4 -3
  955. data/spec/unit/reports_spec.rb +14 -12
  956. data/spec/unit/resource/capability_finder_spec.rb +26 -29
  957. data/spec/unit/resource/catalog_spec.rb +77 -81
  958. data/spec/unit/resource/status_spec.rb +8 -6
  959. data/spec/unit/resource/type_collection_spec.rb +18 -17
  960. data/spec/unit/resource/type_spec.rb +35 -34
  961. data/spec/unit/resource_spec.rb +79 -67
  962. data/spec/unit/rest/client_spec.rb +135 -0
  963. data/spec/unit/rest/route_spec.rb +132 -0
  964. data/spec/unit/scheduler/job_spec.rb +1 -0
  965. data/spec/unit/scheduler/scheduler_spec.rb +1 -0
  966. data/spec/unit/scheduler/splay_job_spec.rb +2 -1
  967. data/spec/unit/settings/array_setting_spec.rb +1 -1
  968. data/spec/unit/settings/autosign_setting_spec.rb +9 -9
  969. data/spec/unit/settings/certificate_revocation_setting_spec.rb +1 -1
  970. data/spec/unit/settings/config_file_spec.rb +10 -0
  971. data/spec/unit/settings/directory_setting_spec.rb +7 -2
  972. data/spec/unit/settings/duration_setting_spec.rb +2 -1
  973. data/spec/unit/settings/enum_setting_spec.rb +1 -1
  974. data/spec/unit/settings/environment_conf_spec.rb +6 -4
  975. data/spec/unit/settings/file_setting_spec.rb +50 -46
  976. data/spec/unit/settings/ini_file_spec.rb +2 -4
  977. data/spec/unit/settings/path_setting_spec.rb +3 -2
  978. data/spec/unit/settings/priority_setting_spec.rb +2 -1
  979. data/spec/unit/settings/string_setting_spec.rb +15 -14
  980. data/spec/unit/settings/terminus_setting_spec.rb +2 -1
  981. data/spec/unit/settings/value_translator_spec.rb +1 -0
  982. data/spec/unit/settings_spec.rb +226 -253
  983. data/spec/unit/ssl/base_spec.rb +15 -14
  984. data/spec/unit/ssl/certificate_request_attributes_spec.rb +22 -8
  985. data/spec/unit/ssl/certificate_request_spec.rb +63 -92
  986. data/spec/unit/ssl/certificate_spec.rb +29 -37
  987. data/spec/unit/ssl/digest_spec.rb +1 -0
  988. data/spec/unit/ssl/host_spec.rb +305 -685
  989. data/spec/unit/ssl/key_spec.rb +34 -46
  990. data/spec/unit/ssl/validator_spec.rb +70 -203
  991. data/spec/unit/task_spec.rb +172 -26
  992. data/spec/unit/transaction/additional_resource_generator_spec.rb +68 -67
  993. data/spec/unit/transaction/event_manager_spec.rb +84 -95
  994. data/spec/unit/transaction/event_spec.rb +15 -16
  995. data/spec/unit/transaction/persistence_spec.rb +18 -17
  996. data/spec/unit/transaction/report_spec.rb +24 -18
  997. data/spec/unit/transaction/resource_harness_spec.rb +33 -72
  998. data/spec/unit/transaction_spec.rb +106 -176
  999. data/spec/unit/type/component_spec.rb +1 -0
  1000. data/spec/unit/type/exec_spec.rb +66 -120
  1001. data/spec/unit/type/file/checksum_spec.rb +11 -10
  1002. data/spec/unit/type/file/checksum_value_spec.rb +32 -31
  1003. data/spec/unit/type/file/content_spec.rb +62 -65
  1004. data/spec/unit/type/file/ctime_spec.rb +1 -0
  1005. data/spec/unit/type/file/ensure_spec.rb +13 -12
  1006. data/spec/unit/type/file/group_spec.rb +7 -5
  1007. data/spec/unit/type/file/mode_spec.rb +6 -4
  1008. data/spec/unit/type/file/mtime_spec.rb +1 -0
  1009. data/spec/unit/type/file/owner_spec.rb +8 -6
  1010. data/spec/unit/type/file/selinux_spec.rb +19 -17
  1011. data/spec/unit/type/file/source_spec.rb +110 -113
  1012. data/spec/unit/type/file/type_spec.rb +1 -0
  1013. data/spec/unit/type/file_spec.rb +190 -204
  1014. data/spec/unit/type/filebucket_spec.rb +10 -11
  1015. data/spec/unit/type/group_spec.rb +9 -15
  1016. data/spec/unit/type/noop_metaparam_spec.rb +2 -1
  1017. data/spec/unit/type/package/package_settings_spec.rb +23 -44
  1018. data/spec/unit/type/package_spec.rb +64 -61
  1019. data/spec/unit/type/resources_spec.rb +101 -103
  1020. data/spec/unit/type/schedule_spec.rb +28 -28
  1021. data/spec/unit/type/service_spec.rb +85 -76
  1022. data/spec/unit/type/stage_spec.rb +1 -0
  1023. data/spec/unit/type/tidy_spec.rb +63 -62
  1024. data/spec/unit/type/user_spec.rb +26 -147
  1025. data/spec/unit/type/whit_spec.rb +1 -0
  1026. data/spec/unit/type_spec.rb +164 -125
  1027. data/spec/unit/util/at_fork_spec.rb +19 -18
  1028. data/spec/unit/util/autoload_spec.rb +122 -93
  1029. data/spec/unit/util/backups_spec.rb +35 -34
  1030. data/spec/unit/util/character_encoding_spec.rb +5 -48
  1031. data/spec/unit/util/checksums_spec.rb +39 -38
  1032. data/spec/unit/util/colors_spec.rb +2 -1
  1033. data/spec/unit/util/command_line_spec.rb +20 -40
  1034. data/spec/unit/util/constant_inflector_spec.rb +1 -0
  1035. data/spec/unit/util/diff_spec.rb +8 -7
  1036. data/spec/unit/util/errors_spec.rb +1 -0
  1037. data/spec/unit/util/execution_spec.rb +167 -285
  1038. data/spec/unit/util/execution_stub_spec.rb +3 -2
  1039. data/spec/unit/util/feature_spec.rb +46 -28
  1040. data/spec/unit/util/filetype_spec.rb +53 -61
  1041. data/spec/unit/util/http_proxy_spec.rb +13 -133
  1042. data/spec/unit/util/inifile_spec.rb +31 -26
  1043. data/spec/unit/util/json_lockfile_spec.rb +5 -3
  1044. data/spec/unit/util/ldap/connection_spec.rb +25 -26
  1045. data/spec/unit/util/ldap/generator_spec.rb +1 -0
  1046. data/spec/unit/util/ldap/manager_spec.rb +102 -118
  1047. data/spec/unit/util/lockfile_spec.rb +2 -1
  1048. data/spec/unit/util/log/destinations_spec.rb +40 -23
  1049. data/spec/unit/util/log_spec.rb +146 -48
  1050. data/spec/unit/util/logging_spec.rb +114 -252
  1051. data/spec/unit/util/metric_spec.rb +1 -0
  1052. data/spec/unit/util/monkey_patches_spec.rb +12 -24
  1053. data/spec/unit/util/multi_match_spec.rb +1 -0
  1054. data/spec/unit/util/network_device/config_spec.rb +1 -0
  1055. data/spec/unit/util/network_device/transport/base_spec.rb +6 -5
  1056. data/spec/unit/util/network_device_spec.rb +9 -7
  1057. data/spec/unit/util/package_spec.rb +1 -0
  1058. data/spec/unit/util/pidlock_spec.rb +14 -86
  1059. data/spec/unit/util/plist_spec.rb +33 -60
  1060. data/spec/unit/util/posix_spec.rb +47 -78
  1061. data/spec/unit/util/profiler/object_counts_spec.rb +2 -1
  1062. data/spec/unit/util/rdoc_spec.rb +10 -9
  1063. data/spec/unit/util/reference_spec.rb +1 -0
  1064. data/spec/unit/util/resource_template_spec.rb +20 -20
  1065. data/spec/unit/util/retry_action_spec.rb +8 -7
  1066. data/spec/unit/util/rubygems_spec.rb +7 -41
  1067. data/spec/unit/util/run_mode_spec.rb +11 -10
  1068. data/spec/unit/util/selinux_spec.rb +73 -84
  1069. data/spec/unit/util/splayer_spec.rb +9 -8
  1070. data/spec/unit/util/ssl_spec.rb +1 -0
  1071. data/spec/unit/util/storage_spec.rb +17 -111
  1072. data/spec/unit/util/suidmanager_spec.rb +58 -47
  1073. data/spec/unit/util/symbolic_file_mode_spec.rb +1 -0
  1074. data/spec/unit/util/tag_set_spec.rb +9 -1
  1075. data/spec/unit/util/tagging_spec.rb +12 -0
  1076. data/spec/unit/util/terminal_spec.rb +10 -9
  1077. data/spec/unit/util/user_attr_spec.rb +2 -1
  1078. data/spec/unit/util/warnings_spec.rb +4 -3
  1079. data/spec/unit/util/watcher/periodic_watcher_spec.rb +2 -2
  1080. data/spec/unit/util/watcher_spec.rb +21 -51
  1081. data/spec/unit/util/windows/access_control_entry_spec.rb +2 -1
  1082. data/spec/unit/util/windows/access_control_list_spec.rb +2 -1
  1083. data/spec/unit/util/windows/adsi_spec.rb +134 -278
  1084. data/spec/unit/util/windows/api_types_spec.rb +42 -105
  1085. data/spec/unit/util/windows/eventlog_spec.rb +13 -10
  1086. data/spec/unit/util/windows/file_spec.rb +1 -0
  1087. data/spec/unit/util/windows/root_certs_spec.rb +1 -0
  1088. data/spec/unit/util/windows/security_descriptor_spec.rb +3 -1
  1089. data/spec/unit/util/windows/service_spec.rb +180 -432
  1090. data/spec/unit/util/windows/sid_spec.rb +17 -15
  1091. data/spec/unit/util/windows/string_spec.rb +2 -1
  1092. data/spec/unit/util/yaml_spec.rb +162 -28
  1093. data/spec/unit/util_spec.rb +74 -119
  1094. data/spec/unit/version_spec.rb +6 -6
  1095. data/tasks/benchmark.rake +5 -1
  1096. data/tasks/ci.rake +0 -5
  1097. data/tasks/manpages.rake +9 -2
  1098. data/tasks/parser.rake +11 -3
  1099. metadata +156 -473
  1100. data/CODEOWNERS +0 -30
  1101. data/ext/rack/config.ru +0 -44
  1102. data/ext/rack/example-passenger-vhost.conf +0 -57
  1103. data/lib/puppet/application/ca.rb +0 -11
  1104. data/lib/puppet/application/certificate.rb +0 -17
  1105. data/lib/puppet/application/certificate_request.rb +0 -7
  1106. data/lib/puppet/application/certificate_revocation_list.rb +0 -7
  1107. data/lib/puppet/application/master.rb +0 -319
  1108. data/lib/puppet/confine/boolean.rb +0 -45
  1109. data/lib/puppet/external/nagios.rb +0 -46
  1110. data/lib/puppet/external/nagios/base.rb +0 -472
  1111. data/lib/puppet/external/nagios/grammar.ry +0 -248
  1112. data/lib/puppet/external/nagios/makefile +0 -9
  1113. data/lib/puppet/external/nagios/parser.rb +0 -400
  1114. data/lib/puppet/face/ca.rb +0 -266
  1115. data/lib/puppet/face/certificate.rb +0 -167
  1116. data/lib/puppet/face/certificate_request.rb +0 -56
  1117. data/lib/puppet/face/certificate_revocation_list.rb +0 -56
  1118. data/lib/puppet/feature/rack.rb +0 -19
  1119. data/lib/puppet/graph/random_prioritizer.rb +0 -16
  1120. data/lib/puppet/graph/title_hash_prioritizer.rb +0 -16
  1121. data/lib/puppet/indirector/certificate/ca.rb +0 -9
  1122. data/lib/puppet/indirector/certificate/disabled_ca.rb +0 -22
  1123. data/lib/puppet/indirector/certificate_request/ca.rb +0 -22
  1124. data/lib/puppet/indirector/certificate_request/disabled_ca.rb +0 -22
  1125. data/lib/puppet/indirector/certificate_revocation_list/ca.rb +0 -8
  1126. data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +0 -22
  1127. data/lib/puppet/indirector/certificate_revocation_list/file.rb +0 -8
  1128. data/lib/puppet/indirector/certificate_revocation_list/rest.rb +0 -22
  1129. data/lib/puppet/indirector/certificate_status.rb +0 -4
  1130. data/lib/puppet/indirector/certificate_status/file.rb +0 -91
  1131. data/lib/puppet/indirector/certificate_status/rest.rb +0 -11
  1132. data/lib/puppet/indirector/key/ca.rb +0 -16
  1133. data/lib/puppet/indirector/key/disabled_ca.rb +0 -22
  1134. data/lib/puppet/indirector/ldap.rb +0 -86
  1135. data/lib/puppet/indirector/node/ldap.rb +0 -275
  1136. data/lib/puppet/indirector/node/write_only_yaml.rb +0 -39
  1137. data/lib/puppet/module_tool/applications/builder.rb +0 -152
  1138. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +0 -18
  1139. data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +0 -89
  1140. data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +0 -32
  1141. data/lib/puppet/module_tool/skeleton/templates/generator/examples/init.pp.erb +0 -12
  1142. data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +0 -48
  1143. data/lib/puppet/module_tool/skeleton/templates/generator/metadata.json.erb +0 -1
  1144. data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +0 -6
  1145. data/lib/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +0 -1
  1146. data/lib/puppet/network/http/api/ca.rb +0 -2
  1147. data/lib/puppet/network/http/api/ca/v1.rb +0 -11
  1148. data/lib/puppet/network/http/rack.rb +0 -33
  1149. data/lib/puppet/network/http/rack/rest.rb +0 -162
  1150. data/lib/puppet/network/http/webrick.rb +0 -124
  1151. data/lib/puppet/network/http/webrick/rest.rb +0 -114
  1152. data/lib/puppet/network/server.rb +0 -39
  1153. data/lib/puppet/provider/augeas/augeas.rb +0 -767
  1154. data/lib/puppet/provider/cisco.rb +0 -9
  1155. data/lib/puppet/provider/computer/computer.rb +0 -20
  1156. data/lib/puppet/provider/cron/crontab.rb +0 -297
  1157. data/lib/puppet/provider/host/parsed.rb +0 -46
  1158. data/lib/puppet/provider/interface/cisco.rb +0 -27
  1159. data/lib/puppet/provider/macauthorization/macauthorization.rb +0 -298
  1160. data/lib/puppet/provider/mailalias/aliases.rb +0 -50
  1161. data/lib/puppet/provider/maillist/mailman.rb +0 -108
  1162. data/lib/puppet/provider/mcx/mcxcontent.rb +0 -173
  1163. data/lib/puppet/provider/mount.rb +0 -76
  1164. data/lib/puppet/provider/mount/parsed.rb +0 -285
  1165. data/lib/puppet/provider/naginator.rb +0 -63
  1166. data/lib/puppet/provider/package/dnfmodule.rb +0 -141
  1167. data/lib/puppet/provider/package_targetable.rb +0 -69
  1168. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +0 -590
  1169. data/lib/puppet/provider/selboolean/getsetsebool.rb +0 -47
  1170. data/lib/puppet/provider/selmodule/semodule.rb +0 -157
  1171. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +0 -105
  1172. data/lib/puppet/provider/sshkey/parsed.rb +0 -50
  1173. data/lib/puppet/provider/vlan/cisco.rb +0 -28
  1174. data/lib/puppet/provider/yumrepo/inifile.rb +0 -315
  1175. data/lib/puppet/provider/zfs/zfs.rb +0 -108
  1176. data/lib/puppet/provider/zone/solaris.rb +0 -364
  1177. data/lib/puppet/provider/zpool/zpool.rb +0 -125
  1178. data/lib/puppet/ssl/certificate_authority.rb +0 -554
  1179. data/lib/puppet/ssl/certificate_authority/autosign_command.rb +0 -45
  1180. data/lib/puppet/ssl/certificate_authority/interface.rb +0 -324
  1181. data/lib/puppet/ssl/certificate_revocation_list.rb +0 -111
  1182. data/lib/puppet/ssl/configuration.rb +0 -61
  1183. data/lib/puppet/ssl/inventory.rb +0 -55
  1184. data/lib/puppet/type/augeas.rb +0 -211
  1185. data/lib/puppet/type/computer.rb +0 -66
  1186. data/lib/puppet/type/cron.rb +0 -480
  1187. data/lib/puppet/type/host.rb +0 -95
  1188. data/lib/puppet/type/interface.rb +0 -121
  1189. data/lib/puppet/type/k5login.rb +0 -165
  1190. data/lib/puppet/type/macauthorization.rb +0 -167
  1191. data/lib/puppet/type/mailalias.rb +0 -46
  1192. data/lib/puppet/type/maillist.rb +0 -62
  1193. data/lib/puppet/type/mcx.rb +0 -98
  1194. data/lib/puppet/type/mount.rb +0 -314
  1195. data/lib/puppet/type/nagios_command.rb +0 -3
  1196. data/lib/puppet/type/nagios_contact.rb +0 -3
  1197. data/lib/puppet/type/nagios_contactgroup.rb +0 -3
  1198. data/lib/puppet/type/nagios_host.rb +0 -3
  1199. data/lib/puppet/type/nagios_hostdependency.rb +0 -3
  1200. data/lib/puppet/type/nagios_hostescalation.rb +0 -3
  1201. data/lib/puppet/type/nagios_hostextinfo.rb +0 -3
  1202. data/lib/puppet/type/nagios_hostgroup.rb +0 -3
  1203. data/lib/puppet/type/nagios_service.rb +0 -3
  1204. data/lib/puppet/type/nagios_servicedependency.rb +0 -3
  1205. data/lib/puppet/type/nagios_serviceescalation.rb +0 -3
  1206. data/lib/puppet/type/nagios_serviceextinfo.rb +0 -3
  1207. data/lib/puppet/type/nagios_servicegroup.rb +0 -3
  1208. data/lib/puppet/type/nagios_timeperiod.rb +0 -3
  1209. data/lib/puppet/type/router.rb +0 -17
  1210. data/lib/puppet/type/scheduled_task.rb +0 -183
  1211. data/lib/puppet/type/selboolean.rb +0 -40
  1212. data/lib/puppet/type/selmodule.rb +0 -58
  1213. data/lib/puppet/type/ssh_authorized_key.rb +0 -143
  1214. data/lib/puppet/type/sshkey.rb +0 -83
  1215. data/lib/puppet/type/vlan.rb +0 -26
  1216. data/lib/puppet/type/yumrepo.rb +0 -430
  1217. data/lib/puppet/type/zfs.rb +0 -154
  1218. data/lib/puppet/type/zone.rb +0 -382
  1219. data/lib/puppet/type/zpool.rb +0 -91
  1220. data/lib/puppet/util/methodhelper.rb +0 -32
  1221. data/lib/puppet/util/nagios_maker.rb +0 -85
  1222. data/lib/puppet/util/network_device/cisco.rb +0 -4
  1223. data/lib/puppet/util/network_device/cisco/device.rb +0 -285
  1224. data/lib/puppet/util/network_device/cisco/facts.rb +0 -72
  1225. data/lib/puppet/util/network_device/cisco/interface.rb +0 -94
  1226. data/lib/puppet/util/network_device/ipcalc.rb +0 -68
  1227. data/lib/puppet/util/network_device/transport/ssh.rb +0 -126
  1228. data/lib/puppet/util/network_device/transport/telnet.rb +0 -47
  1229. data/lib/puppet/util/windows/taskscheduler.rb +0 -1267
  1230. data/lib/puppet/vendor/load_semantic.rb +0 -1
  1231. data/lib/puppet/vendor/load_semantic_puppet.rb +0 -1
  1232. data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -5
  1233. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +0 -11
  1234. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency.rb +0 -181
  1235. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/graph.rb +0 -60
  1236. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/graph_node.rb +0 -117
  1237. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +0 -58
  1238. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/source.rb +0 -25
  1239. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/unsatisfiable_graph.rb +0 -31
  1240. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +0 -3
  1241. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version.rb +0 -203
  1242. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version_range.rb +0 -758
  1243. data/lib/puppet/vendor/semantic_puppet/locales/config.yaml +0 -21
  1244. data/man/man8/puppet-ca.8 +0 -196
  1245. data/man/man8/puppet-cert.8 +0 -118
  1246. data/man/man8/puppet-certificate.8 +0 -240
  1247. data/man/man8/puppet-certificate_request.8 +0 -161
  1248. data/man/man8/puppet-certificate_revocation_list.8 +0 -139
  1249. data/man/man8/puppet-master.8 +0 -85
  1250. data/spec/fixtures/integration/provider/cron/crontab/create_normal_entry +0 -19
  1251. data/spec/fixtures/integration/provider/cron/crontab/create_special_entry +0 -18
  1252. data/spec/fixtures/integration/provider/cron/crontab/crontab_user1 +0 -15
  1253. data/spec/fixtures/integration/provider/cron/crontab/crontab_user2 +0 -4
  1254. data/spec/fixtures/integration/provider/cron/crontab/modify_entry +0 -13
  1255. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input1 +0 -15
  1256. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input2 +0 -6
  1257. data/spec/fixtures/integration/provider/cron/crontab/purged +0 -8
  1258. data/spec/fixtures/integration/provider/cron/crontab/remove_named_resource +0 -12
  1259. data/spec/fixtures/integration/provider/cron/crontab/remove_unnamed_resource +0 -14
  1260. data/spec/fixtures/integration/provider/cron/crontab/unspecialized +0 -15
  1261. data/spec/fixtures/integration/provider/mailalias/aliases/test1 +0 -32
  1262. data/spec/fixtures/integration/provider/sshkey/sample +0 -21
  1263. data/spec/fixtures/unit/provider/augeas/augeas/augeas/lenses/test.aug +0 -13
  1264. data/spec/fixtures/unit/provider/augeas/augeas/etc/fstab +0 -10
  1265. data/spec/fixtures/unit/provider/augeas/augeas/etc/hosts +0 -6
  1266. data/spec/fixtures/unit/provider/augeas/augeas/etc/test +0 -3
  1267. data/spec/fixtures/unit/provider/augeas/augeas/test.aug +0 -13
  1268. data/spec/fixtures/unit/provider/host/parsed/valid_hosts +0 -19
  1269. data/spec/fixtures/unit/provider/mount/mount-output.aix.txt +0 -7
  1270. data/spec/fixtures/unit/provider/mount/parsed/aix.filesystems +0 -152
  1271. data/spec/fixtures/unit/provider/mount/parsed/aix.mount +0 -11
  1272. data/spec/fixtures/unit/provider/mount/parsed/darwin.mount +0 -6
  1273. data/spec/fixtures/unit/provider/mount/parsed/freebsd.fstab +0 -9
  1274. data/spec/fixtures/unit/provider/mount/parsed/freebsd.mount +0 -4
  1275. data/spec/fixtures/unit/provider/mount/parsed/hpux.mount +0 -17
  1276. data/spec/fixtures/unit/provider/mount/parsed/linux.fstab +0 -12
  1277. data/spec/fixtures/unit/provider/mount/parsed/linux.mount +0 -6
  1278. data/spec/fixtures/unit/provider/mount/parsed/netbsd.fstab +0 -10
  1279. data/spec/fixtures/unit/provider/mount/parsed/netbsd.mount +0 -9
  1280. data/spec/fixtures/unit/provider/mount/parsed/openbsd.fstab +0 -5
  1281. data/spec/fixtures/unit/provider/mount/parsed/openbsd.mount +0 -5
  1282. data/spec/fixtures/unit/provider/mount/parsed/solaris.fstab +0 -11
  1283. data/spec/fixtures/unit/provider/mount/parsed/solaris.mount +0 -6
  1284. data/spec/fixtures/unit/provider/naginator/define_empty_param +0 -6
  1285. data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +0 -19
  1286. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +0 -9
  1287. data/spec/fixtures/unit/provider/service/smf/svcs_fmri.out +0 -6
  1288. data/spec/fixtures/unit/provider/service/smf/svcs_multiple_fmris.out +0 -13
  1289. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys +0 -7
  1290. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys1 +0 -3
  1291. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys2 +0 -1
  1292. data/spec/fixtures/unit/provider/sshkey/parsed/sample +0 -21
  1293. data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +0 -8
  1294. data/spec/fixtures/unit/provider/zfs/zfs/zfs-list.out +0 -2
  1295. data/spec/fixtures/unit/provider/zpool/zpool/zpool-list.out +0 -2
  1296. data/spec/integration/faces/ca_spec.rb +0 -353
  1297. data/spec/integration/indirector/node/ldap_spec.rb +0 -13
  1298. data/spec/integration/network/http_pool_spec.rb +0 -120
  1299. data/spec/integration/provider/cron/crontab_spec.rb +0 -240
  1300. data/spec/integration/provider/file/windows_spec.rb +0 -162
  1301. data/spec/integration/provider/mailalias/aliases_spec.rb +0 -9
  1302. data/spec/integration/provider/mount_spec.rb +0 -163
  1303. data/spec/integration/provider/ssh_authorized_key_spec.rb +0 -217
  1304. data/spec/integration/provider/sshkey_spec.rb +0 -153
  1305. data/spec/integration/provider/yumrepo_spec.rb +0 -126
  1306. data/spec/integration/ssl/autosign_spec.rb +0 -145
  1307. data/spec/integration/ssl/certificate_authority_spec.rb +0 -161
  1308. data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -33
  1309. data/spec/integration/transaction_spec.rb +0 -553
  1310. data/spec/integration/type/nagios_spec.rb +0 -69
  1311. data/spec/integration/type/notify_spec.rb +0 -46
  1312. data/spec/integration/type/user_spec.rb +0 -63
  1313. data/spec/lib/puppet_spec/https.rb +0 -166
  1314. data/spec/unit/application/cert_spec.rb +0 -272
  1315. data/spec/unit/application/certificate_spec.rb +0 -21
  1316. data/spec/unit/application/master_spec.rb +0 -414
  1317. data/spec/unit/face/ca_spec.rb +0 -9
  1318. data/spec/unit/face/certificate_request_spec.rb +0 -9
  1319. data/spec/unit/face/certificate_revocation_list_spec.rb +0 -9
  1320. data/spec/unit/face/certificate_spec.rb +0 -228
  1321. data/spec/unit/face/module/build_spec.rb +0 -69
  1322. data/spec/unit/graph/title_hash_prioritizer_spec.rb +0 -50
  1323. data/spec/unit/indirector/certificate/ca_spec.rb +0 -21
  1324. data/spec/unit/indirector/certificate/disabled_ca_spec.rb +0 -32
  1325. data/spec/unit/indirector/certificate_request/ca_spec.rb +0 -56
  1326. data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +0 -32
  1327. data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +0 -15
  1328. data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +0 -32
  1329. data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +0 -16
  1330. data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +0 -33
  1331. data/spec/unit/indirector/certificate_status/file_spec.rb +0 -190
  1332. data/spec/unit/indirector/certificate_status/rest_spec.rb +0 -17
  1333. data/spec/unit/indirector/code_spec.rb +0 -30
  1334. data/spec/unit/indirector/key/ca_spec.rb +0 -22
  1335. data/spec/unit/indirector/key/disabled_ca_spec.rb +0 -32
  1336. data/spec/unit/indirector/ldap_spec.rb +0 -151
  1337. data/spec/unit/indirector/node/ldap_spec.rb +0 -463
  1338. data/spec/unit/indirector/node/write_only_yaml_spec.rb +0 -11
  1339. data/spec/unit/module_tool/applications/builder_spec.rb +0 -439
  1340. data/spec/unit/network/http/api/ca/v1_spec.rb +0 -26
  1341. data/spec/unit/network/http/rack/rest_spec.rb +0 -322
  1342. data/spec/unit/network/http/rack_spec.rb +0 -42
  1343. data/spec/unit/network/http/webrick/rest_spec.rb +0 -230
  1344. data/spec/unit/network/http/webrick_spec.rb +0 -277
  1345. data/spec/unit/network/server_spec.rb +0 -94
  1346. data/spec/unit/provider/augeas/augeas_spec.rb +0 -1096
  1347. data/spec/unit/provider/cisco_spec.rb +0 -14
  1348. data/spec/unit/provider/cron/crontab_spec.rb +0 -206
  1349. data/spec/unit/provider/cron/parsed_spec.rb +0 -355
  1350. data/spec/unit/provider/host/parsed_spec.rb +0 -219
  1351. data/spec/unit/provider/interface/cisco_spec.rb +0 -53
  1352. data/spec/unit/provider/macauthorization_spec.rb +0 -134
  1353. data/spec/unit/provider/mcx/mcxcontent_spec.rb +0 -190
  1354. data/spec/unit/provider/mount/parsed_spec.rb +0 -318
  1355. data/spec/unit/provider/mount_spec.rb +0 -169
  1356. data/spec/unit/provider/naginator_spec.rb +0 -78
  1357. data/spec/unit/provider/network_device_spec.rb +0 -152
  1358. data/spec/unit/provider/package/dnfmodule_spec.rb +0 -247
  1359. data/spec/unit/provider/package_targetable_spec.rb +0 -60
  1360. data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +0 -2050
  1361. data/spec/unit/provider/selboolean_spec.rb +0 -34
  1362. data/spec/unit/provider/selmodule-example.pp +0 -0
  1363. data/spec/unit/provider/selmodule_spec.rb +0 -154
  1364. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -259
  1365. data/spec/unit/provider/sshkey/parsed_spec.rb +0 -92
  1366. data/spec/unit/provider/vlan/cisco_spec.rb +0 -53
  1367. data/spec/unit/provider/yumrepo/inifile_spec.rb +0 -413
  1368. data/spec/unit/provider/zfs/zfs_spec.rb +0 -171
  1369. data/spec/unit/provider/zone/solaris_spec.rb +0 -261
  1370. data/spec/unit/provider/zpool/zpool_spec.rb +0 -250
  1371. data/spec/unit/settings/server_list_setting_spec.rb +0 -21
  1372. data/spec/unit/ssl/certificate_authority/autosign_command_spec.rb +0 -29
  1373. data/spec/unit/ssl/certificate_authority/interface_spec.rb +0 -563
  1374. data/spec/unit/ssl/certificate_authority_spec.rb +0 -1165
  1375. data/spec/unit/ssl/certificate_revocation_list_spec.rb +0 -196
  1376. data/spec/unit/ssl/configuration_spec.rb +0 -138
  1377. data/spec/unit/ssl/inventory_spec.rb +0 -155
  1378. data/spec/unit/test/test_helper_spec.rb +0 -17
  1379. data/spec/unit/type/augeas_spec.rb +0 -120
  1380. data/spec/unit/type/computer_spec.rb +0 -77
  1381. data/spec/unit/type/cron_spec.rb +0 -539
  1382. data/spec/unit/type/host_spec.rb +0 -680
  1383. data/spec/unit/type/interface_spec.rb +0 -128
  1384. data/spec/unit/type/k5login_spec.rb +0 -204
  1385. data/spec/unit/type/macauthorization_spec.rb +0 -111
  1386. data/spec/unit/type/mailalias_spec.rb +0 -48
  1387. data/spec/unit/type/maillist_spec.rb +0 -38
  1388. data/spec/unit/type/mcx_spec.rb +0 -75
  1389. data/spec/unit/type/mount_spec.rb +0 -622
  1390. data/spec/unit/type/nagios_spec.rb +0 -312
  1391. data/spec/unit/type/scheduled_task_spec.rb +0 -117
  1392. data/spec/unit/type/selboolean_spec.rb +0 -41
  1393. data/spec/unit/type/selmodule_spec.rb +0 -16
  1394. data/spec/unit/type/ssh_authorized_key_spec.rb +0 -228
  1395. data/spec/unit/type/sshkey_spec.rb +0 -75
  1396. data/spec/unit/type/vlan_spec.rb +0 -42
  1397. data/spec/unit/type/yumrepo_spec.rb +0 -476
  1398. data/spec/unit/type/zfs_spec.rb +0 -45
  1399. data/spec/unit/type/zone_spec.rb +0 -182
  1400. data/spec/unit/type/zpool_spec.rb +0 -108
  1401. data/spec/unit/util/nagios_maker_spec.rb +0 -121
  1402. data/spec/unit/util/network_device/cisco/device_spec.rb +0 -491
  1403. data/spec/unit/util/network_device/cisco/facts_spec.rb +0 -63
  1404. data/spec/unit/util/network_device/cisco/interface_spec.rb +0 -97
  1405. data/spec/unit/util/network_device/ipcalc_spec.rb +0 -61
  1406. data/spec/unit/util/network_device/transport/ssh_spec.rb +0 -252
  1407. data/spec/unit/util/network_device/transport/telnet_spec.rb +0 -90
@@ -1,277 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet/network/http'
3
- require 'puppet/network/http/webrick'
4
-
5
- describe Puppet::Network::HTTP::WEBrick, "after initializing" do
6
- it "should not be listening" do
7
- expect(Puppet::Network::HTTP::WEBrick.new).not_to be_listening
8
- end
9
- end
10
-
11
- describe Puppet::Network::HTTP::WEBrick do
12
- include PuppetSpec::Files
13
-
14
- let(:address) { '127.0.0.1' }
15
- let(:port) { 31337 }
16
- let(:server) { Puppet::Network::HTTP::WEBrick.new }
17
- let(:localcacert) { make_absolute("/ca/crt") }
18
- let(:ssl_server_ca_auth) { make_absolute("/ca/ssl_server_auth_file") }
19
- let(:key) { double('key', :content => "mykey") }
20
- let(:cert) { double('cert', :content => "mycert") }
21
- let(:host) { double('host', :key => key, :certificate => cert, :name => "yay", :ssl_store => "mystore") }
22
-
23
- let(:mock_ssl_context) do
24
- double('ssl_context', :ciphers= => nil)
25
- end
26
-
27
- let(:socket) { double('socket') }
28
- let(:mock_webrick) do
29
- server = double('webrick',
30
- :[] => {},
31
- :listeners => [],
32
- :status => :Running,
33
- :mount => nil,
34
- :shutdown => nil,
35
- :ssl_context => mock_ssl_context)
36
- allow(server).to receive(:start).and_yield(socket)
37
- allow(IO).to receive(:select).with([socket], nil, nil, anything).and_return(true)
38
- allow(socket).to receive(:accept)
39
- allow(server).to receive(:run).with(socket)
40
- server
41
- end
42
-
43
- before :each do
44
- allow(WEBrick::HTTPServer).to receive(:new).and_return(mock_webrick)
45
- allow(Puppet::SSL::Certificate.indirection).to receive(:find).with('ca').and_return(cert)
46
- allow(Puppet::SSL::Host).to receive(:localhost).and_return(host)
47
- end
48
-
49
- describe "when turning on listening" do
50
- it "should fail if already listening" do
51
- server.listen(address, port)
52
- expect { server.listen(address, port) }.to raise_error(RuntimeError, /server is already listening/)
53
- end
54
-
55
- it "should tell webrick to listen on the specified address and port" do
56
- expect(WEBrick::HTTPServer).to receive(:new).with(
57
- hash_including(:Port => 31337, :BindAddress => "127.0.0.1")
58
- ).and_return(mock_webrick)
59
- server.listen(address, port)
60
- end
61
-
62
- it "should not perform reverse lookups" do
63
- expect(WEBrick::HTTPServer).to receive(:new).with(
64
- hash_including(:DoNotReverseLookup => true)
65
- ).and_return(mock_webrick)
66
- expect(BasicSocket).to receive(:do_not_reverse_lookup=).with(true)
67
-
68
- server.listen(address, port)
69
- end
70
-
71
- it "should configure a logger for webrick" do
72
- expect(server).to receive(:setup_logger).and_return(:Logger => :mylogger)
73
-
74
- expect(WEBrick::HTTPServer).to receive(:new) do |args|
75
- expect(args[:Logger]).to eq(:mylogger)
76
- end.and_return(mock_webrick)
77
-
78
- server.listen(address, port)
79
- end
80
-
81
- it "should configure SSL for webrick" do
82
- expect(server).to receive(:setup_ssl).and_return(:Ssl => :testing, :Other => :yay)
83
-
84
- expect(WEBrick::HTTPServer).to receive(:new).with(hash_including(:Ssl => :testing, :Other => :yay)).and_return(mock_webrick)
85
-
86
- server.listen(address, port)
87
- end
88
-
89
- it "should be listening" do
90
- server.listen(address, port)
91
- expect(server).to be_listening
92
- end
93
-
94
- it "is passed a yet to be accepted socket" do
95
- expect(socket).to receive(:accept)
96
-
97
- server.listen(address, port)
98
- server.unlisten
99
- end
100
-
101
- describe "when the REST protocol is requested" do
102
- it "should register the REST handler at /" do
103
- # We don't care about the options here.
104
- expect(mock_webrick).to receive(:mount).with("/", Puppet::Network::HTTP::WEBrickREST)
105
-
106
- server.listen(address, port)
107
- end
108
- end
109
- end
110
-
111
- describe "when turning off listening" do
112
- it "should fail unless listening" do
113
- expect { server.unlisten }.to raise_error(RuntimeError, /server is not listening/)
114
- end
115
-
116
- it "should order webrick server to stop" do
117
- expect(mock_webrick).to receive(:shutdown)
118
- server.listen(address, port)
119
- server.unlisten
120
- end
121
-
122
- it "should no longer be listening" do
123
- server.listen(address, port)
124
- server.unlisten
125
- expect(server).not_to be_listening
126
- end
127
- end
128
-
129
- describe "when configuring an http logger" do
130
- let(:server) { Puppet::Network::HTTP::WEBrick.new }
131
-
132
- before :each do
133
- allow(Puppet.settings).to receive(:use)
134
- @filehandle = double('handle', :fcntl => nil, :sync= => nil)
135
-
136
- allow(File).to receive(:open).and_return(@filehandle)
137
- end
138
-
139
- it "should use the settings for :main, :ssl, and :application" do
140
- expect(Puppet.settings).to receive(:use).with(:main, :ssl, :application)
141
-
142
- server.setup_logger
143
- end
144
-
145
- it "should use the masterhttplog" do
146
- log = make_absolute("/master/log")
147
- Puppet[:masterhttplog] = log
148
-
149
- expect(File).to receive(:open).with(log, "a+:UTF-8").and_return(@filehandle)
150
-
151
- server.setup_logger
152
- end
153
-
154
- describe "and creating the logging filehandle" do
155
- it "should set the close-on-exec flag if supported" do
156
- if defined? Fcntl::FD_CLOEXEC
157
- expect(@filehandle).to receive(:fcntl).with(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC)
158
- else
159
- expect(@filehandle).not_to receive(:fcntl)
160
- end
161
-
162
- server.setup_logger
163
- end
164
-
165
- it "should sync the filehandle" do
166
- expect(@filehandle).to receive(:sync=).with(true)
167
-
168
- server.setup_logger
169
- end
170
- end
171
-
172
- it "should create a new WEBrick::Log instance with the open filehandle" do
173
- expect(WEBrick::Log).to receive(:new).with(@filehandle)
174
-
175
- server.setup_logger
176
- end
177
-
178
- it "should set debugging if the current loglevel is :debug" do
179
- expect(Puppet::Util::Log).to receive(:level).and_return(:debug)
180
-
181
- expect(WEBrick::Log).to receive(:new).with(anything, WEBrick::Log::DEBUG)
182
-
183
- server.setup_logger
184
- end
185
-
186
- it "should return the logger as the main log" do
187
- logger = double('logger')
188
- expect(WEBrick::Log).to receive(:new).and_return(logger)
189
-
190
- expect(server.setup_logger[:Logger]).to eq(logger)
191
- end
192
-
193
- it "should return the logger as the access log using both the Common and Referer log format" do
194
- logger = double('logger')
195
- expect(WEBrick::Log).to receive(:new).and_return(logger)
196
-
197
- expect(server.setup_logger[:AccessLog]).to eq([
198
- [logger, WEBrick::AccessLog::COMMON_LOG_FORMAT],
199
- [logger, WEBrick::AccessLog::REFERER_LOG_FORMAT]
200
- ])
201
- end
202
- end
203
-
204
- describe "when configuring ssl" do
205
- it "should use the key from the localhost SSL::Host instance" do
206
- expect(Puppet::SSL::Host).to receive(:localhost).and_return(host)
207
- expect(host).to receive(:key).and_return(key)
208
-
209
- expect(server.setup_ssl[:SSLPrivateKey]).to eq("mykey")
210
- end
211
-
212
- it "should configure the certificate" do
213
- expect(server.setup_ssl[:SSLCertificate]).to eq("mycert")
214
- end
215
-
216
- it "should fail if no CA certificate can be found" do
217
- allow(Puppet::SSL::Certificate.indirection).to receive(:find).with('ca').and_return(nil)
218
-
219
- expect { server.setup_ssl }.to raise_error(Puppet::Error, /Could not find CA certificate/)
220
- end
221
-
222
- it "should specify the path to the CA certificate" do
223
- Puppet.settings[:hostcrl] = 'false'
224
- Puppet.settings[:localcacert] = localcacert
225
-
226
- expect(server.setup_ssl[:SSLCACertificateFile]).to eq(localcacert)
227
- end
228
-
229
- it "should specify the path to the CA certificate" do
230
- Puppet.settings[:hostcrl] = 'false'
231
- Puppet.settings[:localcacert] = localcacert
232
- Puppet.settings[:ssl_server_ca_auth] = ssl_server_ca_auth
233
-
234
- expect(server.setup_ssl[:SSLCACertificateFile]).to eq(ssl_server_ca_auth)
235
- end
236
-
237
- it "should not start ssl immediately" do
238
- expect(server.setup_ssl[:SSLStartImmediately]).to eq(false)
239
- end
240
-
241
- it "should enable ssl" do
242
- expect(server.setup_ssl[:SSLEnable]).to be_truthy
243
- end
244
-
245
- it "should reject SSLv2" do
246
- options = server.setup_ssl[:SSLOptions]
247
-
248
- expect(options & OpenSSL::SSL::OP_NO_SSLv2).to eq(OpenSSL::SSL::OP_NO_SSLv2)
249
- end
250
-
251
- it "should reject SSLv3" do
252
- options = server.setup_ssl[:SSLOptions]
253
-
254
- expect(options & OpenSSL::SSL::OP_NO_SSLv3).to eq(OpenSSL::SSL::OP_NO_SSLv3)
255
- end
256
-
257
- it "should configure the verification method as 'OpenSSL::SSL::VERIFY_PEER'" do
258
- expect(server.setup_ssl[:SSLVerifyClient]).to eq(OpenSSL::SSL::VERIFY_PEER)
259
- end
260
-
261
- it "should add an x509 store" do
262
- expect(host).to receive(:ssl_store).and_return("mystore")
263
-
264
- expect(server.setup_ssl[:SSLCertificateStore]).to eq("mystore")
265
- end
266
-
267
- it "should set the certificate name to 'nil'" do
268
- expect(server.setup_ssl[:SSLCertName]).to be_nil
269
- end
270
-
271
- it "specifies the allowable ciphers" do
272
- expect(mock_ssl_context).to receive(:ciphers=).with(server.class::CIPHERS)
273
-
274
- server.create_server('localhost', '8888')
275
- end
276
- end
277
- end
@@ -1,94 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet/network/server'
3
-
4
- describe Puppet::Network::Server do
5
- let(:port) { 8140 }
6
- let(:address) { '0.0.0.0' }
7
- let(:server) { Puppet::Network::Server.new(address, port) }
8
-
9
- before do
10
- @mock_http_server = double('http server')
11
- allow(Puppet.settings).to receive(:use)
12
- allow(Puppet::Network::HTTP::WEBrick).to receive(:new).and_return(@mock_http_server)
13
- end
14
-
15
- describe "when initializing" do
16
- before do
17
- Puppet[:masterport] = ''
18
- end
19
-
20
- it "should not be listening after initialization" do
21
- expect(Puppet::Network::Server.new(address, port)).not_to be_listening
22
- end
23
-
24
- it "should use the :main setting section" do
25
- expect(Puppet.settings).to receive(:use) { |*sections| expect(sections).to include(:main) }
26
- Puppet::Network::Server.new(address, port)
27
- end
28
-
29
- it "should use the :application setting section" do
30
- expect(Puppet.settings).to receive(:use) { |*sections| expect(sections).to include(:application) }
31
-
32
- Puppet::Network::Server.new(address, port)
33
- end
34
- end
35
-
36
- describe "when not yet started" do
37
- before do
38
- allow(@mock_http_server).to receive(:listen)
39
- end
40
-
41
- it "should indicate that it is not listening" do
42
- expect(server).not_to be_listening
43
- end
44
-
45
- it "should not allow server to be stopped" do
46
- expect { server.stop }.to raise_error(RuntimeError)
47
- end
48
-
49
- it "should allow server to be started" do
50
- expect { server.start }.to_not raise_error
51
- end
52
- end
53
-
54
- describe "when server is on" do
55
- before do
56
- allow(@mock_http_server).to receive(:listen)
57
- allow(@mock_http_server).to receive(:unlisten)
58
- server.start
59
- end
60
-
61
- it "should indicate that it is listening" do
62
- expect(server).to be_listening
63
- end
64
-
65
- it "should not allow server to be started again" do
66
- expect { server.start }.to raise_error(RuntimeError)
67
- end
68
-
69
- it "should allow server to be stopped" do
70
- expect { server.stop }.to_not raise_error
71
- end
72
- end
73
-
74
- describe "when server is being started" do
75
- it "should cause the HTTP server to listen" do
76
- server = Puppet::Network::Server.new(address, port)
77
- expect(@mock_http_server).to receive(:listen).with(address, port)
78
- server.start
79
- end
80
- end
81
-
82
- describe "when server is being stopped" do
83
- before do
84
- allow(@mock_http_server).to receive(:listen)
85
- allow(server).to receive(:http_server).and_return(@mock_http_server)
86
- server.start
87
- end
88
-
89
- it "should cause the HTTP server to stop listening" do
90
- expect(@mock_http_server).to receive(:unlisten)
91
- server.stop
92
- end
93
- end
94
- end
@@ -1,1096 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet/util/package'
3
-
4
- provider_class = Puppet::Type.type(:augeas).provider(:augeas)
5
-
6
- describe provider_class do
7
- before(:each) do
8
- @resource = Puppet::Type.type(:augeas).new(
9
- :name => "test",
10
- :root => my_fixture_dir,
11
- :provider => :augeas
12
- )
13
- @provider = provider_class.new(@resource)
14
- end
15
-
16
- after(:each) do
17
- @provider.close_augeas
18
- end
19
-
20
- describe "command parsing" do
21
- it "should break apart a single line into three tokens and clean up the context" do
22
- @resource[:context] = "/context"
23
- tokens = @provider.parse_commands("set Jar/Jar Binks")
24
- expect(tokens.size).to eq(1)
25
- expect(tokens[0].size).to eq(3)
26
- expect(tokens[0][0]).to eq("set")
27
- expect(tokens[0][1]).to eq("/context/Jar/Jar")
28
- expect(tokens[0][2]).to eq("Binks")
29
- end
30
-
31
- it "should break apart a multiple line into six tokens" do
32
- tokens = @provider.parse_commands("set /Jar/Jar Binks\nrm anakin")
33
- expect(tokens.size).to eq(2)
34
- expect(tokens[0].size).to eq(3)
35
- expect(tokens[1].size).to eq(2)
36
- expect(tokens[0][0]).to eq("set")
37
- expect(tokens[0][1]).to eq("/Jar/Jar")
38
- expect(tokens[0][2]).to eq("Binks")
39
- expect(tokens[1][0]).to eq("rm")
40
- expect(tokens[1][1]).to eq("anakin")
41
- end
42
-
43
- it "should strip whitespace and ignore blank lines" do
44
- tokens = @provider.parse_commands(" set /Jar/Jar Binks \t\n \n\n rm anakin ")
45
- expect(tokens.size).to eq(2)
46
- expect(tokens[0].size).to eq(3)
47
- expect(tokens[1].size).to eq(2)
48
- expect(tokens[0][0]).to eq("set")
49
- expect(tokens[0][1]).to eq("/Jar/Jar")
50
- expect(tokens[0][2]).to eq("Binks")
51
- expect(tokens[1][0]).to eq("rm")
52
- expect(tokens[1][1]).to eq("anakin")
53
- end
54
-
55
- it "should handle arrays" do
56
- @resource[:context] = "/foo/"
57
- commands = ["set /Jar/Jar Binks", "rm anakin"]
58
- tokens = @provider.parse_commands(commands)
59
- expect(tokens.size).to eq(2)
60
- expect(tokens[0].size).to eq(3)
61
- expect(tokens[1].size).to eq(2)
62
- expect(tokens[0][0]).to eq("set")
63
- expect(tokens[0][1]).to eq("/Jar/Jar")
64
- expect(tokens[0][2]).to eq("Binks")
65
- expect(tokens[1][0]).to eq("rm")
66
- expect(tokens[1][1]).to eq("/foo/anakin")
67
- end
68
-
69
- # This is not supported in the new parsing class
70
- #it "should concat the last values" do
71
- # provider = provider_class.new
72
- # tokens = provider.parse_commands("set /Jar/Jar Binks is my copilot")
73
- # tokens.size.should == 1
74
- # tokens[0].size.should == 3
75
- # tokens[0][0].should == "set"
76
- # tokens[0][1].should == "/Jar/Jar"
77
- # tokens[0][2].should == "Binks is my copilot"
78
- #end
79
-
80
- it "should accept spaces in the value and single ticks" do
81
- @resource[:context] = "/foo/"
82
- tokens = @provider.parse_commands("set JarJar 'Binks is my copilot'")
83
- expect(tokens.size).to eq(1)
84
- expect(tokens[0].size).to eq(3)
85
- expect(tokens[0][0]).to eq("set")
86
- expect(tokens[0][1]).to eq("/foo/JarJar")
87
- expect(tokens[0][2]).to eq("Binks is my copilot")
88
- end
89
-
90
- it "should accept spaces in the value and double ticks" do
91
- @resource[:context] = "/foo/"
92
- tokens = @provider.parse_commands('set /JarJar "Binks is my copilot"')
93
- expect(tokens.size).to eq(1)
94
- expect(tokens[0].size).to eq(3)
95
- expect(tokens[0][0]).to eq("set")
96
- expect(tokens[0][1]).to eq('/JarJar')
97
- expect(tokens[0][2]).to eq('Binks is my copilot')
98
- end
99
-
100
- it "should accept mixed ticks" do
101
- @resource[:context] = "/foo/"
102
- tokens = @provider.parse_commands('set JarJar "Some \'Test\'"')
103
- expect(tokens.size).to eq(1)
104
- expect(tokens[0].size).to eq(3)
105
- expect(tokens[0][0]).to eq("set")
106
- expect(tokens[0][1]).to eq('/foo/JarJar')
107
- expect(tokens[0][2]).to eq("Some \'Test\'")
108
- end
109
-
110
- it "should handle predicates with literals" do
111
- @resource[:context] = "/foo/"
112
- tokens = @provider.parse_commands("rm */*[module='pam_console.so']")
113
- expect(tokens).to eq([["rm", "/foo/*/*[module='pam_console.so']"]])
114
- end
115
-
116
- it "should handle whitespace in predicates" do
117
- @resource[:context] = "/foo/"
118
- tokens = @provider.parse_commands("ins 42 before /files/etc/hosts/*/ipaddr[ . = '127.0.0.1' ]")
119
- expect(tokens).to eq([["ins", "42", "before","/files/etc/hosts/*/ipaddr[ . = '127.0.0.1' ]"]])
120
- end
121
-
122
- it "should handle multiple predicates" do
123
- @resource[:context] = "/foo/"
124
- tokens = @provider.parse_commands("clear pam.d/*/*[module = 'system-auth'][type = 'account']")
125
- expect(tokens).to eq([["clear", "/foo/pam.d/*/*[module = 'system-auth'][type = 'account']"]])
126
- end
127
-
128
- it "should handle nested predicates" do
129
- @resource[:context] = "/foo/"
130
- args = ["clear", "/foo/pam.d/*/*[module[ ../type = 'type] = 'system-auth'][type[last()] = 'account']"]
131
- tokens = @provider.parse_commands(args.join(" "))
132
- expect(tokens).to eq([ args ])
133
- end
134
-
135
- it "should handle escaped doublequotes in doublequoted string" do
136
- @resource[:context] = "/foo/"
137
- tokens = @provider.parse_commands("set /foo \"''\\\"''\"")
138
- expect(tokens).to eq([[ "set", "/foo", "''\"''" ]])
139
- end
140
-
141
- it "should preserve escaped single quotes in double quoted strings" do
142
- @resource[:context] = "/foo/"
143
- tokens = @provider.parse_commands("set /foo \"\\'\"")
144
- expect(tokens).to eq([[ "set", "/foo", "\\'" ]])
145
- end
146
-
147
- it "should allow escaped spaces and brackets in paths" do
148
- @resource[:context] = "/foo/"
149
- args = [ "set", "/white\\ space/\\[section", "value" ]
150
- tokens = @provider.parse_commands(args.join(" \t "))
151
- expect(tokens).to eq([ args ])
152
- end
153
-
154
- it "should allow single quoted escaped spaces in paths" do
155
- @resource[:context] = "/foo/"
156
- args = [ "set", "'/white\\ space/key'", "value" ]
157
- tokens = @provider.parse_commands(args.join(" \t "))
158
- expect(tokens).to eq([[ "set", "/white\\ space/key", "value" ]])
159
- end
160
-
161
- it "should allow double quoted escaped spaces in paths" do
162
- @resource[:context] = "/foo/"
163
- args = [ "set", '"/white\\ space/key"', "value" ]
164
- tokens = @provider.parse_commands(args.join(" \t "))
165
- expect(tokens).to eq([[ "set", "/white\\ space/key", "value" ]])
166
- end
167
-
168
- it "should remove trailing slashes" do
169
- @resource[:context] = "/foo/"
170
- tokens = @provider.parse_commands("set foo/ bar")
171
- expect(tokens).to eq([[ "set", "/foo/foo", "bar" ]])
172
- end
173
- end
174
-
175
- describe "get filters" do
176
- before do
177
- augeas = double("augeas", :get => "value")
178
- allow(augeas).to receive("close")
179
- @provider.aug = augeas
180
- end
181
-
182
- it "should return false for a = nonmatch" do
183
- command = ["get", "fake value", "==", "value"]
184
- expect(@provider.process_get(command)).to eq(true)
185
- end
186
-
187
- it "should return true for a != match" do
188
- command = ["get", "fake value", "!=", "value"]
189
- expect(@provider.process_get(command)).to eq(false)
190
- end
191
-
192
- it "should return true for a =~ match" do
193
- command = ["get", "fake value", "=~", "val*"]
194
- expect(@provider.process_get(command)).to eq(true)
195
- end
196
-
197
- it "should return false for a == nonmatch" do
198
- command = ["get", "fake value", "=~", "num*"]
199
- expect(@provider.process_get(command)).to eq(false)
200
- end
201
- end
202
-
203
- describe "values filters" do
204
- before do
205
- augeas = double("augeas", :match => ["set", "of", "values"])
206
- allow(augeas).to receive(:get).and_return('set', 'of', 'values')
207
- allow(augeas).to receive("close")
208
- @provider = provider_class.new(@resource)
209
- @provider.aug = augeas
210
- end
211
-
212
- it "should return true for includes match" do
213
- command = ["values", "fake value", "include values"]
214
- expect(@provider.process_values(command)).to eq(true)
215
- end
216
-
217
- it "should return false for includes non match" do
218
- command = ["values", "fake value", "include JarJar"]
219
- expect(@provider.process_values(command)).to eq(false)
220
- end
221
-
222
- it "should return true for includes match" do
223
- command = ["values", "fake value", "not_include JarJar"]
224
- expect(@provider.process_values(command)).to eq(true)
225
- end
226
-
227
- it "should return false for includes non match" do
228
- command = ["values", "fake value", "not_include values"]
229
- expect(@provider.process_values(command)).to eq(false)
230
- end
231
-
232
- it "should return true for an array match" do
233
- command = ["values", "fake value", "== ['set', 'of', 'values']"]
234
- expect(@provider.process_values(command)).to eq(true)
235
- end
236
-
237
- it "should return true for an array match with double quotes and spaces" do
238
- command = ["values", "fake value", "== [ \"set\" , \"of\" , \"values\" ] "]
239
- expect(@provider.process_values(command)).to eq(true)
240
- end
241
-
242
- it "should return true for an array match with internally escaped single quotes" do
243
- allow(@provider.aug).to receive(:match).and_return(["set", "o'values", "here"])
244
- allow(@provider.aug).to receive(:get).and_return('set', "o'values", 'here')
245
- command = ["values", "fake value", "== [ 'set', 'o\\'values', 'here']"]
246
- expect(@provider.process_values(command)).to eq(true)
247
- end
248
-
249
- it "should return true for an array match with octal character sequences" do
250
- command = ["values", "fake value", "== [\"\\x73et\", \"of\", \"values\"]"]
251
- expect(@provider.process_values(command)).to eq(true)
252
- end
253
-
254
- it "should return true for an array match with hex character sequences" do
255
- command = ["values", "fake value", "== [\"\\163et\", \"of\", \"values\"]"]
256
- expect(@provider.process_values(command)).to eq(true)
257
- end
258
-
259
- it "should return true for an array match with short unicode escape sequences" do
260
- command = ["values", "fake value", "== [\"\\u0073et\", \"of\", \"values\"]"]
261
- expect(@provider.process_values(command)).to eq(true)
262
- end
263
-
264
- it "should return true for an array match with single character long unicode escape sequences" do
265
- command = ["values", "fake value", "== [\"\\u{0073}et\", \"of\", \"values\"]"]
266
- expect(@provider.process_values(command)).to eq(true)
267
- end
268
-
269
- it "should return true for an array match with multi-character long unicode escape sequences" do
270
- command = ["values", "fake value", "== [\"\\u{0073 0065 0074}\", \"of\", \"values\"]"]
271
- expect(@provider.process_values(command)).to eq(true)
272
- end
273
-
274
- it "should return true for an array match with literal backslashes" do
275
- allow(@provider.aug).to receive(:match).and_return(["set", "o\\values", "here"])
276
- allow(@provider.aug).to receive(:get).and_return('set', "o\\values", 'here')
277
- command = ["values", "fake value", "== [ 'set', 'o\\\\values', 'here']"]
278
- expect(@provider.process_values(command)).to eq(true)
279
- end
280
-
281
- it "should return false for an array non match" do
282
- command = ["values", "fake value", "== ['this', 'should', 'not', 'match']"]
283
- expect(@provider.process_values(command)).to eq(false)
284
- end
285
-
286
- it "should return false for an array match with noteq" do
287
- command = ["values", "fake value", "!= ['set', 'of', 'values']"]
288
- expect(@provider.process_values(command)).to eq(false)
289
- end
290
-
291
- it "should return true for an array non match with noteq" do
292
- command = ["values", "fake value", "!= ['this', 'should', 'not', 'match']"]
293
- expect(@provider.process_values(command)).to eq(true)
294
- end
295
-
296
- it "should return true for an array non match with double quotes and spaces" do
297
- command = ["values", "fake value", "!= [ \"this\" , \"should\" ,\"not\", \"match\" ] "]
298
- expect(@provider.process_values(command)).to eq(true)
299
- end
300
-
301
- it "should return true for an empty array match" do
302
- allow(@provider.aug).to receive(:match).and_return([])
303
- allow(@provider.aug).to receive(:get)
304
- command = ["values", "fake value", "== []"]
305
- expect(@provider.process_values(command)).to eq(true)
306
- end
307
- end
308
-
309
- describe "match filters" do
310
- before do
311
- augeas = double("augeas", :match => ["set", "of", "values"])
312
- allow(augeas).to receive("close")
313
- @provider = provider_class.new(@resource)
314
- @provider.aug = augeas
315
- end
316
-
317
- it "should return true for size match" do
318
- command = ["match", "fake value", "size == 3"]
319
- expect(@provider.process_match(command)).to eq(true)
320
- end
321
-
322
- it "should return false for a size non match" do
323
- command = ["match", "fake value", "size < 3"]
324
- expect(@provider.process_match(command)).to eq(false)
325
- end
326
-
327
- it "should return true for includes match" do
328
- command = ["match", "fake value", "include values"]
329
- expect(@provider.process_match(command)).to eq(true)
330
- end
331
-
332
- it "should return false for includes non match" do
333
- command = ["match", "fake value", "include JarJar"]
334
- expect(@provider.process_match(command)).to eq(false)
335
- end
336
-
337
- it "should return true for includes match" do
338
- command = ["match", "fake value", "not_include JarJar"]
339
- expect(@provider.process_match(command)).to eq(true)
340
- end
341
-
342
- it "should return false for includes non match" do
343
- command = ["match", "fake value", "not_include values"]
344
- expect(@provider.process_match(command)).to eq(false)
345
- end
346
-
347
- it "should return true for an array match" do
348
- command = ["match", "fake value", "== ['set', 'of', 'values']"]
349
- expect(@provider.process_match(command)).to eq(true)
350
- end
351
-
352
- it "should return true for an array match with double quotes and spaces" do
353
- command = ["match", "fake value", "== [ \"set\" , \"of\" , \"values\" ] "]
354
- expect(@provider.process_match(command)).to eq(true)
355
- end
356
-
357
- it "should return false for an array non match" do
358
- command = ["match", "fake value", "== ['this', 'should', 'not', 'match']"]
359
- expect(@provider.process_match(command)).to eq(false)
360
- end
361
-
362
- it "should return false for an array match with noteq" do
363
- command = ["match", "fake value", "!= ['set', 'of', 'values']"]
364
- expect(@provider.process_match(command)).to eq(false)
365
- end
366
-
367
- it "should return true for an array non match with noteq" do
368
- command = ["match", "fake value", "!= ['this', 'should', 'not', 'match']"]
369
- expect(@provider.process_match(command)).to eq(true)
370
- end
371
-
372
- it "should return true for an array non match with double quotes and spaces" do
373
- command = ["match", "fake value", "!= [ \"this\" , \"should\" ,\"not\", \"match\" ] "]
374
- expect(@provider.process_match(command)).to eq(true)
375
- end
376
- end
377
-
378
- describe "need to run" do
379
- before(:each) do
380
- @augeas = double("augeas")
381
- allow(@augeas).to receive("close")
382
- @provider.aug = @augeas
383
-
384
- # These tests pretend to be an earlier version so the provider doesn't
385
- # attempt to make the change in the need_to_run? method
386
- allow(@provider).to receive(:get_augeas_version).and_return("0.3.5")
387
- end
388
-
389
- it "should handle no filters" do
390
- allow(@augeas).to receive("match").and_return(["set", "of", "values"])
391
- expect(@provider.need_to_run?).to eq(true)
392
- end
393
-
394
- it "should return true when a get filter matches" do
395
- @resource[:onlyif] = "get path == value"
396
- allow(@augeas).to receive("get").and_return("value")
397
- expect(@provider.need_to_run?).to eq(true)
398
- end
399
-
400
- describe "performing numeric comparisons (#22617)" do
401
- it "should return true when a get string compare is true" do
402
- @resource[:onlyif] = "get bpath > a"
403
- allow(@augeas).to receive("get").and_return("b")
404
- expect(@provider.need_to_run?).to eq(true)
405
- end
406
-
407
- it "should return false when a get string compare is false" do
408
- @resource[:onlyif] = "get a19path > a2"
409
- allow(@augeas).to receive("get").and_return("a19")
410
- expect(@provider.need_to_run?).to eq(false)
411
- end
412
-
413
- it "should return true when a get int gt compare is true" do
414
- @resource[:onlyif] = "get path19 > 2"
415
- allow(@augeas).to receive("get").and_return("19")
416
- expect(@provider.need_to_run?).to eq(true)
417
- end
418
-
419
- it "should return true when a get int ge compare is true" do
420
- @resource[:onlyif] = "get path19 >= 2"
421
- allow(@augeas).to receive("get").and_return("19")
422
- expect(@provider.need_to_run?).to eq(true)
423
- end
424
-
425
- it "should return true when a get int lt compare is true" do
426
- @resource[:onlyif] = "get path2 < 19"
427
- allow(@augeas).to receive("get").and_return("2")
428
- expect(@provider.need_to_run?).to eq(true)
429
- end
430
-
431
- it "should return false when a get int le compare is false" do
432
- @resource[:onlyif] = "get path39 <= 4"
433
- allow(@augeas).to receive("get").and_return("39")
434
- expect(@provider.need_to_run?).to eq(false)
435
- end
436
- end
437
- describe "performing is_numeric checks (#22617)" do
438
- it "should return false for nil" do
439
- expect(@provider.is_numeric?(nil)).to eq(false)
440
- end
441
- it "should return true for Integers" do
442
- expect(@provider.is_numeric?(9)).to eq(true)
443
- end
444
- it "should return true for numbers in Strings" do
445
- expect(@provider.is_numeric?('9')).to eq(true)
446
- end
447
- it "should return false for non-number Strings" do
448
- expect(@provider.is_numeric?('x9')).to eq(false)
449
- end
450
- it "should return false for other types" do
451
- expect(@provider.is_numeric?([true])).to eq(false)
452
- end
453
- end
454
-
455
- it "should return false when a get filter does not match" do
456
- @resource[:onlyif] = "get path == another value"
457
- allow(@augeas).to receive("get").and_return("value")
458
- expect(@provider.need_to_run?).to eq(false)
459
- end
460
-
461
- it "should return true when a match filter matches" do
462
- @resource[:onlyif] = "match path size == 3"
463
- allow(@augeas).to receive("match").and_return(["set", "of", "values"])
464
- expect(@provider.need_to_run?).to eq(true)
465
- end
466
-
467
- it "should return false when a match filter does not match" do
468
- @resource[:onlyif] = "match path size == 2"
469
- allow(@augeas).to receive("match").and_return(["set", "of", "values"])
470
- expect(@provider.need_to_run?).to eq(false)
471
- end
472
-
473
- # Now setting force to true
474
- it "setting force should not change the above logic" do
475
- @resource[:force] = true
476
- @resource[:onlyif] = "match path size == 2"
477
- allow(@augeas).to receive("match").and_return(["set", "of", "values"])
478
- expect(@provider.need_to_run?).to eq(false)
479
- end
480
-
481
- #Ticket 5211 testing
482
- it "should return true when a size != the provided value" do
483
- @resource[:onlyif] = "match path size != 17"
484
- allow(@augeas).to receive("match").and_return(["set", "of", "values"])
485
- expect(@provider.need_to_run?).to eq(true)
486
- end
487
-
488
- #Ticket 5211 testing
489
- it "should return false when a size does equal the provided value" do
490
- @resource[:onlyif] = "match path size != 3"
491
- allow(@augeas).to receive("match").and_return(["set", "of", "values"])
492
- expect(@provider.need_to_run?).to eq(false)
493
- end
494
-
495
- [true, false].product([true, false]) do |cfg, param|
496
- describe "and Puppet[:show_diff] is #{cfg} and show_diff => #{param}" do
497
- let(:file) { "/some/random/file" }
498
-
499
- before(:each) do
500
- Puppet[:show_diff] = cfg
501
- @resource[:show_diff] = param
502
-
503
- @resource[:root] = ""
504
- @resource[:context] = "/files"
505
- @resource[:changes] = ["set #{file}/foo bar"]
506
-
507
- allow(File).to receive(:delete)
508
- allow(@provider).to receive(:get_augeas_version).and_return("0.10.0")
509
- allow(@provider).to receive("diff").with("#{file}", "#{file}.augnew").and_return("diff")
510
-
511
- allow(@augeas).to receive(:set).and_return(true)
512
- allow(@augeas).to receive(:save).and_return(true)
513
- allow(@augeas).to receive(:match).with("/augeas/events/saved").and_return(["/augeas/events/saved"])
514
- allow(@augeas).to receive(:get).with("/augeas/events/saved").and_return("/files#{file}")
515
- allow(@augeas).to receive(:set).with("/augeas/save", "newfile")
516
- end
517
-
518
- if cfg && param
519
- it "should display a diff" do
520
- expect(@provider).to be_need_to_run
521
-
522
- expect(@logs[0].message).to eq("\ndiff")
523
- end
524
- else
525
- it "should not display a diff" do
526
- expect(@provider).to be_need_to_run
527
-
528
- expect(@logs).to be_empty
529
- end
530
- end
531
- end
532
- end
533
-
534
- # Ticket 2728 (diff files)
535
- describe "and configured to show diffs" do
536
- before(:each) do
537
- Puppet[:show_diff] = true
538
- @resource[:show_diff] = true
539
-
540
- @resource[:root] = ""
541
- allow(@provider).to receive(:get_augeas_version).and_return("0.10.0")
542
- allow(@augeas).to receive(:set).and_return(true)
543
- allow(@augeas).to receive(:save).and_return(true)
544
- end
545
-
546
- it "should display a diff when a single file is shown to have been changed" do
547
- file = "/etc/hosts"
548
- allow(File).to receive(:delete)
549
-
550
- @resource[:loglevel] = "crit"
551
- @resource[:context] = "/files"
552
- @resource[:changes] = ["set #{file}/foo bar"]
553
-
554
- allow(@augeas).to receive(:match).with("/augeas/events/saved").and_return(["/augeas/events/saved"])
555
- allow(@augeas).to receive(:get).with("/augeas/events/saved").and_return("/files#{file}")
556
- expect(@augeas).to receive(:set).with("/augeas/save", "newfile")
557
- expect(@provider).to receive("diff").with("#{file}", "#{file}.augnew").and_return("diff")
558
-
559
- expect(@provider).to be_need_to_run
560
-
561
- expect(@logs[0].message).to eq("\ndiff")
562
- expect(@logs[0].level).to eq(:crit)
563
- end
564
-
565
- it "should display a diff for each file that is changed when changing many files" do
566
- file1 = "/etc/hosts"
567
- file2 = "/etc/resolv.conf"
568
- allow(File).to receive(:delete)
569
-
570
- @resource[:context] = "/files"
571
- @resource[:changes] = ["set #{file1}/foo bar", "set #{file2}/baz biz"]
572
-
573
- allow(@augeas).to receive(:match).with("/augeas/events/saved").and_return(["/augeas/events/saved[1]", "/augeas/events/saved[2]"])
574
- allow(@augeas).to receive(:get).with("/augeas/events/saved[1]").and_return("/files#{file1}")
575
- allow(@augeas).to receive(:get).with("/augeas/events/saved[2]").and_return("/files#{file2}")
576
- expect(@augeas).to receive(:set).with("/augeas/save", "newfile")
577
- expect(@provider).to receive(:diff).with("#{file1}", "#{file1}.augnew").and_return("diff #{file1}")
578
- expect(@provider).to receive(:diff).with("#{file2}", "#{file2}.augnew").and_return("diff #{file2}")
579
-
580
- expect(@provider).to be_need_to_run
581
-
582
- expect(@logs.collect(&:message)).to include("\ndiff #{file1}", "\ndiff #{file2}")
583
- expect(@logs.collect(&:level)).to eq([:notice, :notice])
584
- end
585
-
586
- describe "and resource[:root] is set" do
587
- it "should call diff when a file is shown to have been changed" do
588
- root = "/tmp/foo"
589
- file = "/etc/hosts"
590
- allow(File).to receive(:delete)
591
-
592
- @resource[:context] = "/files"
593
- @resource[:changes] = ["set #{file}/foo bar"]
594
- @resource[:root] = root
595
-
596
- allow(@augeas).to receive(:match).with("/augeas/events/saved").and_return(["/augeas/events/saved"])
597
- allow(@augeas).to receive(:get).with("/augeas/events/saved").and_return("/files#{file}")
598
- expect(@augeas).to receive(:set).with("/augeas/save", "newfile")
599
- expect(@provider).to receive(:diff).with("#{root}#{file}", "#{root}#{file}.augnew").and_return("diff")
600
-
601
- expect(@provider).to be_need_to_run
602
-
603
- expect(@logs[0].message).to eq("\ndiff")
604
- expect(@logs[0].level).to eq(:notice)
605
- end
606
- end
607
-
608
- it "should not call diff if no files change" do
609
- file = "/etc/hosts"
610
-
611
- @resource[:context] = "/files"
612
- @resource[:changes] = ["set #{file}/foo bar"]
613
-
614
- allow(@augeas).to receive(:match).with("/augeas/events/saved").and_return([])
615
- expect(@augeas).to receive(:set).with("/augeas/save", "newfile")
616
- expect(@augeas).not_to receive(:get).with("/augeas/events/saved")
617
- expect(@augeas).to receive(:close)
618
-
619
- expect(@provider).not_to receive(:diff)
620
- expect(@provider).not_to be_need_to_run
621
- end
622
-
623
- it "should cleanup the .augnew file" do
624
- file = "/etc/hosts"
625
-
626
- @resource[:context] = "/files"
627
- @resource[:changes] = ["set #{file}/foo bar"]
628
-
629
- allow(@augeas).to receive(:match).with("/augeas/events/saved").and_return(["/augeas/events/saved"])
630
- allow(@augeas).to receive(:get).with("/augeas/events/saved").and_return("/files#{file}")
631
- expect(@augeas).to receive(:set).with("/augeas/save", "newfile")
632
- expect(@augeas).to receive(:close)
633
-
634
- expect(File).to receive(:delete).with(file + ".augnew")
635
-
636
- expect(@provider).to receive(:diff).with("#{file}", "#{file}.augnew").and_return("")
637
- expect(@provider).to be_need_to_run
638
- end
639
-
640
- # Workaround for Augeas bug #264 which reports filenames twice
641
- it "should handle duplicate /augeas/events/saved filenames" do
642
- file = "/etc/hosts"
643
-
644
- @resource[:context] = "/files"
645
- @resource[:changes] = ["set #{file}/foo bar"]
646
-
647
- allow(@augeas).to receive(:match).with("/augeas/events/saved").and_return(["/augeas/events/saved[1]", "/augeas/events/saved[2]"])
648
- allow(@augeas).to receive(:get).with("/augeas/events/saved[1]").and_return("/files#{file}")
649
- allow(@augeas).to receive(:get).with("/augeas/events/saved[2]").and_return("/files#{file}")
650
- expect(@augeas).to receive(:set).with("/augeas/save", "newfile")
651
- expect(@augeas).to receive(:close)
652
-
653
- expect(File).to receive(:delete).with(file + ".augnew").once()
654
-
655
- expect(@provider).to receive(:diff).with("#{file}", "#{file}.augnew").and_return("").once()
656
- expect(@provider).to be_need_to_run
657
- end
658
-
659
- it "should fail with an error if saving fails" do
660
- file = "/etc/hosts"
661
-
662
- @resource[:context] = "/files"
663
- @resource[:changes] = ["set #{file}/foo bar"]
664
-
665
- allow(@augeas).to receive(:save).and_return(false)
666
- allow(@augeas).to receive(:match).with("/augeas/events/saved").and_return([])
667
- expect(@augeas).to receive(:close)
668
-
669
- expect(@provider).not_to receive(:diff)
670
- expect(@provider).to receive(:print_put_errors)
671
- expect { @provider.need_to_run? }.to raise_error(Puppet::Error)
672
- end
673
- end
674
- end
675
-
676
- describe "augeas execution integration" do
677
- before do
678
- @augeas = double("augeas", load: nil)
679
- allow(@augeas).to receive("close")
680
- allow(@augeas).to receive(:match).with("/augeas/events/saved").and_return([])
681
-
682
- @provider.aug = @augeas
683
- allow(@provider).to receive(:get_augeas_version).and_return("0.3.5")
684
- end
685
-
686
- it "should handle set commands" do
687
- @resource[:changes] = "set JarJar Binks"
688
- @resource[:context] = "/some/path/"
689
- expect(@augeas).to receive(:set).with("/some/path/JarJar", "Binks").and_return(true)
690
- expect(@augeas).to receive(:save).and_return(true)
691
- expect(@augeas).to receive(:close)
692
- expect(@provider.execute_changes).to eq(:executed)
693
- end
694
-
695
- it "should handle rm commands" do
696
- @resource[:changes] = "rm /Jar/Jar"
697
- expect(@augeas).to receive(:rm).with("/Jar/Jar")
698
- expect(@augeas).to receive(:save).and_return(true)
699
- expect(@augeas).to receive(:close)
700
- expect(@provider.execute_changes).to eq(:executed)
701
- end
702
-
703
- it "should handle remove commands" do
704
- @resource[:changes] = "remove /Jar/Jar"
705
- expect(@augeas).to receive(:rm).with("/Jar/Jar")
706
- expect(@augeas).to receive(:save).and_return(true)
707
- expect(@augeas).to receive(:close)
708
- expect(@provider.execute_changes).to eq(:executed)
709
- end
710
-
711
- it "should handle clear commands" do
712
- @resource[:changes] = "clear Jar/Jar"
713
- @resource[:context] = "/foo/"
714
- expect(@augeas).to receive(:clear).with("/foo/Jar/Jar").and_return(true)
715
- expect(@augeas).to receive(:save).and_return(true)
716
- expect(@augeas).to receive(:close)
717
- expect(@provider.execute_changes).to eq(:executed)
718
- end
719
-
720
- describe "touch command" do
721
- it "should clear missing path" do
722
- @resource[:changes] = "touch Jar/Jar"
723
- @resource[:context] = "/foo/"
724
- expect(@augeas).to receive(:match).with("/foo/Jar/Jar").and_return([])
725
- expect(@augeas).to receive(:clear).with("/foo/Jar/Jar").and_return(true)
726
- expect(@augeas).to receive(:save).and_return(true)
727
- expect(@augeas).to receive(:close)
728
- expect(@provider.execute_changes).to eq(:executed)
729
- end
730
-
731
- it "should not change on existing path" do
732
- @resource[:changes] = "touch Jar/Jar"
733
- @resource[:context] = "/foo/"
734
- expect(@augeas).to receive(:match).with("/foo/Jar/Jar").and_return(["/foo/Jar/Jar"])
735
- expect(@augeas).not_to receive(:clear)
736
- expect(@augeas).to receive(:save).and_return(true)
737
- expect(@augeas).to receive(:close)
738
- expect(@provider.execute_changes).to eq(:executed)
739
- end
740
- end
741
-
742
- it "should handle ins commands with before" do
743
- @resource[:changes] = "ins Binks before Jar/Jar"
744
- @resource[:context] = "/foo"
745
- expect(@augeas).to receive(:insert).with("/foo/Jar/Jar", "Binks", true)
746
- expect(@augeas).to receive(:save).and_return(true)
747
- expect(@augeas).to receive(:close)
748
- expect(@provider.execute_changes).to eq(:executed)
749
- end
750
-
751
- it "should handle ins commands with after" do
752
- @resource[:changes] = "ins Binks after /Jar/Jar"
753
- @resource[:context] = "/foo"
754
- expect(@augeas).to receive(:insert).with("/Jar/Jar", "Binks", false)
755
- expect(@augeas).to receive(:save).and_return(true)
756
- expect(@augeas).to receive(:close)
757
- expect(@provider.execute_changes).to eq(:executed)
758
- end
759
-
760
- it "should handle ins with no context" do
761
- @resource[:changes] = "ins Binks after /Jar/Jar"
762
- expect(@augeas).to receive(:insert).with("/Jar/Jar", "Binks", false)
763
- expect(@augeas).to receive(:save).and_return(true)
764
- expect(@augeas).to receive(:close)
765
- expect(@provider.execute_changes).to eq(:executed)
766
- end
767
-
768
- it "should handle multiple commands" do
769
- @resource[:changes] = ["ins Binks after /Jar/Jar", "clear Jar/Jar"]
770
- @resource[:context] = "/foo/"
771
- expect(@augeas).to receive(:insert).with("/Jar/Jar", "Binks", false)
772
- expect(@augeas).to receive(:clear).with("/foo/Jar/Jar").and_return(true)
773
- expect(@augeas).to receive(:save).and_return(true)
774
- expect(@augeas).to receive(:close)
775
- expect(@provider.execute_changes).to eq(:executed)
776
- end
777
-
778
- it "should handle defvar commands" do
779
- @resource[:changes] = "defvar myjar Jar/Jar"
780
- @resource[:context] = "/foo/"
781
- expect(@augeas).to receive(:defvar).with("myjar", "/foo/Jar/Jar").and_return(true)
782
- expect(@augeas).to receive(:save).and_return(true)
783
- expect(@augeas).to receive(:close)
784
- expect(@provider.execute_changes).to eq(:executed)
785
- end
786
-
787
- it "should pass through augeas variables without context" do
788
- @resource[:changes] = ["defvar myjar Jar/Jar","set $myjar/Binks 1"]
789
- @resource[:context] = "/foo/"
790
- expect(@augeas).to receive(:defvar).with("myjar", "/foo/Jar/Jar").and_return(true)
791
- # this is the important bit, shouldn't be /foo/$myjar/Binks
792
- expect(@augeas).to receive(:set).with("$myjar/Binks", "1").and_return(true)
793
- expect(@augeas).to receive(:save).and_return(true)
794
- expect(@augeas).to receive(:close)
795
- expect(@provider.execute_changes).to eq(:executed)
796
- end
797
-
798
- it "should handle defnode commands" do
799
- @resource[:changes] = "defnode newjar Jar/Jar[last()+1] Binks"
800
- @resource[:context] = "/foo/"
801
- expect(@augeas).to receive(:defnode).with("newjar", "/foo/Jar/Jar[last()+1]", "Binks").and_return(true)
802
- expect(@augeas).to receive(:save).and_return(true)
803
- expect(@augeas).to receive(:close)
804
- expect(@provider.execute_changes).to eq(:executed)
805
- end
806
-
807
- it "should handle mv commands" do
808
- @resource[:changes] = "mv Jar/Jar Binks"
809
- @resource[:context] = "/foo/"
810
- expect(@augeas).to receive(:mv).with("/foo/Jar/Jar", "/foo/Binks").and_return(true)
811
- expect(@augeas).to receive(:save).and_return(true)
812
- expect(@augeas).to receive(:close)
813
- expect(@provider.execute_changes).to eq(:executed)
814
- end
815
-
816
- it "should handle rename commands" do
817
- @resource[:changes] = "rename Jar/Jar Binks"
818
- @resource[:context] = "/foo/"
819
- expect(@augeas).to receive(:rename).with("/foo/Jar/Jar", "Binks").and_return(true)
820
- expect(@augeas).to receive(:save).and_return(true)
821
- expect(@augeas).to receive(:close)
822
- expect(@provider.execute_changes).to eq(:executed)
823
- end
824
-
825
- it "should handle setm commands" do
826
- @resource[:changes] = ["set test[1]/Jar/Jar Foo","set test[2]/Jar/Jar Bar","setm test Jar/Jar Binks"]
827
- @resource[:context] = "/foo/"
828
- expect(@augeas).to receive(:respond_to?).with("setm").and_return(true)
829
- expect(@augeas).to receive(:set).with("/foo/test[1]/Jar/Jar", "Foo").and_return(true)
830
- expect(@augeas).to receive(:set).with("/foo/test[2]/Jar/Jar", "Bar").and_return(true)
831
- expect(@augeas).to receive(:setm).with("/foo/test", "Jar/Jar", "Binks").and_return(true)
832
- expect(@augeas).to receive(:save).and_return(true)
833
- expect(@augeas).to receive(:close)
834
- expect(@provider.execute_changes).to eq(:executed)
835
- end
836
-
837
- it "should throw error if setm command not supported" do
838
- @resource[:changes] = ["set test[1]/Jar/Jar Foo","set test[2]/Jar/Jar Bar","setm test Jar/Jar Binks"]
839
- @resource[:context] = "/foo/"
840
- expect(@augeas).to receive(:respond_to?).with("setm").and_return(false)
841
- expect(@augeas).to receive(:set).with("/foo/test[1]/Jar/Jar", "Foo").and_return(true)
842
- expect(@augeas).to receive(:set).with("/foo/test[2]/Jar/Jar", "Bar").and_return(true)
843
- expect { @provider.execute_changes }.to raise_error RuntimeError, /command 'setm' not supported/
844
- end
845
-
846
- it "should handle clearm commands" do
847
- @resource[:changes] = ["set test[1]/Jar/Jar Foo","set test[2]/Jar/Jar Bar","clearm test Jar/Jar"]
848
- @resource[:context] = "/foo/"
849
- expect(@augeas).to receive(:respond_to?).with("clearm").and_return(true)
850
- expect(@augeas).to receive(:set).with("/foo/test[1]/Jar/Jar", "Foo").and_return(true)
851
- expect(@augeas).to receive(:set).with("/foo/test[2]/Jar/Jar", "Bar").and_return(true)
852
- expect(@augeas).to receive(:clearm).with("/foo/test", "Jar/Jar").and_return(true)
853
- expect(@augeas).to receive(:save).and_return(true)
854
- expect(@augeas).to receive(:close)
855
- expect(@provider.execute_changes).to eq(:executed)
856
- end
857
-
858
- it "should throw error if clearm command not supported" do
859
- @resource[:changes] = ["set test[1]/Jar/Jar Foo","set test[2]/Jar/Jar Bar","clearm test Jar/Jar"]
860
- @resource[:context] = "/foo/"
861
- expect(@augeas).to receive(:respond_to?).with("clearm").and_return(false)
862
- expect(@augeas).to receive(:set).with("/foo/test[1]/Jar/Jar", "Foo").and_return(true)
863
- expect(@augeas).to receive(:set).with("/foo/test[2]/Jar/Jar", "Bar").and_return(true)
864
- expect { @provider.execute_changes }.to raise_error(RuntimeError, /command 'clearm' not supported/)
865
- end
866
-
867
- it "should throw error if saving failed" do
868
- @resource[:changes] = ["set test[1]/Jar/Jar Foo","set test[2]/Jar/Jar Bar","clearm test Jar/Jar"]
869
- @resource[:context] = "/foo/"
870
- expect(@augeas).to receive(:respond_to?).with("clearm").and_return(true)
871
- expect(@augeas).to receive(:set).with("/foo/test[1]/Jar/Jar", "Foo").and_return(true)
872
- expect(@augeas).to receive(:set).with("/foo/test[2]/Jar/Jar", "Bar").and_return(true)
873
- expect(@augeas).to receive(:clearm).with("/foo/test", "Jar/Jar").and_return(true)
874
- expect(@augeas).to receive(:save).and_return(false)
875
- expect(@provider).to receive(:print_put_errors)
876
- expect(@augeas).to receive(:match).and_return([])
877
- expect { @provider.execute_changes }.to raise_error(Puppet::Error)
878
- end
879
- end
880
-
881
- describe "when making changes", :if => Puppet.features.augeas? do
882
- include PuppetSpec::Files
883
-
884
- it "should not clobber the file if it's a symlink" do
885
- allow(Puppet::Util::Storage).to receive(:store)
886
-
887
- link = tmpfile('link')
888
- target = tmpfile('target')
889
- FileUtils.touch(target)
890
- Puppet::FileSystem.symlink(target, link)
891
-
892
- resource = Puppet::Type.type(:augeas).new(
893
- :name => 'test',
894
- :incl => link,
895
- :lens => 'Sshd.lns',
896
- :changes => "set PermitRootLogin no"
897
- )
898
-
899
- catalog = Puppet::Resource::Catalog.new
900
- catalog.add_resource resource
901
-
902
- catalog.apply
903
-
904
- expect(File.ftype(link)).to eq('link')
905
- expect(Puppet::FileSystem.readlink(link)).to eq(target)
906
- expect(File.read(target)).to match(/PermitRootLogin no/)
907
- end
908
- end
909
-
910
- describe "load/save failure reporting" do
911
- before do
912
- @augeas = double("augeas")
913
- allow(@augeas).to receive("close")
914
- @provider.aug = @augeas
915
- end
916
-
917
- describe "should find load errors" do
918
- before do
919
- expect(@augeas).to receive(:match).with("/augeas//error").and_return(["/augeas/files/foo/error"])
920
- expect(@augeas).to receive(:match).with("/augeas/files/foo/error/*").and_return(["/augeas/files/foo/error/path", "/augeas/files/foo/error/message"])
921
- expect(@augeas).to receive(:get).with("/augeas/files/foo/error").and_return("some_failure")
922
- expect(@augeas).to receive(:get).with("/augeas/files/foo/error/path").and_return("/foo")
923
- expect(@augeas).to receive(:get).with("/augeas/files/foo/error/message").and_return("Failed to...")
924
- end
925
-
926
- it "and output only to debug when no path supplied" do
927
- expect(@provider).to receive(:debug).exactly(5).times()
928
- expect(@provider).not_to receive(:warning)
929
- @provider.print_load_errors(nil)
930
- end
931
-
932
- it "and output a warning and to debug when path supplied" do
933
- expect(@augeas).to receive(:match).with("/augeas/files/foo//error").and_return(["/augeas/files/foo/error"])
934
- expect(@provider).to receive(:warning).once()
935
- expect(@provider).to receive(:debug).exactly(4).times()
936
- @provider.print_load_errors('/augeas/files/foo//error')
937
- end
938
-
939
- it "and output only to debug when path doesn't match" do
940
- expect(@augeas).to receive(:match).with("/augeas/files/foo//error").and_return([])
941
- expect(@provider).not_to receive(:warning)
942
- expect(@provider).to receive(:debug).exactly(5).times()
943
- @provider.print_load_errors('/augeas/files/foo//error')
944
- end
945
- end
946
-
947
- it "should find load errors from lenses" do
948
- expect(@augeas).to receive(:match).with("/augeas//error").twice.and_return(["/augeas/load/Xfm/error"])
949
- expect(@augeas).to receive(:match).with("/augeas/load/Xfm/error/*").and_return([])
950
- expect(@augeas).to receive(:get).with("/augeas/load/Xfm/error").and_return(["Could not find lens php.aug"])
951
- expect(@provider).to receive(:warning).once()
952
- expect(@provider).to receive(:debug).twice()
953
- @provider.print_load_errors('/augeas//error')
954
- end
955
-
956
- it "should find save errors and output to debug" do
957
- expect(@augeas).to receive(:match).with("/augeas//error[. = 'put_failed']").and_return(["/augeas/files/foo/error"])
958
- expect(@augeas).to receive(:match).with("/augeas/files/foo/error/*").and_return(["/augeas/files/foo/error/path", "/augeas/files/foo/error/message"])
959
- expect(@augeas).to receive(:get).with("/augeas/files/foo/error").and_return("some_failure")
960
- expect(@augeas).to receive(:get).with("/augeas/files/foo/error/path").and_return("/foo")
961
- expect(@augeas).to receive(:get).with("/augeas/files/foo/error/message").and_return("Failed to...")
962
- expect(@provider).to receive(:debug).exactly(5).times()
963
- @provider.print_put_errors
964
- end
965
- end
966
-
967
- # Run initialisation tests of the real Augeas library to test our open_augeas
968
- # method. This relies on Augeas and ruby-augeas on the host to be
969
- # functioning.
970
- describe "augeas lib initialisation", :if => Puppet.features.augeas? do
971
- # Expect lenses for fstab and hosts
972
- it "should have loaded standard files by default" do
973
- aug = @provider.open_augeas
974
- expect(aug).not_to eq(nil)
975
- expect(aug.match("/files/etc/fstab")).to eq(["/files/etc/fstab"])
976
- expect(aug.match("/files/etc/hosts")).to eq(["/files/etc/hosts"])
977
- expect(aug.match("/files/etc/test")).to eq([])
978
- end
979
-
980
- it "should report load errors to debug only" do
981
- expect(@provider).to receive(:print_load_errors).with(nil)
982
- aug = @provider.open_augeas
983
- expect(aug).not_to eq(nil)
984
- end
985
-
986
- # Only the file specified should be loaded
987
- it "should load one file if incl/lens used" do
988
- @resource[:incl] = "/etc/hosts"
989
- @resource[:lens] = "Hosts.lns"
990
-
991
- expect(@provider).to receive(:print_load_errors).with('/augeas//error')
992
- aug = @provider.open_augeas
993
- expect(aug).not_to eq(nil)
994
- expect(aug.match("/files/etc/fstab")).to eq([])
995
- expect(aug.match("/files/etc/hosts")).to eq(["/files/etc/hosts"])
996
- expect(aug.match("/files/etc/test")).to eq([])
997
- end
998
-
999
- it "should also load lenses from load_path" do
1000
- @resource[:load_path] = my_fixture_dir
1001
-
1002
- aug = @provider.open_augeas
1003
- expect(aug).not_to eq(nil)
1004
- expect(aug.match("/files/etc/fstab")).to eq(["/files/etc/fstab"])
1005
- expect(aug.match("/files/etc/hosts")).to eq(["/files/etc/hosts"])
1006
- expect(aug.match("/files/etc/test")).to eq(["/files/etc/test"])
1007
- end
1008
-
1009
- it "should also load lenses from pluginsync'd path" do
1010
- Puppet[:libdir] = my_fixture_dir
1011
-
1012
- aug = @provider.open_augeas
1013
- expect(aug).not_to eq(nil)
1014
- expect(aug.match("/files/etc/fstab")).to eq(["/files/etc/fstab"])
1015
- expect(aug.match("/files/etc/hosts")).to eq(["/files/etc/hosts"])
1016
- expect(aug.match("/files/etc/test")).to eq(["/files/etc/test"])
1017
- end
1018
-
1019
- # Optimisations added for Augeas 0.8.2 or higher is available, see #7285
1020
- describe ">= 0.8.2 optimisations", :if => Puppet.features.augeas? && Facter.value(:augeasversion) && Puppet::Util::Package.versioncmp(Facter.value(:augeasversion), "0.8.2") >= 0 do
1021
- it "should only load one file if relevant context given" do
1022
- @resource[:context] = "/files/etc/fstab"
1023
-
1024
- expect(@provider).to receive(:print_load_errors).with('/augeas/files/etc/fstab//error')
1025
- aug = @provider.open_augeas
1026
- expect(aug).not_to eq(nil)
1027
- expect(aug.match("/files/etc/fstab")).to eq(["/files/etc/fstab"])
1028
- expect(aug.match("/files/etc/hosts")).to eq([])
1029
- end
1030
-
1031
- it "should only load one lens from load_path if context given" do
1032
- @resource[:context] = "/files/etc/test"
1033
- @resource[:load_path] = my_fixture_dir
1034
-
1035
- expect(@provider).to receive(:print_load_errors).with('/augeas/files/etc/test//error')
1036
- aug = @provider.open_augeas
1037
- expect(aug).not_to eq(nil)
1038
- expect(aug.match("/files/etc/fstab")).to eq([])
1039
- expect(aug.match("/files/etc/hosts")).to eq([])
1040
- expect(aug.match("/files/etc/test")).to eq(["/files/etc/test"])
1041
- end
1042
-
1043
- it "should load standard files if context isn't specific" do
1044
- @resource[:context] = "/files/etc"
1045
-
1046
- expect(@provider).to receive(:print_load_errors).with(nil)
1047
- aug = @provider.open_augeas
1048
- expect(aug).not_to eq(nil)
1049
- expect(aug.match("/files/etc/fstab")).to eq(["/files/etc/fstab"])
1050
- expect(aug.match("/files/etc/hosts")).to eq(["/files/etc/hosts"])
1051
- end
1052
-
1053
- it "should not optimise if the context is a complex path" do
1054
- @resource[:context] = "/files/*[label()='etc']"
1055
-
1056
- expect(@provider).to receive(:print_load_errors).with(nil)
1057
- aug = @provider.open_augeas
1058
- expect(aug).not_to eq(nil)
1059
- expect(aug.match("/files/etc/fstab")).to eq(["/files/etc/fstab"])
1060
- expect(aug.match("/files/etc/hosts")).to eq(["/files/etc/hosts"])
1061
- end
1062
- end
1063
- end
1064
-
1065
- describe "get_load_path" do
1066
- it "should offer no load_path by default" do
1067
- expect(@provider.get_load_path(@resource)).to eq("")
1068
- end
1069
-
1070
- it "should offer one path from load_path" do
1071
- @resource[:load_path] = "/foo"
1072
- expect(@provider.get_load_path(@resource)).to eq("/foo")
1073
- end
1074
-
1075
- it "should offer multiple colon-separated paths from load_path" do
1076
- @resource[:load_path] = "/foo:/bar:/baz"
1077
- expect(@provider.get_load_path(@resource)).to eq("/foo:/bar:/baz")
1078
- end
1079
-
1080
- it "should offer multiple paths in array from load_path" do
1081
- @resource[:load_path] = ["/foo", "/bar", "/baz"]
1082
- expect(@provider.get_load_path(@resource)).to eq("/foo:/bar:/baz")
1083
- end
1084
-
1085
- it "should offer pluginsync augeas/lenses subdir" do
1086
- Puppet[:libdir] = my_fixture_dir
1087
- expect(@provider.get_load_path(@resource)).to eq("#{my_fixture_dir}/augeas/lenses")
1088
- end
1089
-
1090
- it "should offer both pluginsync and load_path paths" do
1091
- Puppet[:libdir] = my_fixture_dir
1092
- @resource[:load_path] = ["/foo", "/bar", "/baz"]
1093
- expect(@provider.get_load_path(@resource)).to eq("/foo:/bar:/baz:#{my_fixture_dir}/augeas/lenses")
1094
- end
1095
- end
1096
- end