puppet 4.0.0 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1327) hide show
  1. data/COMMITTERS.md +2 -2
  2. data/CONTRIBUTING.md +10 -10
  3. data/Gemfile +6 -8
  4. data/LICENSE +3 -3
  5. data/README.md +14 -10
  6. data/Rakefile +20 -0
  7. data/conf/auth.conf +2 -2
  8. data/conf/puppet.conf +1 -1
  9. data/ext/README.environment +1 -1
  10. data/ext/build_defaults.yaml +9 -36
  11. data/ext/debian/README.source +1 -1
  12. data/ext/debian/control +1 -1
  13. data/ext/debian/copyright +4 -4
  14. data/ext/debian/puppet.default +0 -5
  15. data/ext/debian/puppet.init +1 -16
  16. data/ext/debian/puppet.logrotate +14 -5
  17. data/ext/debian/puppetmaster.README.debian +11 -9
  18. data/ext/emacs/puppet-mode.el +1 -1
  19. data/ext/envpuppet +2 -2
  20. data/ext/ips/puppetagent.xml +1 -1
  21. data/ext/ips/puppetmaster.xml +1 -1
  22. data/ext/osx/puppet.plist +30 -0
  23. data/ext/project_data.yaml +11 -1
  24. data/ext/puppet-test +3 -3
  25. data/ext/rack/example-passenger-vhost.conf +1 -1
  26. data/ext/redhat/client.init +67 -17
  27. data/ext/redhat/client.sysconfig +1 -10
  28. data/ext/redhat/logrotate +15 -3
  29. data/ext/redhat/puppet.spec.erb +6 -11
  30. data/ext/redhat/server.init +1 -1
  31. data/ext/regexp_nodes/regexp_nodes.rb +1 -1
  32. data/ext/solaris/pkginfo +1 -1
  33. data/ext/solaris/smf/puppet +44 -0
  34. data/ext/solaris/smf/puppet.xml +44 -0
  35. data/ext/suse/client.init +30 -33
  36. data/ext/suse/puppet.spec +2 -2
  37. data/ext/suse/server.init +2 -2
  38. data/ext/systemd/puppet.service +3 -1
  39. data/ext/upload_facts.rb +1 -1
  40. data/ext/windows/puppet_interactive.bat +6 -0
  41. data/ext/windows/puppet_shell.bat +9 -0
  42. data/ext/windows/run_puppet_interactive.bat +9 -0
  43. data/ext/yaml_nodes.rb +1 -1
  44. data/install.rb +51 -59
  45. data/lib/hiera/puppet_function.rb +18 -7
  46. data/lib/hiera/scope.rb +1 -1
  47. data/lib/hiera_puppet.rb +6 -14
  48. data/lib/puppet/agent/locker.rb +11 -2
  49. data/lib/puppet/agent.rb +9 -24
  50. data/lib/puppet/application/agent.rb +39 -19
  51. data/lib/puppet/application/apply.rb +68 -15
  52. data/lib/puppet/application/ca.rb +1 -0
  53. data/lib/puppet/application/cert.rb +17 -1
  54. data/lib/puppet/application/device.rb +9 -4
  55. data/lib/puppet/application/filebucket.rb +79 -5
  56. data/lib/puppet/application/inspect.rb +2 -2
  57. data/lib/puppet/application/lookup.rb +342 -0
  58. data/lib/puppet/application/master.rb +22 -7
  59. data/lib/puppet/application/resource.rb +1 -5
  60. data/lib/puppet/configurer/plugin_handler.rb +6 -2
  61. data/lib/puppet/configurer.rb +116 -31
  62. data/lib/puppet/context/trusted_information.rb +21 -1
  63. data/lib/puppet/context.rb +16 -1
  64. data/lib/puppet/daemon.rb +17 -13
  65. data/lib/puppet/data_binding.rb +4 -2
  66. data/lib/puppet/data_providers/data_adapter.rb +7 -68
  67. data/lib/puppet/data_providers/data_function_support.rb +5 -26
  68. data/lib/puppet/data_providers/function_env_data_provider.rb +0 -10
  69. data/lib/puppet/data_providers/function_module_data_provider.rb +0 -22
  70. data/lib/puppet/data_providers/hiera_config.rb +129 -0
  71. data/lib/puppet/data_providers/hiera_env_data_provider.rb +18 -0
  72. data/lib/puppet/data_providers/hiera_interpolate.rb +19 -0
  73. data/lib/puppet/data_providers/hiera_module_data_provider.rb +23 -0
  74. data/lib/puppet/data_providers/hiera_support.rb +37 -0
  75. data/lib/puppet/data_providers/json_data_provider_factory.rb +24 -0
  76. data/lib/puppet/data_providers/lookup_adapter.rb +247 -0
  77. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +26 -0
  78. data/lib/puppet/data_providers.rb +12 -13
  79. data/lib/puppet/defaults.rb +202 -47
  80. data/lib/puppet/environments.rb +98 -8
  81. data/lib/puppet/error.rb +31 -1
  82. data/lib/puppet/face/config.rb +1 -1
  83. data/lib/puppet/face/epp.rb +1 -1
  84. data/lib/puppet/face/help/man.erb +1 -1
  85. data/lib/puppet/face/module/changes.rb +2 -1
  86. data/lib/puppet/face/module/install.rb +6 -6
  87. data/lib/puppet/face/parser.rb +12 -9
  88. data/lib/puppet/face/plugin.rb +7 -14
  89. data/lib/puppet/face/status.rb +2 -1
  90. data/lib/puppet/feature/cfacter.rb +1 -0
  91. data/lib/puppet/feature/cfpropertylist.rb +3 -0
  92. data/lib/puppet/feature/telnet.rb +9 -0
  93. data/lib/puppet/file_bucket/dipper.rb +58 -2
  94. data/lib/puppet/file_serving/http_metadata.rb +46 -0
  95. data/lib/puppet/file_serving/metadata.rb +30 -9
  96. data/lib/puppet/file_serving/terminus_helper.rb +7 -8
  97. data/lib/puppet/file_serving/terminus_selector.rb +2 -0
  98. data/lib/puppet/file_system/file_impl.rb +6 -2
  99. data/lib/puppet/file_system/memory_impl.rb +5 -1
  100. data/lib/puppet/file_system/uniquefile.rb +3 -3
  101. data/lib/puppet/file_system/windows.rb +12 -16
  102. data/lib/puppet/file_system.rb +15 -2
  103. data/lib/puppet/forge/repository.rb +1 -32
  104. data/lib/puppet/forge.rb +1 -1
  105. data/lib/puppet/functions/assert_type.rb +57 -21
  106. data/lib/puppet/functions/defined.rb +161 -0
  107. data/lib/puppet/functions/dig.rb +39 -0
  108. data/lib/puppet/functions/each.rb +89 -39
  109. data/lib/puppet/functions/epp.rb +29 -37
  110. data/lib/puppet/functions/filter.rb +64 -38
  111. data/lib/puppet/functions/hiera.rb +76 -3
  112. data/lib/puppet/functions/hiera_array.rb +65 -3
  113. data/lib/puppet/functions/hiera_hash.rb +74 -2
  114. data/lib/puppet/functions/hiera_include.rb +77 -4
  115. data/lib/puppet/functions/inline_epp.rb +44 -71
  116. data/lib/puppet/functions/lest.rb +53 -0
  117. data/lib/puppet/functions/lookup.rb +172 -184
  118. data/lib/puppet/functions/map.rb +60 -33
  119. data/lib/puppet/functions/match.rb +30 -12
  120. data/lib/puppet/functions/new.rb +502 -0
  121. data/lib/puppet/functions/reduce.rb +99 -70
  122. data/lib/puppet/functions/regsubst.rb +12 -11
  123. data/lib/puppet/functions/reverse_each.rb +82 -0
  124. data/lib/puppet/functions/scanf.rb +15 -18
  125. data/lib/puppet/functions/slice.rb +22 -36
  126. data/lib/puppet/functions/split.rb +3 -3
  127. data/lib/puppet/functions/step.rb +88 -0
  128. data/lib/puppet/functions/then.rb +74 -0
  129. data/lib/puppet/functions/type.rb +70 -0
  130. data/lib/puppet/functions/versioncmp.rb +36 -0
  131. data/lib/puppet/functions/with.rb +15 -7
  132. data/lib/puppet/functions.rb +149 -13
  133. data/lib/puppet/graph/rb_tree_map.rb +1 -1
  134. data/lib/puppet/indirector/catalog/compiler.rb +196 -9
  135. data/lib/puppet/indirector/catalog/static_compiler.rb +46 -30
  136. data/lib/puppet/indirector/data_binding/none.rb +4 -1
  137. data/lib/puppet/indirector/facts/facter.rb +8 -0
  138. data/lib/puppet/indirector/file_bucket_file/file.rb +58 -1
  139. data/lib/puppet/indirector/file_content/http.rb +15 -0
  140. data/lib/puppet/indirector/file_metadata/http.rb +27 -0
  141. data/lib/puppet/indirector/generic_http.rb +16 -0
  142. data/lib/puppet/indirector/hiera.rb +7 -1
  143. data/lib/puppet/indirector/indirection.rb +12 -3
  144. data/lib/puppet/indirector/json.rb +3 -3
  145. data/lib/puppet/indirector/msgpack.rb +2 -2
  146. data/lib/puppet/indirector/node/exec.rb +1 -1
  147. data/lib/puppet/indirector/node/ldap.rb +1 -1
  148. data/lib/puppet/indirector/request.rb +7 -8
  149. data/lib/puppet/indirector/resource_type/parser.rb +10 -3
  150. data/lib/puppet/indirector/rest.rb +7 -2
  151. data/lib/puppet/indirector/terminus.rb +4 -4
  152. data/lib/puppet/info_service/class_information_service.rb +112 -0
  153. data/lib/puppet/info_service.rb +7 -0
  154. data/lib/puppet/loaders.rb +4 -0
  155. data/lib/puppet/metatype/manager.rb +19 -2
  156. data/lib/puppet/module.rb +26 -17
  157. data/lib/puppet/module_tool/applications/application.rb +1 -1
  158. data/lib/puppet/module_tool/applications/builder.rb +2 -2
  159. data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
  160. data/lib/puppet/module_tool/metadata.rb +32 -9
  161. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +14 -3
  162. data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +42 -38
  163. data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +19 -4
  164. data/lib/puppet/module_tool/skeleton/templates/generator/{tests → examples}/init.pp.erb +2 -2
  165. data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +25 -18
  166. data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -2
  167. data/lib/puppet/module_tool/tar/mini.rb +3 -3
  168. data/lib/puppet/network/auth_config_parser.rb +1 -1
  169. data/lib/puppet/network/authconfig.rb +21 -1
  170. data/lib/puppet/network/authorization.rb +8 -1
  171. data/lib/puppet/network/http/api/indirected_routes.rb +0 -2
  172. data/lib/puppet/network/http/api/master/v3/environment.rb +63 -0
  173. data/lib/puppet/network/http/api/master/v3.rb +7 -1
  174. data/lib/puppet/network/http/factory.rb +8 -4
  175. data/lib/puppet/network/http/pool.rb +9 -0
  176. data/lib/puppet/network/http/rack/rest.rb +10 -1
  177. data/lib/puppet/node/environment.rb +35 -11
  178. data/lib/puppet/node.rb +39 -8
  179. data/lib/puppet/parser/ast/pops_bridge.rb +85 -24
  180. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +64 -0
  181. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +60 -0
  182. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +20 -0
  183. data/lib/puppet/parser/compiler/catalog_validator.rb +33 -0
  184. data/lib/puppet/parser/compiler.rb +305 -15
  185. data/lib/puppet/parser/e4_parser_adapter.rb +13 -12
  186. data/lib/puppet/parser/environment_compiler.rb +164 -0
  187. data/lib/puppet/parser/functions/assert_type.rb +46 -16
  188. data/lib/puppet/parser/functions/defined.rb +105 -44
  189. data/lib/puppet/parser/functions/each.rb +85 -27
  190. data/lib/puppet/parser/functions/epp.rb +29 -37
  191. data/lib/puppet/parser/functions/file.rb +3 -1
  192. data/lib/puppet/parser/functions/filter.rb +59 -23
  193. data/lib/puppet/parser/functions/fqdn_rand.rb +3 -3
  194. data/lib/puppet/parser/functions/hiera.rb +83 -27
  195. data/lib/puppet/parser/functions/hiera_array.rb +71 -28
  196. data/lib/puppet/parser/functions/hiera_hash.rb +81 -30
  197. data/lib/puppet/parser/functions/hiera_include.rb +81 -40
  198. data/lib/puppet/parser/functions/inline_epp.rb +35 -60
  199. data/lib/puppet/parser/functions/inline_template.rb +2 -2
  200. data/lib/puppet/parser/functions/lookup.rb +125 -149
  201. data/lib/puppet/parser/functions/map.rb +55 -20
  202. data/lib/puppet/parser/functions/match.rb +28 -12
  203. data/lib/puppet/parser/functions/reduce.rb +97 -60
  204. data/lib/puppet/parser/functions/scanf.rb +15 -26
  205. data/lib/puppet/parser/functions/slice.rb +17 -24
  206. data/lib/puppet/parser/functions/split.rb +1 -1
  207. data/lib/puppet/parser/functions/with.rb +16 -8
  208. data/lib/puppet/parser/functions.rb +28 -16
  209. data/lib/puppet/parser/resource.rb +119 -26
  210. data/lib/puppet/parser/scope.rb +233 -24
  211. data/lib/puppet/parser/templatewrapper.rb +2 -1
  212. data/lib/puppet/parser.rb +3 -0
  213. data/lib/puppet/plugins/configuration.rb +3 -2
  214. data/lib/puppet/plugins/data_providers/data_provider.rb +336 -0
  215. data/lib/puppet/plugins/data_providers/registry.rb +84 -0
  216. data/lib/puppet/plugins/data_providers.rb +12 -60
  217. data/lib/puppet/pops/adaptable.rb +4 -1
  218. data/lib/puppet/pops/adapters.rb +96 -12
  219. data/lib/puppet/pops/binder/binder.rb +21 -17
  220. data/lib/puppet/pops/binder/binder_issues.rb +8 -6
  221. data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
  222. data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
  223. data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
  224. data/lib/puppet/pops/binder/bindings_label_provider.rb +3 -1
  225. data/lib/puppet/pops/binder/bindings_loader.rb +6 -2
  226. data/lib/puppet/pops/binder/bindings_model.rb +49 -47
  227. data/lib/puppet/pops/binder/bindings_model_meta.rb +2 -2
  228. data/lib/puppet/pops/binder/config/binder_config.rb +1 -1
  229. data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
  230. data/lib/puppet/pops/binder/injector.rb +55 -50
  231. data/lib/puppet/pops/binder/key_factory.rb +10 -12
  232. data/lib/puppet/pops/binder/producers.rb +67 -62
  233. data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +68 -9
  234. data/lib/puppet/pops/evaluator/access_operator.rb +189 -138
  235. data/lib/puppet/pops/evaluator/closure.rb +151 -104
  236. data/lib/puppet/pops/evaluator/collector_transformer.rb +35 -25
  237. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
  238. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +4 -0
  239. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +4 -1
  240. data/lib/puppet/pops/evaluator/compare_operator.rb +87 -10
  241. data/lib/puppet/pops/evaluator/epp_evaluator.rb +16 -10
  242. data/lib/puppet/pops/evaluator/evaluator_impl.rb +204 -111
  243. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +85 -0
  244. data/lib/puppet/pops/evaluator/literal_evaluator.rb +88 -0
  245. data/lib/puppet/pops/evaluator/relationship_operator.rb +19 -11
  246. data/lib/puppet/pops/evaluator/runtime3_converter.rb +19 -2
  247. data/lib/puppet/pops/evaluator/runtime3_support.rb +95 -44
  248. data/lib/puppet/pops/functions/dispatch.rb +6 -1
  249. data/lib/puppet/pops/functions/dispatcher.rb +10 -4
  250. data/lib/puppet/pops/functions/function.rb +6 -2
  251. data/lib/puppet/pops/issue_reporter.rb +48 -20
  252. data/lib/puppet/pops/issues.rb +194 -17
  253. data/lib/puppet/pops/label_provider.rb +1 -1
  254. data/lib/puppet/pops/loader/base_loader.rb +48 -7
  255. data/lib/puppet/pops/loader/dependency_loader.rb +27 -2
  256. data/lib/puppet/pops/loader/loader.rb +23 -0
  257. data/lib/puppet/pops/loader/loader_paths.rb +82 -6
  258. data/lib/puppet/pops/loader/module_loaders.rb +36 -21
  259. data/lib/puppet/pops/loader/predefined_loader.rb +29 -0
  260. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +83 -0
  261. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -3
  262. data/lib/puppet/pops/loader/runtime3_type_loader.rb +57 -0
  263. data/lib/puppet/pops/loader/static_loader.rb +92 -5
  264. data/lib/puppet/pops/loader/type_definition_instantiator.rb +77 -0
  265. data/lib/puppet/pops/loaders.rb +133 -19
  266. data/lib/puppet/pops/lookup/explainer.rb +509 -0
  267. data/lib/puppet/pops/lookup/interpolation.rb +115 -0
  268. data/lib/puppet/pops/lookup/invocation.rb +119 -0
  269. data/lib/puppet/pops/lookup/sub_lookup.rb +86 -0
  270. data/lib/puppet/pops/lookup.rb +35 -52
  271. data/lib/puppet/pops/merge_strategy.rb +85 -30
  272. data/lib/puppet/pops/migration/migration_checker.rb +54 -0
  273. data/lib/puppet/pops/model/ast_transformer.rb +8 -1
  274. data/lib/puppet/pops/model/factory.rb +242 -158
  275. data/lib/puppet/pops/model/model.rb +25 -8
  276. data/lib/puppet/pops/model/model_label_provider.rb +25 -6
  277. data/lib/puppet/pops/model/model_meta.rb +48 -3
  278. data/lib/puppet/pops/model/model_tree_dumper.rb +30 -0
  279. data/lib/puppet/pops/parser/code_merger.rb +13 -1
  280. data/lib/puppet/pops/parser/egrammar.ra +133 -30
  281. data/lib/puppet/pops/parser/eparser.rb +1738 -1254
  282. data/lib/puppet/pops/parser/epp_support.rb +27 -12
  283. data/lib/puppet/pops/parser/evaluating_parser.rb +27 -13
  284. data/lib/puppet/pops/parser/heredoc_support.rb +19 -14
  285. data/lib/puppet/pops/parser/interpolation_support.rb +7 -1
  286. data/lib/puppet/pops/parser/lexer2.rb +452 -379
  287. data/lib/puppet/pops/parser/lexer_support.rb +132 -25
  288. data/lib/puppet/pops/parser/locator.rb +30 -5
  289. data/lib/puppet/pops/parser/parser_support.rb +49 -37
  290. data/lib/puppet/pops/parser/slurp_support.rb +32 -8
  291. data/lib/puppet/pops/patterns.rb +3 -0
  292. data/lib/puppet/pops/pcore.rb +30 -0
  293. data/lib/puppet/pops/types/class_loader.rb +25 -23
  294. data/lib/puppet/pops/types/enumeration.rb +9 -27
  295. data/lib/puppet/pops/types/implementation_registry.rb +146 -0
  296. data/lib/puppet/pops/types/iterable.rb +308 -0
  297. data/lib/puppet/pops/types/p_object_type.rb +846 -0
  298. data/lib/puppet/pops/types/p_runtime_type.rb +102 -0
  299. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +164 -0
  300. data/lib/puppet/pops/types/p_sem_ver_type.rb +113 -0
  301. data/lib/puppet/pops/types/puppet_object.rb +21 -0
  302. data/lib/puppet/pops/types/recursion_guard.rb +92 -0
  303. data/lib/puppet/pops/types/ruby_generator.rb +258 -0
  304. data/lib/puppet/pops/types/string_converter.rb +922 -0
  305. data/lib/puppet/pops/types/type_acceptor.rb +25 -0
  306. data/lib/puppet/pops/types/type_asserter.rb +21 -19
  307. data/lib/puppet/pops/types/type_assertion_error.rb +1 -0
  308. data/lib/puppet/pops/types/type_calculator.rb +213 -1184
  309. data/lib/puppet/pops/types/type_conversion_error.rb +15 -0
  310. data/lib/puppet/pops/types/type_factory.rb +216 -157
  311. data/lib/puppet/pops/types/type_formatter.rb +569 -0
  312. data/lib/puppet/pops/types/type_mismatch_describer.rb +1001 -0
  313. data/lib/puppet/pops/types/type_parser.rb +332 -279
  314. data/lib/puppet/pops/types/types.rb +2770 -288
  315. data/lib/puppet/pops/utils.rb +11 -10
  316. data/lib/puppet/pops/validation/checker4_0.rb +266 -72
  317. data/lib/puppet/pops/validation/validator_factory_4_0.rb +12 -5
  318. data/lib/puppet/pops/validation.rb +43 -13
  319. data/lib/puppet/pops/visitor.rb +3 -1
  320. data/lib/puppet/pops.rb +29 -24
  321. data/lib/puppet/property/ensure.rb +1 -1
  322. data/lib/puppet/property.rb +1 -1
  323. data/lib/puppet/provider/aixobject.rb +1 -1
  324. data/lib/puppet/provider/augeas/augeas.rb +57 -2
  325. data/lib/puppet/provider/cron/crontab.rb +1 -1
  326. data/lib/puppet/provider/exec/windows.rb +1 -1
  327. data/lib/puppet/provider/exec.rb +6 -1
  328. data/lib/puppet/provider/group/directoryservice.rb +10 -0
  329. data/lib/puppet/provider/group/pw.rb +1 -0
  330. data/lib/puppet/provider/group/windows_adsi.rb +19 -6
  331. data/lib/puppet/provider/macauthorization/macauthorization.rb +10 -9
  332. data/lib/puppet/provider/mount/parsed.rb +159 -2
  333. data/lib/puppet/provider/nameservice/directoryservice.rb +35 -50
  334. data/lib/puppet/provider/package/appdmg.rb +3 -2
  335. data/lib/puppet/provider/package/apt.rb +1 -1
  336. data/lib/puppet/provider/package/dnf.rb +41 -0
  337. data/lib/puppet/provider/package/gem.rb +23 -2
  338. data/lib/puppet/provider/package/nim.rb +1 -1
  339. data/lib/puppet/provider/package/openbsd.rb +7 -7
  340. data/lib/puppet/provider/package/pacman.rb +9 -8
  341. data/lib/puppet/provider/package/pip.rb +80 -20
  342. data/lib/puppet/provider/package/pip3.rb +20 -0
  343. data/lib/puppet/provider/package/pkg.rb +1 -1
  344. data/lib/puppet/provider/package/pkgdmg.rb +7 -4
  345. data/lib/puppet/provider/package/pkgin.rb +3 -3
  346. data/lib/puppet/provider/package/pkgng.rb +143 -0
  347. data/lib/puppet/provider/package/portage.rb +1 -1
  348. data/lib/puppet/provider/package/ports.rb +0 -3
  349. data/lib/puppet/provider/package/puppet_gem.rb +0 -0
  350. data/lib/puppet/provider/package/rpm.rb +120 -14
  351. data/lib/puppet/provider/package/windows/exe_package.rb +10 -9
  352. data/lib/puppet/provider/package/windows/msi_package.rb +4 -4
  353. data/lib/puppet/provider/package/windows/package.rb +9 -1
  354. data/lib/puppet/provider/package/windows.rb +1 -1
  355. data/lib/puppet/provider/package/yum.rb +31 -80
  356. data/lib/puppet/provider/package/zypper.rb +69 -15
  357. data/lib/puppet/provider/package.rb +6 -2
  358. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +32 -7
  359. data/lib/puppet/provider/service/base.rb +3 -2
  360. data/lib/puppet/provider/service/bsd.rb +8 -8
  361. data/lib/puppet/provider/service/daemontools.rb +3 -3
  362. data/lib/puppet/provider/service/debian.rb +12 -3
  363. data/lib/puppet/provider/service/freebsd.rb +1 -1
  364. data/lib/puppet/provider/service/init.rb +22 -0
  365. data/lib/puppet/provider/service/launchd.rb +41 -18
  366. data/lib/puppet/provider/service/rcng.rb +51 -0
  367. data/lib/puppet/provider/service/redhat.rb +2 -1
  368. data/lib/puppet/provider/service/runit.rb +3 -3
  369. data/lib/puppet/provider/service/smf.rb +48 -4
  370. data/lib/puppet/provider/service/src.rb +27 -0
  371. data/lib/puppet/provider/service/systemd.rb +104 -22
  372. data/lib/puppet/provider/service/upstart.rb +1 -1
  373. data/lib/puppet/provider/sshkey/parsed.rb +20 -10
  374. data/lib/puppet/provider/user/aix.rb +1 -1
  375. data/lib/puppet/provider/user/directoryservice.rb +33 -58
  376. data/lib/puppet/provider/user/openbsd.rb +1 -0
  377. data/lib/puppet/provider/user/pw.rb +1 -0
  378. data/lib/puppet/provider/user/user_role_add.rb +3 -1
  379. data/lib/puppet/provider/user/windows_adsi.rb +45 -2
  380. data/lib/puppet/provider/yumrepo/inifile.rb +6 -3
  381. data/lib/puppet/provider/zfs/zfs.rb +1 -1
  382. data/lib/puppet/provider/zone/solaris.rb +2 -2
  383. data/lib/puppet/provider/zpool/zpool.rb +1 -1
  384. data/lib/puppet/provider.rb +5 -0
  385. data/lib/puppet/reference/configuration.rb +11 -5
  386. data/lib/puppet/reference/indirection.rb +1 -1
  387. data/lib/puppet/reference/providers.rb +2 -3
  388. data/lib/puppet/reference/report.rb +9 -12
  389. data/lib/puppet/reports.rb +5 -1
  390. data/lib/puppet/resource/capability_finder.rb +102 -0
  391. data/lib/puppet/resource/catalog.rb +133 -36
  392. data/lib/puppet/resource/status.rb +19 -3
  393. data/lib/puppet/resource/type.rb +236 -49
  394. data/lib/puppet/resource/type_collection.rb +83 -10
  395. data/lib/puppet/resource.rb +116 -119
  396. data/lib/puppet/settings/base_setting.rb +9 -3
  397. data/lib/puppet/settings/config_file.rb +1 -1
  398. data/lib/puppet/settings/environment_conf.rb +13 -5
  399. data/lib/puppet/settings/file_setting.rb +10 -9
  400. data/lib/puppet/settings/symbolic_enum_setting.rb +17 -0
  401. data/lib/puppet/settings.rb +68 -20
  402. data/lib/puppet/ssl/certificate_authority/interface.rb +2 -2
  403. data/lib/puppet/ssl/certificate_factory.rb +3 -3
  404. data/lib/puppet/ssl/certificate_request.rb +4 -4
  405. data/lib/puppet/ssl/certificate_signer.rb +1 -1
  406. data/lib/puppet/ssl/oids.rb +33 -3
  407. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  408. data/lib/puppet/test/test_helper.rb +16 -5
  409. data/lib/puppet/transaction/additional_resource_generator.rb +89 -8
  410. data/lib/puppet/transaction/report.rb +31 -1
  411. data/lib/puppet/transaction/resource_harness.rb +0 -20
  412. data/lib/puppet/transaction.rb +46 -36
  413. data/lib/puppet/type/augeas.rb +10 -1
  414. data/lib/puppet/type/cron.rb +12 -12
  415. data/lib/puppet/type/exec.rb +27 -18
  416. data/lib/puppet/type/file/checksum_value.rb +53 -0
  417. data/lib/puppet/type/file/content.rb +32 -117
  418. data/lib/puppet/type/file/data_sync.rb +84 -0
  419. data/lib/puppet/type/file/ensure.rb +22 -19
  420. data/lib/puppet/type/file/selcontext.rb +1 -1
  421. data/lib/puppet/type/file/source.rb +121 -34
  422. data/lib/puppet/type/file/target.rb +2 -2
  423. data/lib/puppet/type/file.rb +107 -44
  424. data/lib/puppet/type/filebucket.rb +1 -1
  425. data/lib/puppet/type/group.rb +15 -3
  426. data/lib/puppet/type/interface.rb +8 -3
  427. data/lib/puppet/type/macauthorization.rb +1 -1
  428. data/lib/puppet/type/mount.rb +29 -2
  429. data/lib/puppet/type/package.rb +31 -11
  430. data/lib/puppet/type/schedule.rb +5 -5
  431. data/lib/puppet/type/scheduled_task.rb +13 -0
  432. data/lib/puppet/type/service.rb +24 -0
  433. data/lib/puppet/type/sshkey.rb +5 -3
  434. data/lib/puppet/type/stage.rb +1 -1
  435. data/lib/puppet/type/tidy.rb +6 -4
  436. data/lib/puppet/type/user.rb +55 -19
  437. data/lib/puppet/type/yumrepo.rb +25 -5
  438. data/lib/puppet/type/zone.rb +5 -5
  439. data/lib/puppet/type.rb +95 -18
  440. data/lib/puppet/util/autoload.rb +16 -11
  441. data/lib/puppet/util/checksums.rb +74 -31
  442. data/lib/puppet/util/command_line.rb +4 -0
  443. data/lib/puppet/util/execution.rb +21 -5
  444. data/lib/puppet/util/feature.rb +1 -1
  445. data/lib/puppet/util/http_proxy.rb +132 -0
  446. data/lib/puppet/util/log/destinations.rb +23 -2
  447. data/lib/puppet/util/log.rb +53 -9
  448. data/lib/puppet/util/logging.rb +80 -2
  449. data/lib/puppet/util/monkey_patches.rb +20 -7
  450. data/lib/puppet/util/multi_match.rb +51 -0
  451. data/lib/puppet/util/network_device/cisco/device.rb +24 -6
  452. data/lib/puppet/util/network_device/cisco/interface.rb +21 -9
  453. data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
  454. data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
  455. data/lib/puppet/util/plist.rb +130 -0
  456. data/lib/puppet/util/resource_template.rb +1 -1
  457. data/lib/puppet/util/run_mode.rb +3 -16
  458. data/lib/puppet/util/skip_tags.rb +9 -0
  459. data/lib/puppet/util/splayer.rb +18 -0
  460. data/lib/puppet/util/tagging.rb +7 -1
  461. data/lib/puppet/util/windows/access_control_entry.rb +1 -1
  462. data/lib/puppet/util/windows/access_control_list.rb +3 -3
  463. data/lib/puppet/util/windows/adsi.rb +186 -74
  464. data/lib/puppet/util/windows/api_types.rb +24 -18
  465. data/lib/puppet/util/windows/com.rb +3 -3
  466. data/lib/puppet/util/windows/error.rb +1 -1
  467. data/lib/puppet/util/windows/file.rb +48 -18
  468. data/lib/puppet/util/windows/principal.rb +190 -0
  469. data/lib/puppet/util/windows/process.rb +78 -11
  470. data/lib/puppet/util/windows/registry.rb +22 -16
  471. data/lib/puppet/util/windows/root_certs.rb +5 -5
  472. data/lib/puppet/util/windows/security.rb +37 -36
  473. data/lib/puppet/util/windows/security_descriptor.rb +1 -1
  474. data/lib/puppet/util/windows/sid.rb +84 -15
  475. data/lib/puppet/util/windows/taskscheduler.rb +16 -16
  476. data/lib/puppet/util/windows/user.rb +10 -10
  477. data/lib/puppet/util/windows.rb +5 -0
  478. data/lib/puppet/util.rb +123 -23
  479. data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
  480. data/lib/puppet/vendor/pathspec/LICENSE +2 -2
  481. data/lib/puppet/vendor/pathspec/README.md +1 -1
  482. data/lib/puppet/vendor/rgen/README.rdoc +1 -1
  483. data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +14 -0
  484. data/lib/puppet/version.rb +1 -1
  485. data/lib/puppet.rb +30 -1
  486. data/lib/semver.rb +17 -1
  487. data/man/man5/puppet.conf.5 +60 -18
  488. data/man/man8/extlookup2hiera.8 +2 -2
  489. data/man/man8/puppet-agent.8 +6 -3
  490. data/man/man8/puppet-apply.8 +6 -3
  491. data/man/man8/puppet-ca.8 +3 -3
  492. data/man/man8/puppet-catalog.8 +3 -3
  493. data/man/man8/puppet-cert.8 +3 -3
  494. data/man/man8/puppet-certificate.8 +3 -3
  495. data/man/man8/puppet-certificate_request.8 +3 -3
  496. data/man/man8/puppet-certificate_revocation_list.8 +3 -3
  497. data/man/man8/puppet-config.8 +4 -4
  498. data/man/man8/puppet-describe.8 +2 -2
  499. data/man/man8/puppet-device.8 +7 -4
  500. data/man/man8/puppet-doc.8 +2 -2
  501. data/man/man8/puppet-epp.8 +3 -3
  502. data/man/man8/puppet-facts.8 +3 -3
  503. data/man/man8/puppet-file.8 +3 -3
  504. data/man/man8/puppet-filebucket.8 +3 -3
  505. data/man/man8/puppet-help.8 +3 -3
  506. data/man/man8/puppet-inspect.8 +3 -3
  507. data/man/man8/puppet-key.8 +3 -3
  508. data/man/man8/puppet-man.8 +3 -3
  509. data/man/man8/puppet-master.8 +6 -3
  510. data/man/man8/puppet-module.8 +10 -10
  511. data/man/man8/puppet-node.8 +3 -3
  512. data/man/man8/puppet-parser.8 +3 -3
  513. data/man/man8/puppet-plugin.8 +3 -3
  514. data/man/man8/puppet-report.8 +3 -3
  515. data/man/man8/puppet-resource.8 +3 -3
  516. data/man/man8/puppet-resource_type.8 +3 -3
  517. data/man/man8/puppet-status.8 +4 -4
  518. data/man/man8/puppet.8 +2 -2
  519. data/spec/fixtures/module.tar.gz +0 -0
  520. data/spec/fixtures/unit/application/environments/production/data/common.yaml +20 -0
  521. data/spec/fixtures/unit/application/environments/production/environment.conf +1 -0
  522. data/spec/fixtures/unit/application/environments/production/manifests/site.pp +1 -0
  523. data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +1 -0
  524. data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/data.pp +10 -0
  525. data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +1 -0
  526. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json +3 -0
  527. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/environment.conf +2 -0
  528. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml +5 -0
  529. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp +5 -0
  530. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml +3 -0
  531. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf +2 -0
  532. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml +5 -0
  533. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp +5 -0
  534. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml +2 -0
  535. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf +2 -0
  536. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp +1 -0
  537. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml +2 -0
  538. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp +5 -0
  539. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json +9 -0
  540. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json +3 -0
  541. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml +2 -0
  542. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json +3 -0
  543. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml +2 -0
  544. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/third_utf8.json +3 -0
  545. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/utf8.yaml +3 -0
  546. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml +2 -0
  547. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf +2 -0
  548. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +22 -0
  549. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +5 -0
  550. data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +46 -0
  551. data/spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf +2 -0
  552. data/spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp +1 -0
  553. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/data/common.yaml +30 -0
  554. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/manifests/init.pp +13 -0
  555. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json +9 -0
  556. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +4 -0
  557. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +4 -0
  558. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf +2 -0
  559. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +7 -0
  560. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp +1 -0
  561. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json +3 -0
  562. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml +1 -0
  563. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json +3 -0
  564. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml +2 -0
  565. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml +2 -0
  566. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/hiera.yaml +18 -0
  567. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp +5 -0
  568. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/metadata.json +9 -0
  569. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +4 -0
  570. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +4 -0
  571. data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +2 -0
  572. data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +7 -0
  573. data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +1 -0
  574. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +6 -0
  575. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +5 -0
  576. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +2 -0
  577. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +9 -0
  578. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +4 -0
  579. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +5 -0
  580. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +3 -0
  581. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +9 -0
  582. data/spec/fixtures/unit/data_providers/environments/production/lib/puppet/functions/environment/data.rb +3 -1
  583. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +2 -1
  584. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/manifests/init.pp +2 -1
  585. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/functions/data.pp +6 -0
  586. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/lib/puppet/bindings/xyz/default.rb +9 -0
  587. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/manifests/init.pp +9 -0
  588. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +1 -0
  589. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_module_data.rb +1 -0
  590. data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
  591. data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -1
  592. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/data/empty.json +0 -0
  593. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/hiera.yaml +5 -0
  594. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/manifests/init.pp +2 -0
  595. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/metadata.json +9 -0
  596. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/data/empty_key.json +1 -0
  597. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/hiera.yaml +5 -0
  598. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/manifests/init.pp +2 -0
  599. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/metadata.json +9 -0
  600. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/data/empty_key.yaml +1 -0
  601. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/hiera.yaml +5 -0
  602. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/manifests/init.pp +2 -0
  603. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/metadata.json +9 -0
  604. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +2 -0
  605. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/hiera.yaml +5 -0
  606. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
  607. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/metadata.json +9 -0
  608. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +4 -0
  609. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/hiera.yaml +8 -0
  610. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/manifests/init.pp +5 -0
  611. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/metadata.json +9 -0
  612. data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +9 -0
  613. data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/manifests/init.pp +3 -0
  614. data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/metadata.json +9 -0
  615. data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +10 -0
  616. data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +23 -0
  617. data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/manifests/init.pp +3 -0
  618. data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/metadata.json +9 -0
  619. data/spec/fixtures/unit/module/trailing-comma.json +1 -1
  620. data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +0 -0
  621. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp +3 -0
  622. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +6 -0
  623. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/type/usee_type.rb +5 -0
  624. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +8 -0
  625. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
  626. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb +5 -0
  627. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +5 -0
  628. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +5 -0
  629. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +5 -0
  630. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +5 -0
  631. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +5 -0
  632. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +5 -0
  633. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +5 -0
  634. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +87 -0
  635. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/metadata.json +2 -1
  636. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
  637. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
  638. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcalled.pp +3 -0
  639. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller.pp +3 -0
  640. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller4.pp +3 -0
  641. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/callingpuppet.rb +5 -0
  642. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/functions/hello.pp +3 -0
  643. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/manifests/init.pp +3 -0
  644. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/metadata.json +10 -0
  645. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/hello.pp +3 -0
  646. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/subspace/hello.pp +3 -0
  647. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/metadata.json +1 -10
  648. data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +0 -0
  649. data/spec/fixtures/unit/provider/mount/parsed/aix.filesystems +93 -85
  650. data/spec/fixtures/unit/provider/mount/parsed/aix.mount +11 -7
  651. data/spec/fixtures/unit/provider/package/pkgng/pkg.info +8 -0
  652. data/spec/fixtures/unit/provider/package/pkgng/pkg.query +1 -0
  653. data/spec/fixtures/unit/provider/package/pkgng/pkg.query_absent +1 -0
  654. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +3 -0
  655. data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
  656. data/spec/fixtures/unit/provider/package/yum/yum-check-update-obsoletes.txt +195 -0
  657. data/spec/fixtures/unit/provider/package/yum/yum-check-update-security.txt +184 -0
  658. data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-empty.out +3 -0
  659. data/spec/fixtures/unit/provider/service/smf/svcs.out +4 -3
  660. data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
  661. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_get/should_yield_to_the_block.yml +24 -0
  662. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_head/should_yield_to_the_block.yml +24 -0
  663. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_post/should_yield_to_the_block.yml +24 -0
  664. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +205 -0
  665. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +213 -0
  666. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
  667. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +205 -0
  668. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
  669. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +205 -0
  670. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +205 -0
  671. data/spec/integration/agent/logging_spec.rb +0 -0
  672. data/spec/integration/application/apply_spec.rb +121 -30
  673. data/spec/integration/application/doc_spec.rb +0 -0
  674. data/spec/integration/configurer_spec.rb +0 -0
  675. data/spec/integration/data_binding_spec.rb +195 -0
  676. data/spec/integration/defaults_spec.rb +14 -2
  677. data/spec/integration/faces/ca_spec.rb +0 -0
  678. data/spec/integration/faces/documentation_spec.rb +0 -0
  679. data/spec/integration/faces/plugin_spec.rb +0 -4
  680. data/spec/integration/file_bucket/file_spec.rb +2 -2
  681. data/spec/integration/file_serving/fileset_spec.rb +0 -0
  682. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -0
  683. data/spec/integration/file_system/uniquefile_spec.rb +29 -0
  684. data/spec/integration/indirector/catalog/compiler_spec.rb +0 -0
  685. data/spec/integration/indirector/direct_file_server_spec.rb +0 -0
  686. data/spec/integration/indirector/facts/facter_spec.rb +97 -0
  687. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -0
  688. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -0
  689. data/spec/integration/indirector/node/ldap_spec.rb +0 -0
  690. data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
  691. data/spec/integration/network/formats_spec.rb +0 -0
  692. data/spec/integration/node/environment_spec.rb +13 -0
  693. data/spec/integration/node/facts_spec.rb +0 -0
  694. data/spec/integration/node_spec.rb +0 -0
  695. data/spec/integration/parser/catalog_spec.rb +14 -2
  696. data/spec/integration/parser/collection_spec.rb +8 -0
  697. data/spec/integration/parser/compiler_spec.rb +949 -2
  698. data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
  699. data/spec/integration/parser/functions/require_spec.rb +0 -0
  700. data/spec/integration/parser/parameter_defaults_spec.rb +354 -0
  701. data/spec/integration/parser/resource_expressions_spec.rb +8 -5
  702. data/spec/integration/parser/scope_spec.rb +46 -7
  703. data/spec/integration/parser/undef_param_spec.rb +9 -1
  704. data/spec/integration/provider/mailalias/aliases_spec.rb +0 -0
  705. data/spec/integration/provider/mount_spec.rb +23 -36
  706. data/spec/integration/provider/service/init_spec.rb +0 -0
  707. data/spec/integration/provider/ssh_authorized_key_spec.rb +0 -0
  708. data/spec/integration/provider/yumrepo_spec.rb +1 -1
  709. data/spec/integration/reference/providers_spec.rb +0 -0
  710. data/spec/integration/reports_spec.rb +0 -0
  711. data/spec/integration/resource/catalog_spec.rb +1 -1
  712. data/spec/integration/resource/type_collection_spec.rb +8 -0
  713. data/spec/integration/ssl/certificate_authority_spec.rb +0 -1
  714. data/spec/integration/ssl/certificate_request_spec.rb +0 -1
  715. data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -1
  716. data/spec/integration/ssl/host_spec.rb +0 -1
  717. data/spec/integration/test/test_helper_spec.rb +28 -0
  718. data/spec/integration/transaction/report_spec.rb +16 -0
  719. data/spec/integration/transaction_spec.rb +52 -2
  720. data/spec/integration/type/exec_spec.rb +0 -0
  721. data/spec/integration/type/file_spec.rb +548 -45
  722. data/spec/integration/type/package_spec.rb +72 -1
  723. data/spec/integration/type/tidy_spec.rb +21 -9
  724. data/spec/integration/type_spec.rb +0 -0
  725. data/spec/integration/util/autoload_spec.rb +0 -0
  726. data/spec/integration/util/execution_spec.rb +22 -0
  727. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  728. data/spec/integration/util/settings_spec.rb +26 -0
  729. data/spec/integration/util/windows/principal_spec.rb +201 -0
  730. data/spec/integration/util/windows/process_spec.rb +31 -0
  731. data/spec/{unit → integration}/util/windows/registry_spec.rb +91 -1
  732. data/spec/integration/util/windows/security_spec.rb +40 -13
  733. data/spec/integration/util/windows/user_spec.rb +1 -1
  734. data/spec/integration/util_spec.rb +49 -27
  735. data/spec/lib/matchers/include_in_order.rb +2 -3
  736. data/spec/lib/matchers/resource.rb +22 -1
  737. data/spec/lib/puppet/face/1.0.0/huzzah.rb +0 -0
  738. data/spec/lib/puppet/face/basetest.rb +0 -0
  739. data/spec/lib/puppet/face/huzzah.rb +0 -0
  740. data/spec/lib/puppet_spec/compiler.rb +27 -3
  741. data/spec/lib/puppet_spec/files.rb +16 -2
  742. data/spec/lib/puppet_spec/fixtures.rb +0 -0
  743. data/spec/lib/puppet_spec/matchers.rb +6 -4
  744. data/spec/lib/puppet_spec/pops.rb +13 -0
  745. data/spec/lib/puppet_spec/verbose.rb +0 -0
  746. data/spec/shared_behaviours/all_parsedfile_providers.rb +0 -0
  747. data/spec/shared_behaviours/file_server_terminus.rb +0 -0
  748. data/spec/shared_behaviours/file_serving.rb +0 -0
  749. data/spec/shared_behaviours/iterative_functions.rb +9 -9
  750. data/spec/shared_behaviours/memory_terminus.rb +0 -0
  751. data/spec/shared_behaviours/path_parameters.rb +0 -0
  752. data/spec/shared_behaviours/things_that_declare_options.rb +0 -0
  753. data/spec/shared_contexts/types_setup.rb +100 -0
  754. data/spec/spec_helper.rb +7 -0
  755. data/spec/unit/agent/locker_spec.rb +4 -4
  756. data/spec/unit/agent_spec.rb +1 -46
  757. data/spec/unit/application/agent_spec.rb +15 -0
  758. data/spec/unit/application/apply_spec.rb +31 -1
  759. data/spec/unit/application/cert_spec.rb +0 -0
  760. data/spec/unit/application/certificate_spec.rb +0 -0
  761. data/spec/unit/application/config_spec.rb +0 -0
  762. data/spec/unit/application/describe_spec.rb +0 -0
  763. data/spec/unit/application/device_spec.rb +0 -0
  764. data/spec/unit/application/doc_spec.rb +0 -0
  765. data/spec/unit/application/face_base_spec.rb +0 -0
  766. data/spec/unit/application/facts_spec.rb +0 -0
  767. data/spec/unit/application/filebucket_spec.rb +88 -2
  768. data/spec/unit/application/indirection_base_spec.rb +0 -0
  769. data/spec/unit/application/inspect_spec.rb +19 -8
  770. data/spec/unit/application/lookup_spec.rb +387 -0
  771. data/spec/unit/application/master_spec.rb +33 -7
  772. data/spec/unit/application/resource_spec.rb +0 -0
  773. data/spec/unit/application_spec.rb +3 -3
  774. data/spec/unit/appmgmt_spec.rb +666 -0
  775. data/spec/unit/capability_spec.rb +394 -0
  776. data/spec/unit/configurer/downloader_factory_spec.rb +0 -0
  777. data/spec/unit/configurer/downloader_spec.rb +5 -5
  778. data/spec/unit/configurer/fact_handler_spec.rb +0 -0
  779. data/spec/unit/configurer/plugin_handler_spec.rb +42 -13
  780. data/spec/unit/configurer_spec.rb +282 -39
  781. data/spec/unit/confine/exists_spec.rb +0 -0
  782. data/spec/unit/confine/false_spec.rb +0 -0
  783. data/spec/unit/confine/feature_spec.rb +0 -0
  784. data/spec/unit/confine/true_spec.rb +0 -0
  785. data/spec/unit/confine/variable_spec.rb +0 -0
  786. data/spec/unit/confine_collection_spec.rb +0 -0
  787. data/spec/unit/confine_spec.rb +0 -0
  788. data/spec/unit/confiner_spec.rb +0 -0
  789. data/spec/unit/context/trusted_information_spec.rb +24 -1
  790. data/spec/unit/daemon_spec.rb +18 -8
  791. data/spec/unit/data_providers/function_data_provider_spec.rb +28 -1
  792. data/spec/unit/data_providers/hiera_data_provider_spec.rb +378 -0
  793. data/spec/unit/defaults_spec.rb +33 -0
  794. data/spec/unit/environments_spec.rb +26 -4
  795. data/spec/unit/external/pson_spec.rb +0 -0
  796. data/spec/unit/face/catalog_spec.rb +0 -0
  797. data/spec/unit/face/certificate_spec.rb +0 -0
  798. data/spec/unit/face/config_spec.rb +0 -0
  799. data/spec/unit/face/epp_face_spec.rb +2 -2
  800. data/spec/unit/face/facts_spec.rb +0 -0
  801. data/spec/unit/face/file_spec.rb +0 -0
  802. data/spec/unit/face/help_spec.rb +0 -0
  803. data/spec/unit/face/node_spec.rb +1 -1
  804. data/spec/unit/face/parser_spec.rb +43 -2
  805. data/spec/unit/face/plugin_spec.rb +33 -4
  806. data/spec/unit/face_spec.rb +0 -0
  807. data/spec/unit/file_bucket/dipper_spec.rb +210 -1
  808. data/spec/unit/file_bucket/file_spec.rb +0 -0
  809. data/spec/unit/file_serving/base_spec.rb +0 -0
  810. data/spec/unit/file_serving/configuration/parser_spec.rb +25 -30
  811. data/spec/unit/file_serving/configuration_spec.rb +1 -1
  812. data/spec/unit/file_serving/content_spec.rb +0 -0
  813. data/spec/unit/file_serving/fileset_spec.rb +0 -0
  814. data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
  815. data/spec/unit/file_serving/metadata_spec.rb +51 -1
  816. data/spec/unit/file_serving/mount/file_spec.rb +0 -0
  817. data/spec/unit/file_serving/mount/modules_spec.rb +0 -0
  818. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +0 -0
  819. data/spec/unit/file_serving/mount/plugins_spec.rb +0 -0
  820. data/spec/unit/file_serving/mount_spec.rb +0 -0
  821. data/spec/unit/file_serving/terminus_helper_spec.rb +2 -3
  822. data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
  823. data/spec/unit/file_system/uniquefile_spec.rb +20 -0
  824. data/spec/unit/file_system_spec.rb +145 -0
  825. data/spec/unit/functions/assert_type_spec.rb +48 -8
  826. data/spec/unit/functions/defined_spec.rb +289 -0
  827. data/spec/unit/functions/dig_spec.rb +58 -0
  828. data/spec/unit/functions/epp_spec.rb +17 -9
  829. data/spec/unit/functions/filter_spec.rb +18 -0
  830. data/spec/unit/functions/hiera_spec.rb +10 -8
  831. data/spec/unit/functions/inline_epp_spec.rb +4 -4
  832. data/spec/unit/functions/lest_spec.rb +34 -0
  833. data/spec/unit/functions/lookup_spec.rb +391 -22
  834. data/spec/unit/functions/new_spec.rb +543 -0
  835. data/spec/unit/functions/regsubst_spec.rb +29 -8
  836. data/spec/unit/functions/reverse_each_spec.rb +108 -0
  837. data/spec/unit/functions/scanf_spec.rb +1 -1
  838. data/spec/unit/functions/split_spec.rb +10 -2
  839. data/spec/unit/functions/step_spec.rb +113 -0
  840. data/spec/unit/functions/then_spec.rb +40 -0
  841. data/spec/unit/functions/type_spec.rb +35 -0
  842. data/spec/unit/functions/versioncmp_spec.rb +36 -0
  843. data/spec/unit/functions4_spec.rb +275 -70
  844. data/spec/unit/graph/relationship_graph_spec.rb +0 -0
  845. data/spec/unit/graph/sequential_prioritizer_spec.rb +1 -1
  846. data/spec/unit/graph/simple_graph_spec.rb +0 -0
  847. data/spec/unit/hiera/scope_spec.rb +5 -2
  848. data/spec/unit/hiera_puppet_spec.rb +49 -8
  849. data/spec/unit/indirector/catalog/compiler_spec.rb +752 -8
  850. data/spec/unit/indirector/catalog/json_spec.rb +0 -0
  851. data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -0
  852. data/spec/unit/indirector/catalog/rest_spec.rb +0 -0
  853. data/spec/unit/indirector/catalog/static_compiler_spec.rb +38 -20
  854. data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -0
  855. data/spec/unit/indirector/catalog/yaml_spec.rb +0 -0
  856. data/spec/unit/indirector/certificate/ca_spec.rb +0 -0
  857. data/spec/unit/indirector/certificate/disabled_ca_spec.rb +0 -0
  858. data/spec/unit/indirector/certificate/file_spec.rb +0 -0
  859. data/spec/unit/indirector/certificate/rest_spec.rb +0 -0
  860. data/spec/unit/indirector/certificate_request/ca_spec.rb +0 -0
  861. data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +0 -0
  862. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -0
  863. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -0
  864. data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +0 -0
  865. data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +0 -0
  866. data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +0 -0
  867. data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +0 -0
  868. data/spec/unit/indirector/certificate_status/file_spec.rb +0 -0
  869. data/spec/unit/indirector/certificate_status/rest_spec.rb +0 -0
  870. data/spec/unit/indirector/code_spec.rb +0 -0
  871. data/spec/unit/indirector/data_binding/none_spec.rb +2 -2
  872. data/spec/unit/indirector/direct_file_server_spec.rb +0 -0
  873. data/spec/unit/indirector/envelope_spec.rb +0 -0
  874. data/spec/unit/indirector/exec_spec.rb +0 -0
  875. data/spec/unit/indirector/face_spec.rb +0 -0
  876. data/spec/unit/indirector/facts/facter_spec.rb +8 -0
  877. data/spec/unit/indirector/facts/network_device_spec.rb +0 -0
  878. data/spec/unit/indirector/facts/store_configs_spec.rb +0 -0
  879. data/spec/unit/indirector/facts/yaml_spec.rb +0 -0
  880. data/spec/unit/indirector/file_bucket_file/file_spec.rb +53 -2
  881. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +0 -0
  882. data/spec/unit/indirector/file_content/file_server_spec.rb +0 -0
  883. data/spec/unit/indirector/file_content/file_spec.rb +0 -0
  884. data/spec/unit/indirector/file_content/rest_spec.rb +0 -0
  885. data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -0
  886. data/spec/unit/indirector/file_metadata/file_spec.rb +0 -0
  887. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -0
  888. data/spec/unit/indirector/file_server_spec.rb +0 -0
  889. data/spec/unit/indirector/indirection_spec.rb +13 -2
  890. data/spec/unit/indirector/json_spec.rb +1 -1
  891. data/spec/unit/indirector/key/ca_spec.rb +0 -0
  892. data/spec/unit/indirector/key/disabled_ca_spec.rb +0 -0
  893. data/spec/unit/indirector/key/file_spec.rb +0 -0
  894. data/spec/unit/indirector/ldap_spec.rb +0 -0
  895. data/spec/unit/indirector/memory_spec.rb +0 -0
  896. data/spec/unit/indirector/msgpack_spec.rb +11 -1
  897. data/spec/unit/indirector/node/exec_spec.rb +0 -0
  898. data/spec/unit/indirector/node/ldap_spec.rb +0 -0
  899. data/spec/unit/indirector/node/memory_spec.rb +0 -0
  900. data/spec/unit/indirector/node/msgpack_spec.rb +0 -0
  901. data/spec/unit/indirector/node/plain_spec.rb +0 -0
  902. data/spec/unit/indirector/node/rest_spec.rb +0 -0
  903. data/spec/unit/indirector/node/store_configs_spec.rb +0 -0
  904. data/spec/unit/indirector/node/yaml_spec.rb +0 -0
  905. data/spec/unit/indirector/plain_spec.rb +0 -0
  906. data/spec/unit/indirector/report/msgpack_spec.rb +0 -0
  907. data/spec/unit/indirector/report/processor_spec.rb +0 -0
  908. data/spec/unit/indirector/report/rest_spec.rb +0 -0
  909. data/spec/unit/indirector/report/yaml_spec.rb +0 -0
  910. data/spec/unit/indirector/request_spec.rb +8 -8
  911. data/spec/unit/indirector/resource/ral_spec.rb +0 -0
  912. data/spec/unit/indirector/resource/store_configs_spec.rb +0 -0
  913. data/spec/unit/indirector/resource_type/parser_spec.rb +5 -0
  914. data/spec/unit/indirector/resource_type/rest_spec.rb +0 -0
  915. data/spec/unit/indirector/rest_spec.rb +12 -0
  916. data/spec/unit/indirector/ssl_file_spec.rb +1 -1
  917. data/spec/unit/indirector/status/rest_spec.rb +0 -0
  918. data/spec/unit/indirector/store_configs_spec.rb +0 -0
  919. data/spec/unit/indirector/terminus_spec.rb +0 -0
  920. data/spec/unit/indirector/yaml_spec.rb +1 -1
  921. data/spec/unit/indirector_spec.rb +0 -0
  922. data/spec/unit/info_service_spec.rb +298 -0
  923. data/spec/unit/interface/action_builder_spec.rb +0 -0
  924. data/spec/unit/interface/action_manager_spec.rb +0 -0
  925. data/spec/unit/interface/action_spec.rb +0 -0
  926. data/spec/unit/interface/documentation_spec.rb +0 -0
  927. data/spec/unit/interface/face_collection_spec.rb +0 -0
  928. data/spec/unit/interface/option_builder_spec.rb +0 -0
  929. data/spec/unit/interface/option_spec.rb +0 -0
  930. data/spec/unit/interface_spec.rb +0 -0
  931. data/spec/unit/man_spec.rb +0 -0
  932. data/spec/unit/module_spec.rb +42 -27
  933. data/spec/unit/module_tool/application_spec.rb +1 -1
  934. data/spec/unit/module_tool/applications/builder_spec.rb +28 -8
  935. data/spec/unit/module_tool/metadata_spec.rb +31 -2
  936. data/spec/unit/module_tool_spec.rb +0 -0
  937. data/spec/unit/network/auth_config_parser_spec.rb +16 -0
  938. data/spec/unit/network/authconfig_spec.rb +62 -32
  939. data/spec/unit/network/authorization_spec.rb +30 -2
  940. data/spec/unit/network/authstore_spec.rb +2 -2
  941. data/spec/unit/network/format_handler_spec.rb +0 -0
  942. data/spec/unit/network/format_spec.rb +0 -0
  943. data/spec/unit/network/formats_spec.rb +0 -0
  944. data/spec/unit/network/http/api/indirected_routes_spec.rb +21 -13
  945. data/spec/unit/network/http/api/master/v3/environment_spec.rb +60 -0
  946. data/spec/unit/network/http/api/master/v3_spec.rb +0 -0
  947. data/spec/unit/network/http/compression_spec.rb +1 -1
  948. data/spec/unit/network/http/connection_spec.rb +15 -19
  949. data/spec/unit/network/http/factory_spec.rb +14 -0
  950. data/spec/unit/network/http/handler_spec.rb +0 -5
  951. data/spec/unit/network/http/nocache_pool_spec.rb +0 -0
  952. data/spec/unit/network/http/pool_spec.rb +30 -0
  953. data/spec/unit/network/http/rack/rest_spec.rb +7 -0
  954. data/spec/unit/network/http/rack_spec.rb +0 -0
  955. data/spec/unit/network/http/session_spec.rb +0 -0
  956. data/spec/unit/network/http/site_spec.rb +0 -0
  957. data/spec/unit/network/http/webrick/rest_spec.rb +0 -0
  958. data/spec/unit/network/http/webrick_spec.rb +0 -0
  959. data/spec/unit/network/http_pool_spec.rb +0 -0
  960. data/spec/unit/network/http_spec.rb +0 -0
  961. data/spec/unit/network/resolver_spec.rb +0 -0
  962. data/spec/unit/network/rights_spec.rb +3 -3
  963. data/spec/unit/network/server_spec.rb +0 -0
  964. data/spec/unit/node/environment_spec.rb +10 -0
  965. data/spec/unit/node/facts_spec.rb +0 -0
  966. data/spec/unit/node_spec.rb +41 -0
  967. data/spec/unit/other/selinux_spec.rb +0 -0
  968. data/spec/unit/parameter/path_spec.rb +0 -0
  969. data/spec/unit/parameter/value_collection_spec.rb +0 -0
  970. data/spec/unit/parameter/value_spec.rb +0 -0
  971. data/spec/unit/parameter_spec.rb +0 -0
  972. data/spec/unit/parser/ast/leaf_spec.rb +1 -1
  973. data/spec/unit/parser/compiler_spec.rb +103 -2
  974. data/spec/unit/parser/files_spec.rb +0 -0
  975. data/spec/unit/parser/functions/create_resources_spec.rb +2 -2
  976. data/spec/unit/parser/functions/defined_spec.rb +0 -0
  977. data/spec/unit/parser/functions/digest_spec.rb +0 -0
  978. data/spec/unit/parser/functions/fail_spec.rb +0 -0
  979. data/spec/unit/parser/functions/file_spec.rb +7 -1
  980. data/spec/unit/parser/functions/fqdn_rand_spec.rb +6 -2
  981. data/spec/unit/parser/functions/generate_spec.rb +3 -12
  982. data/spec/unit/parser/functions/hiera_spec.rb +0 -0
  983. data/spec/unit/parser/functions/include_spec.rb +0 -0
  984. data/spec/unit/parser/functions/inline_template_spec.rb +0 -0
  985. data/spec/unit/parser/functions/realize_spec.rb +0 -0
  986. data/spec/unit/parser/functions/regsubst_spec.rb +0 -0
  987. data/spec/unit/parser/functions/require_spec.rb +0 -0
  988. data/spec/unit/parser/functions/scanf_spec.rb +0 -0
  989. data/spec/unit/parser/functions/shared.rb +1 -1
  990. data/spec/unit/parser/functions/shellquote_spec.rb +0 -0
  991. data/spec/unit/parser/functions/split_spec.rb +0 -0
  992. data/spec/unit/parser/functions/sprintf_spec.rb +0 -0
  993. data/spec/unit/parser/functions/tag_spec.rb +0 -0
  994. data/spec/unit/parser/functions/template_spec.rb +1 -1
  995. data/spec/unit/parser/functions/versioncmp_spec.rb +0 -0
  996. data/spec/unit/parser/functions_spec.rb +0 -0
  997. data/spec/unit/parser/relationship_spec.rb +0 -0
  998. data/spec/unit/parser/resource/param_spec.rb +0 -0
  999. data/spec/unit/parser/resource_spec.rb +10 -21
  1000. data/spec/unit/parser/scope_spec.rb +84 -13
  1001. data/spec/unit/parser/templatewrapper_spec.rb +1 -1
  1002. data/spec/unit/parser/type_loader_spec.rb +0 -0
  1003. data/spec/unit/pops/binder/config/binder_config_spec.rb +1 -1
  1004. data/spec/unit/pops/binder/injector_spec.rb +3 -3
  1005. data/spec/unit/pops/evaluator/access_ops_spec.rb +52 -17
  1006. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -2
  1007. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
  1008. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +125 -36
  1009. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +4 -4
  1010. data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
  1011. data/spec/unit/pops/evaluator/literal_evaluator_spec.rb +43 -0
  1012. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +25 -0
  1013. data/spec/unit/pops/evaluator/variables_spec.rb +2 -2
  1014. data/spec/unit/pops/issues_spec.rb +16 -16
  1015. data/spec/unit/pops/label_provider_spec.rb +5 -1
  1016. data/spec/unit/pops/loaders/dependency_loader_spec.rb +53 -0
  1017. data/spec/unit/pops/loaders/loaders_spec.rb +230 -47
  1018. data/spec/unit/pops/loaders/static_loader_spec.rb +92 -1
  1019. data/spec/unit/pops/lookup/interpolation_spec.rb +313 -0
  1020. data/spec/unit/pops/migration_spec.rb +53 -0
  1021. data/spec/unit/pops/parser/lexer2_spec.rb +326 -6
  1022. data/spec/unit/pops/parser/parse_application_spec.rb +35 -0
  1023. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +23 -0
  1024. data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
  1025. data/spec/unit/pops/parser/parse_capabilities_spec.rb +40 -0
  1026. data/spec/unit/pops/parser/parse_heredoc_spec.rb +26 -0
  1027. data/spec/unit/pops/parser/parse_site_spec.rb +47 -0
  1028. data/spec/unit/pops/parser/parser_rspec_helper.rb +6 -0
  1029. data/spec/unit/pops/parser/parser_spec.rb +28 -0
  1030. data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
  1031. data/spec/unit/pops/types/enumeration_spec.rb +13 -12
  1032. data/spec/unit/pops/types/iterable_spec.rb +262 -0
  1033. data/spec/unit/pops/types/p_object_type_spec.rb +1060 -0
  1034. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +285 -0
  1035. data/spec/unit/pops/types/recursion_guard_spec.rb +93 -0
  1036. data/spec/unit/pops/types/ruby_generator_spec.rb +261 -0
  1037. data/spec/unit/pops/types/string_converter_spec.rb +904 -0
  1038. data/spec/unit/pops/types/type_acceptor_spec.rb +105 -0
  1039. data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
  1040. data/spec/unit/pops/types/type_calculator_spec.rb +960 -849
  1041. data/spec/unit/pops/types/type_factory_spec.rb +132 -91
  1042. data/spec/unit/pops/types/type_formatter_spec.rb +352 -0
  1043. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +177 -0
  1044. data/spec/unit/pops/types/type_parser_spec.rb +119 -32
  1045. data/spec/unit/pops/types/types_spec.rb +561 -0
  1046. data/spec/unit/pops/validation_spec.rb +66 -0
  1047. data/spec/unit/pops/validator/validator_spec.rb +303 -17
  1048. data/spec/unit/property/ensure_spec.rb +0 -0
  1049. data/spec/unit/property/keyvalue_spec.rb +0 -0
  1050. data/spec/unit/property/list_spec.rb +0 -0
  1051. data/spec/unit/property/ordered_list_spec.rb +0 -0
  1052. data/spec/unit/property_spec.rb +1 -1
  1053. data/spec/unit/provider/augeas/augeas_spec.rb +59 -0
  1054. data/spec/unit/provider/cisco_spec.rb +0 -0
  1055. data/spec/unit/provider/command_spec.rb +0 -0
  1056. data/spec/unit/provider/cron/crontab_spec.rb +0 -0
  1057. data/spec/unit/provider/cron/parsed_spec.rb +1 -0
  1058. data/spec/unit/provider/exec/posix_spec.rb +0 -0
  1059. data/spec/unit/provider/exec/shell_spec.rb +0 -0
  1060. data/spec/unit/provider/exec/windows_spec.rb +0 -0
  1061. data/spec/unit/provider/exec_spec.rb +0 -0
  1062. data/spec/unit/provider/file/posix_spec.rb +0 -0
  1063. data/spec/unit/provider/file/windows_spec.rb +0 -0
  1064. data/spec/unit/provider/group/directoryservice_spec.rb +33 -0
  1065. data/spec/unit/provider/group/groupadd_spec.rb +0 -0
  1066. data/spec/unit/provider/group/ldap_spec.rb +0 -0
  1067. data/spec/unit/provider/group/pw_spec.rb +0 -0
  1068. data/spec/unit/provider/group/windows_adsi_spec.rb +73 -17
  1069. data/spec/unit/provider/host/parsed_spec.rb +0 -0
  1070. data/spec/unit/provider/interface/cisco_spec.rb +0 -0
  1071. data/spec/unit/provider/ldap_spec.rb +0 -0
  1072. data/spec/unit/provider/macauthorization_spec.rb +5 -2
  1073. data/spec/unit/provider/mcx/mcxcontent_spec.rb +0 -0
  1074. data/spec/unit/provider/mount/parsed_spec.rb +31 -5
  1075. data/spec/unit/provider/mount_spec.rb +0 -0
  1076. data/spec/unit/provider/naginator_spec.rb +0 -0
  1077. data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
  1078. data/spec/unit/provider/nameservice_spec.rb +0 -0
  1079. data/spec/unit/provider/network_device_spec.rb +0 -0
  1080. data/spec/unit/provider/package/aix_spec.rb +0 -0
  1081. data/spec/unit/provider/package/appdmg_spec.rb +3 -3
  1082. data/spec/unit/provider/package/apt_spec.rb +5 -0
  1083. data/spec/unit/provider/package/aptitude_spec.rb +0 -0
  1084. data/spec/unit/provider/package/aptrpm_spec.rb +2 -2
  1085. data/spec/unit/provider/package/base_spec.rb +18 -0
  1086. data/spec/unit/provider/package/dnf_spec.rb +108 -0
  1087. data/spec/unit/provider/package/dpkg_spec.rb +0 -0
  1088. data/spec/unit/provider/package/freebsd_spec.rb +0 -0
  1089. data/spec/unit/provider/package/gem_spec.rb +77 -0
  1090. data/spec/unit/provider/package/hpux_spec.rb +0 -0
  1091. data/spec/unit/provider/package/macports_spec.rb +0 -0
  1092. data/spec/unit/provider/package/nim_spec.rb +6 -6
  1093. data/spec/unit/provider/package/openbsd_spec.rb +0 -0
  1094. data/spec/unit/provider/package/opkg_spec.rb +0 -0
  1095. data/spec/unit/provider/package/pacman_spec.rb +55 -0
  1096. data/spec/unit/provider/package/pip3_spec.rb +22 -0
  1097. data/spec/unit/provider/package/pip_spec.rb +159 -46
  1098. data/spec/unit/provider/package/pkg_spec.rb +0 -0
  1099. data/spec/unit/provider/package/pkgdmg_spec.rb +35 -8
  1100. data/spec/unit/provider/package/pkgin_spec.rb +23 -13
  1101. data/spec/unit/provider/package/pkgng_spec.rb +174 -0
  1102. data/spec/unit/provider/package/pkgutil_spec.rb +0 -0
  1103. data/spec/unit/provider/package/puppet_gem_spec.rb +0 -0
  1104. data/spec/unit/provider/package/rpm_spec.rb +160 -3
  1105. data/spec/unit/provider/package/sun_spec.rb +0 -0
  1106. data/spec/unit/provider/package/windows/exe_package_spec.rb +0 -1
  1107. data/spec/unit/provider/package/windows/msi_package_spec.rb +0 -1
  1108. data/spec/unit/provider/package/windows/package_spec.rb +41 -0
  1109. data/spec/unit/provider/package/windows_spec.rb +0 -0
  1110. data/spec/unit/provider/package/yum_spec.rb +81 -147
  1111. data/spec/unit/provider/package/zypper_spec.rb +64 -19
  1112. data/spec/unit/provider/parsedfile_spec.rb +0 -0
  1113. data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +322 -70
  1114. data/spec/unit/provider/selboolean_spec.rb +0 -0
  1115. data/spec/unit/provider/selmodule_spec.rb +0 -0
  1116. data/spec/unit/provider/service/base_spec.rb +38 -27
  1117. data/spec/unit/provider/service/bsd_spec.rb +130 -0
  1118. data/spec/unit/provider/service/daemontools_spec.rb +0 -0
  1119. data/spec/unit/provider/service/debian_spec.rb +29 -0
  1120. data/spec/unit/provider/service/freebsd_spec.rb +17 -0
  1121. data/spec/unit/provider/service/gentoo_spec.rb +2 -0
  1122. data/spec/unit/provider/service/init_spec.rb +35 -1
  1123. data/spec/unit/provider/service/launchd_spec.rb +89 -21
  1124. data/spec/unit/provider/service/openbsd_spec.rb +1 -0
  1125. data/spec/unit/provider/service/openrc_spec.rb +1 -0
  1126. data/spec/unit/provider/service/openwrt_spec.rb +0 -0
  1127. data/spec/unit/provider/service/rcng_spec.rb +41 -0
  1128. data/spec/unit/provider/service/redhat_spec.rb +9 -1
  1129. data/spec/unit/provider/service/runit_spec.rb +0 -0
  1130. data/spec/unit/provider/service/smf_spec.rb +43 -6
  1131. data/spec/unit/provider/service/src_spec.rb +20 -4
  1132. data/spec/unit/provider/service/systemd_spec.rb +169 -37
  1133. data/spec/unit/provider/service/upstart_spec.rb +58 -0
  1134. data/spec/unit/provider/service/windows_spec.rb +0 -0
  1135. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +1 -1
  1136. data/spec/unit/provider/sshkey/parsed_spec.rb +42 -18
  1137. data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
  1138. data/spec/unit/provider/user/hpux_spec.rb +0 -0
  1139. data/spec/unit/provider/user/ldap_spec.rb +0 -0
  1140. data/spec/unit/provider/user/openbsd_spec.rb +0 -0
  1141. data/spec/unit/provider/user/pw_spec.rb +0 -0
  1142. data/spec/unit/provider/user/user_role_add_spec.rb +0 -0
  1143. data/spec/unit/provider/user/useradd_spec.rb +0 -0
  1144. data/spec/unit/provider/user/windows_adsi_spec.rb +137 -7
  1145. data/spec/unit/provider/vlan/cisco_spec.rb +0 -0
  1146. data/spec/unit/provider/yumrepo/inifile_spec.rb +16 -0
  1147. data/spec/unit/provider/zfs/zfs_spec.rb +0 -0
  1148. data/spec/unit/provider/zone/solaris_spec.rb +64 -12
  1149. data/spec/unit/provider/zpool/zpool_spec.rb +0 -0
  1150. data/spec/unit/provider_spec.rb +0 -0
  1151. data/spec/unit/puppet_spec.rb +1 -1
  1152. data/spec/unit/relationship_spec.rb +0 -0
  1153. data/spec/unit/reports/http_spec.rb +0 -0
  1154. data/spec/unit/reports/store_spec.rb +0 -0
  1155. data/spec/unit/reports_spec.rb +10 -0
  1156. data/spec/unit/resource/capability_finder_spec.rb +77 -0
  1157. data/spec/unit/resource/catalog_spec.rb +95 -8
  1158. data/spec/unit/resource/status_spec.rb +0 -0
  1159. data/spec/unit/resource/type_collection_helper_spec.rb +0 -0
  1160. data/spec/unit/resource/type_collection_spec.rb +23 -2
  1161. data/spec/unit/resource/type_spec.rb +150 -8
  1162. data/spec/unit/resource_spec.rb +115 -48
  1163. data/spec/unit/settings/directory_setting_spec.rb +0 -0
  1164. data/spec/unit/settings/duration_setting_spec.rb +0 -0
  1165. data/spec/unit/settings/environment_conf_spec.rb +18 -1
  1166. data/spec/unit/settings/file_setting_spec.rb +37 -0
  1167. data/spec/unit/settings/path_setting_spec.rb +0 -0
  1168. data/spec/unit/settings/priority_setting_spec.rb +0 -0
  1169. data/spec/unit/settings_spec.rb +103 -3
  1170. data/spec/unit/ssl/base_spec.rb +0 -0
  1171. data/spec/unit/ssl/certificate_authority/interface_spec.rb +4 -3
  1172. data/spec/unit/ssl/certificate_authority_spec.rb +5 -3
  1173. data/spec/unit/ssl/certificate_factory_spec.rb +0 -0
  1174. data/spec/unit/ssl/certificate_request_spec.rb +0 -0
  1175. data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
  1176. data/spec/unit/ssl/certificate_spec.rb +0 -0
  1177. data/spec/unit/ssl/configuration_spec.rb +0 -0
  1178. data/spec/unit/ssl/host_spec.rb +2 -2
  1179. data/spec/unit/ssl/inventory_spec.rb +0 -0
  1180. data/spec/unit/ssl/key_spec.rb +0 -0
  1181. data/spec/unit/ssl/oids_spec.rb +8 -0
  1182. data/spec/unit/status_spec.rb +0 -0
  1183. data/spec/unit/transaction/additional_resource_generator_spec.rb +120 -32
  1184. data/spec/unit/transaction/event_manager_spec.rb +0 -0
  1185. data/spec/unit/transaction/event_spec.rb +0 -0
  1186. data/spec/unit/transaction/report_spec.rb +51 -1
  1187. data/spec/unit/transaction/resource_harness_spec.rb +0 -47
  1188. data/spec/unit/transaction_spec.rb +12 -0
  1189. data/spec/unit/type/augeas_spec.rb +0 -0
  1190. data/spec/unit/type/component_spec.rb +0 -0
  1191. data/spec/unit/type/computer_spec.rb +0 -0
  1192. data/spec/unit/type/cron_spec.rb +0 -0
  1193. data/spec/unit/type/exec_spec.rb +16 -8
  1194. data/spec/unit/type/file/checksum_spec.rb +6 -0
  1195. data/spec/unit/type/file/checksum_value_spec.rb +286 -0
  1196. data/spec/unit/type/file/content_spec.rb +12 -193
  1197. data/spec/unit/type/file/ctime_spec.rb +0 -0
  1198. data/spec/unit/type/file/ensure_spec.rb +0 -0
  1199. data/spec/unit/type/file/group_spec.rb +0 -0
  1200. data/spec/unit/type/file/mode_spec.rb +0 -0
  1201. data/spec/unit/type/file/mtime_spec.rb +0 -0
  1202. data/spec/unit/type/file/owner_spec.rb +0 -0
  1203. data/spec/unit/type/file/selinux_spec.rb +0 -0
  1204. data/spec/unit/type/file/source_spec.rb +211 -119
  1205. data/spec/unit/type/file/type_spec.rb +0 -0
  1206. data/spec/unit/type/file_spec.rb +133 -34
  1207. data/spec/unit/type/filebucket_spec.rb +0 -0
  1208. data/spec/unit/type/group_spec.rb +0 -0
  1209. data/spec/unit/type/host_spec.rb +4 -4
  1210. data/spec/unit/type/interface_spec.rb +32 -0
  1211. data/spec/unit/type/k5login_spec.rb +0 -0
  1212. data/spec/unit/type/macauthorization_spec.rb +4 -1
  1213. data/spec/unit/type/mailalias_spec.rb +0 -0
  1214. data/spec/unit/type/maillist_spec.rb +0 -0
  1215. data/spec/unit/type/mcx_spec.rb +0 -0
  1216. data/spec/unit/type/mount_spec.rb +59 -10
  1217. data/spec/unit/type/nagios_spec.rb +0 -0
  1218. data/spec/unit/type/noop_metaparam_spec.rb +0 -0
  1219. data/spec/unit/type/package/package_settings_spec.rb +0 -0
  1220. data/spec/unit/type/package_spec.rb +1 -0
  1221. data/spec/unit/type/resources_spec.rb +0 -0
  1222. data/spec/unit/type/schedule_spec.rb +0 -0
  1223. data/spec/unit/type/selboolean_spec.rb +0 -0
  1224. data/spec/unit/type/selmodule_spec.rb +0 -0
  1225. data/spec/unit/type/service_spec.rb +21 -0
  1226. data/spec/unit/type/ssh_authorized_key_spec.rb +0 -0
  1227. data/spec/unit/type/sshkey_spec.rb +0 -0
  1228. data/spec/unit/type/stage_spec.rb +0 -0
  1229. data/spec/unit/type/tidy_spec.rb +4 -4
  1230. data/spec/unit/type/user_spec.rb +14 -7
  1231. data/spec/unit/type/vlan_spec.rb +1 -1
  1232. data/spec/unit/type/whit_spec.rb +0 -0
  1233. data/spec/unit/type/yumrepo_spec.rb +2 -2
  1234. data/spec/unit/type/zfs_spec.rb +0 -0
  1235. data/spec/unit/type/zone_spec.rb +0 -0
  1236. data/spec/unit/type/zpool_spec.rb +0 -0
  1237. data/spec/unit/type_spec.rb +15 -1
  1238. data/spec/unit/util/autoload_spec.rb +0 -0
  1239. data/spec/unit/util/backups_spec.rb +0 -0
  1240. data/spec/unit/util/checksums_spec.rb +0 -0
  1241. data/spec/unit/util/colors_spec.rb +0 -0
  1242. data/spec/unit/util/command_line_spec.rb +0 -0
  1243. data/spec/unit/util/constant_inflector_spec.rb +0 -0
  1244. data/spec/unit/util/diff_spec.rb +0 -0
  1245. data/spec/unit/util/errors_spec.rb +0 -0
  1246. data/spec/unit/util/execution_spec.rb +0 -0
  1247. data/spec/unit/util/execution_stub_spec.rb +0 -0
  1248. data/spec/unit/util/feature_spec.rb +1 -1
  1249. data/spec/unit/util/filetype_spec.rb +1 -1
  1250. data/spec/unit/util/http_proxy_spec.rb +87 -0
  1251. data/spec/unit/util/ldap/connection_spec.rb +0 -0
  1252. data/spec/unit/util/ldap/generator_spec.rb +1 -1
  1253. data/spec/unit/util/ldap/manager_spec.rb +0 -0
  1254. data/spec/unit/util/log/destinations_spec.rb +0 -2
  1255. data/spec/unit/util/log_spec.rb +125 -1
  1256. data/spec/unit/util/logging_spec.rb +69 -0
  1257. data/spec/unit/util/metric_spec.rb +0 -0
  1258. data/spec/unit/util/monkey_patches_spec.rb +79 -3
  1259. data/spec/unit/util/multi_match_spec.rb +39 -0
  1260. data/spec/unit/util/nagios_maker_spec.rb +0 -0
  1261. data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
  1262. data/spec/unit/util/network_device/cisco/facts_spec.rb +0 -0
  1263. data/spec/unit/util/network_device/cisco/interface_spec.rb +0 -0
  1264. data/spec/unit/util/network_device/config_spec.rb +0 -0
  1265. data/spec/unit/util/network_device/ipcalc_spec.rb +0 -0
  1266. data/spec/unit/util/network_device/transport/base_spec.rb +0 -0
  1267. data/spec/unit/util/network_device/transport/ssh_spec.rb +1 -1
  1268. data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
  1269. data/spec/unit/util/network_device_spec.rb +1 -1
  1270. data/spec/unit/util/package_spec.rb +0 -0
  1271. data/spec/unit/util/plist_spec.rb +110 -0
  1272. data/spec/unit/util/posix_spec.rb +0 -0
  1273. data/spec/unit/util/rdoc_spec.rb +0 -0
  1274. data/spec/unit/util/resource_template_spec.rb +2 -2
  1275. data/spec/unit/util/retry_action_spec.rb +0 -0
  1276. data/spec/unit/util/run_mode_spec.rb +27 -3
  1277. data/spec/unit/util/selinux_spec.rb +0 -0
  1278. data/spec/unit/util/splayer_spec.rb +45 -0
  1279. data/spec/unit/util/storage_spec.rb +5 -1
  1280. data/spec/unit/util/suidmanager_spec.rb +0 -0
  1281. data/spec/unit/util/symbolic_file_mode_spec.rb +0 -0
  1282. data/spec/unit/util/tagging_spec.rb +0 -0
  1283. data/spec/unit/util/user_attr_spec.rb +0 -0
  1284. data/spec/unit/util/warnings_spec.rb +0 -0
  1285. data/spec/unit/util/windows/adsi_spec.rb +175 -60
  1286. data/spec/unit/util/windows/api_types_spec.rb +42 -0
  1287. data/spec/unit/util/windows/file_spec.rb +34 -0
  1288. data/spec/unit/util/windows/root_certs_spec.rb +0 -0
  1289. data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
  1290. data/spec/unit/util/windows/sid_spec.rb +48 -21
  1291. data/spec/unit/util_spec.rb +144 -15
  1292. data/spec/watchr.rb +0 -0
  1293. data/tasks/cfpropertylist.rake +15 -0
  1294. metadata +3427 -2981
  1295. checksums.yaml +0 -7
  1296. data/ext/puppet-nm-dispatcher +0 -13
  1297. data/ext/systemd/puppetmaster.service +0 -11
  1298. data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +0 -175
  1299. data/lib/puppet/pops/types/types_meta.rb +0 -223
  1300. data/lib/puppet/vendor/load_plist.rb +0 -1
  1301. data/lib/puppet/vendor/plist/CHANGELOG +0 -82
  1302. data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
  1303. data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
  1304. data/lib/puppet/vendor/plist/README +0 -36
  1305. data/lib/puppet/vendor/plist/Rakefile +0 -144
  1306. data/lib/puppet/vendor/plist/docs/USAGE +0 -104
  1307. data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
  1308. data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
  1309. data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
  1310. data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
  1311. data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
  1312. data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
  1313. data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
  1314. data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
  1315. data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
  1316. data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
  1317. data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
  1318. data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
  1319. data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
  1320. data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
  1321. data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
  1322. data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
  1323. data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
  1324. data/spec/integration/data_binding.rb +0 -104
  1325. data/spec/integration/provider/package_spec.rb +0 -33
  1326. /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{usee → modules/usee}/lib/puppet/functions/usee/callee.rb +0 -0
  1327. /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/lib/puppet/functions/user/caller.rb +0 -0
@@ -418,7 +418,7 @@ describe Puppet::Type.type(:file) do
418
418
  it "should not copy values to the child which were set by the source" do
419
419
  source = File.expand_path(__FILE__)
420
420
  file[:source] = source
421
- metadata = stub 'metadata', :owner => "root", :group => "root", :mode => '0755', :ftype => "file", :checksum => "{md5}whatever", :source => source
421
+ metadata = stub 'metadata', :owner => "root", :group => "root", :mode => '0755', :ftype => "file", :checksum => "{md5}whatever", :checksum_type => "md5", :source => source
422
422
  file.parameter(:source).stubs(:metadata).returns metadata
423
423
 
424
424
  file.parameter(:source).copy_source_values
@@ -518,19 +518,6 @@ describe Puppet::Type.type(:file) do
518
518
 
519
519
  end
520
520
 
521
- describe "#remove_less_specific_files" do
522
- it "should remove any nested files that are already in the catalog" do
523
- foo = described_class.new :path => File.join(file[:path], 'foo')
524
- bar = described_class.new :path => File.join(file[:path], 'bar')
525
- baz = described_class.new :path => File.join(file[:path], 'baz')
526
-
527
- catalog.add_resource(foo)
528
- catalog.add_resource(bar)
529
-
530
- expect(file.remove_less_specific_files([foo, bar, baz])).to eq([baz])
531
- end
532
- end
533
-
534
521
  describe "#remove_less_specific_files" do
535
522
  it "should remove any nested files that are already in the catalog" do
536
523
  foo = described_class.new :path => File.join(file[:path], 'foo')
@@ -720,6 +707,13 @@ describe Puppet::Type.type(:file) do
720
707
  file.recurse_remote("first" => @resource)
721
708
  end
722
709
 
710
+ it "should set the checksum parameter based on the metadata" do
711
+ file.stubs(:perform_recursion).returns [@first]
712
+ @resource.stubs(:[]=)
713
+ @resource.expects(:[]=).with(:checksum, "md5")
714
+ file.recurse_remote("first" => @resource)
715
+ end
716
+
723
717
  it "should store the metadata in the source property for each resource so the source does not have to requery the metadata" do
724
718
  file.stubs(:perform_recursion).returns [@first]
725
719
  @resource.expects(:parameter).with(:source).returns @parameter
@@ -747,6 +741,16 @@ describe Puppet::Type.type(:file) do
747
741
  file.recurse_remote("first" => @resource)
748
742
  end
749
743
 
744
+ it "should update the main file's checksum parameter if the relative path is '.'" do
745
+ @first.stubs(:relative_path).returns "."
746
+ file.stubs(:perform_recursion).returns [@first]
747
+
748
+ file.stubs(:[]=)
749
+ file.expects(:[]=).with(:checksum, "md5")
750
+
751
+ file.recurse_remote("first" => @resource)
752
+ end
753
+
750
754
  describe "and multiple sources are provided" do
751
755
  let(:sources) do
752
756
  h = {}
@@ -1070,11 +1074,13 @@ describe Puppet::Type.type(:file) do
1070
1074
  it "should fail if the checksum parameter and content checksums do not match" do
1071
1075
  checksum = stub('checksum_parameter', :sum => 'checksum_b', :sum_file => 'checksum_b')
1072
1076
  file.stubs(:parameter).with(:checksum).returns(checksum)
1077
+ file.stubs(:parameter).with(:source).returns(nil)
1078
+
1073
1079
 
1074
1080
  property = stub('content_property', :actual_content => "something", :length => "something".length, :write => 'checksum_a')
1075
1081
  file.stubs(:property).with(:content).returns(property)
1076
1082
 
1077
- expect { file.write :NOTUSED }.to raise_error(Puppet::Error)
1083
+ expect { file.write property }.to raise_error(Puppet::Error)
1078
1084
  end
1079
1085
  end
1080
1086
 
@@ -1084,11 +1090,12 @@ describe Puppet::Type.type(:file) do
1084
1090
  it "should not fail if the checksum property and content checksums do not match" do
1085
1091
  checksum = stub('checksum_parameter', :sum => 'checksum_b')
1086
1092
  file.stubs(:parameter).with(:checksum).returns(checksum)
1093
+ file.stubs(:parameter).with(:source).returns(nil)
1087
1094
 
1088
1095
  property = stub('content_property', :actual_content => "something", :length => "something".length, :write => 'checksum_a')
1089
1096
  file.stubs(:property).with(:content).returns(property)
1090
1097
 
1091
- expect { file.write :NOTUSED }.to_not raise_error
1098
+ expect { file.write property }.to_not raise_error
1092
1099
  end
1093
1100
  end
1094
1101
 
@@ -1101,13 +1108,13 @@ describe Puppet::Type.type(:file) do
1101
1108
  it "should convert symbolic mode to int" do
1102
1109
  file[:mode] = 'oga=r'
1103
1110
  Puppet::Util.expects(:replace_file).with(file[:path], 0444)
1104
- file.write :NOTUSED
1111
+ file.write
1105
1112
  end
1106
1113
 
1107
1114
  it "should support int modes" do
1108
1115
  file[:mode] = '0444'
1109
1116
  Puppet::Util.expects(:replace_file).with(file[:path], 0444)
1110
- file.write :NOTUSED
1117
+ file.write
1111
1118
  end
1112
1119
  end
1113
1120
 
@@ -1117,19 +1124,19 @@ describe Puppet::Type.type(:file) do
1117
1124
  it "should set a umask of 0" do
1118
1125
  file[:mode] = 'oga=r'
1119
1126
  Puppet::Util.expects(:withumask).with(0)
1120
- file.write :NOTUSED
1127
+ file.write
1121
1128
  end
1122
1129
 
1123
1130
  it "should convert symbolic mode to int" do
1124
1131
  file[:mode] = 'oga=r'
1125
1132
  File.expects(:open).with(file[:path], anything, 0444)
1126
- file.write :NOTUSED
1133
+ file.write
1127
1134
  end
1128
1135
 
1129
1136
  it "should support int modes" do
1130
1137
  file[:mode] = '0444'
1131
1138
  File.expects(:open).with(file[:path], anything, 0444)
1132
- file.write :NOTUSED
1139
+ file.write
1133
1140
  end
1134
1141
  end
1135
1142
  end
@@ -1139,7 +1146,7 @@ describe Puppet::Type.type(:file) do
1139
1146
  it "should default to 0644 mode" do
1140
1147
  file = described_class.new(:path => path, :content => "file content")
1141
1148
 
1142
- file.write :NOTUSED
1149
+ file.write file.parameter(:content)
1143
1150
 
1144
1151
  expect(File.stat(file[:path]).mode & 0777).to eq(0644)
1145
1152
  end
@@ -1151,7 +1158,7 @@ describe Puppet::Type.type(:file) do
1151
1158
 
1152
1159
  umask_from_the_user = 0777
1153
1160
  Puppet::Util.withumask(umask_from_the_user) do
1154
- file.write :NOTUSED
1161
+ file.write
1155
1162
  end
1156
1163
 
1157
1164
  expect(File.stat(file[:path]).mode & 0777).to eq(0644)
@@ -1189,16 +1196,6 @@ describe Puppet::Type.type(:file) do
1189
1196
  end
1190
1197
  end
1191
1198
 
1192
- describe "#write_content" do
1193
- it "should delegate writing the file to the content property" do
1194
- io = stub('io')
1195
- file[:content] = "some content here"
1196
- file.property(:content).expects(:write).with(io)
1197
-
1198
- file.send(:write_content, io)
1199
- end
1200
- end
1201
-
1202
1199
  describe "#write_temporary_file?" do
1203
1200
  it "should be true if the file has specified content" do
1204
1201
  file[:content] = 'some content'
@@ -1393,7 +1390,18 @@ describe Puppet::Type.type(:file) do
1393
1390
  describe "when using source" do
1394
1391
  before do
1395
1392
  file[:source] = File.expand_path('/one')
1393
+ @checksum_values = {
1394
+ :md5 => 'd41d8cd98f00b204e9800998ecf8427e',
1395
+ :md5lite => 'd41d8cd98f00b204e9800998ecf8427e',
1396
+ :sha256 => 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
1397
+ :sha256lite => 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
1398
+ :sha1 => 'da39a3ee5e6b4b0d3255bfef95601890afd80709',
1399
+ :sha1lite => 'da39a3ee5e6b4b0d3255bfef95601890afd80709',
1400
+ :mtime => 'Jan 26 13:59:49 2016',
1401
+ :ctime => 'Jan 26 13:59:49 2016'
1402
+ }
1396
1403
  end
1404
+
1397
1405
  Puppet::Type::File::ParameterChecksum.value_collection.values.reject {|v| v == :none}.each do |checksum_type|
1398
1406
  describe "with checksum '#{checksum_type}'" do
1399
1407
  before do
@@ -1401,12 +1409,66 @@ describe Puppet::Type.type(:file) do
1401
1409
  end
1402
1410
 
1403
1411
  it 'should validate' do
1412
+ expect { file.validate }.to_not raise_error
1413
+ end
1414
+
1415
+ it 'should fail on an invalid checksum_value' do
1416
+ file[:checksum_value] = ''
1417
+ expect { file.validate }.to raise_error(Puppet::Error, "Checksum value '' is not a valid checksum type #{checksum_type}")
1418
+ end
1404
1419
 
1420
+ it 'should validate a valid checksum_value' do
1421
+ file[:checksum_value] = @checksum_values[checksum_type]
1405
1422
  expect { file.validate }.to_not raise_error
1406
1423
  end
1407
1424
  end
1408
1425
  end
1409
1426
 
1427
+ describe "on Windows when source_permissions is `use`" do
1428
+ before :each do
1429
+ Puppet.features.stubs(:microsoft_windows?).returns true
1430
+ file[:source_permissions] = "use"
1431
+ end
1432
+ let(:err_message) { "Copying owner/mode/group from the" <<
1433
+ " source file on Windows is not supported;" <<
1434
+ " use source_permissions => ignore." }
1435
+
1436
+ it "should issue error when retrieving" do
1437
+ expect { file.retrieve }.to raise_error(err_message)
1438
+ end
1439
+
1440
+ it "should issue error when retrieving if only user is unspecified" do
1441
+ file[:group] = 2
1442
+ file[:mode] = "0003"
1443
+
1444
+ expect { file.retrieve }.to raise_error(err_message)
1445
+ end
1446
+
1447
+ it "should issue error when retrieving if only group is unspecified" do
1448
+ file[:owner] = 1
1449
+ file[:mode] = "0003"
1450
+
1451
+ expect { file.retrieve }.to raise_error(err_message)
1452
+ end
1453
+
1454
+ it "should issue error when retrieving if only mode is unspecified" do
1455
+ file[:owner] = 1
1456
+ file[:group] = 2
1457
+
1458
+ expect { file.retrieve }.to raise_error(err_message)
1459
+ end
1460
+
1461
+ it "should issue warning when retrieve if group, owner, and mode are all specified" do
1462
+ file[:owner] = 1
1463
+ file[:group] = 2
1464
+ file[:mode] = "0003"
1465
+
1466
+ file.parameter(:source).expects(:copy_source_values)
1467
+ file.expects(:warning).with(err_message)
1468
+ expect { file.retrieve }.not_to raise_error
1469
+ end
1470
+ end
1471
+
1410
1472
  describe "with checksum 'none'" do
1411
1473
  before do
1412
1474
  file[:checksum] = :none
@@ -1421,6 +1483,14 @@ describe Puppet::Type.type(:file) do
1421
1483
  describe "when using content" do
1422
1484
  before do
1423
1485
  file[:content] = 'file contents'
1486
+ @checksum_values = {
1487
+ :md5 => 'd41d8cd98f00b204e9800998ecf8427e',
1488
+ :md5lite => 'd41d8cd98f00b204e9800998ecf8427e',
1489
+ :sha256 => 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
1490
+ :sha256lite => 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
1491
+ :sha1 => 'da39a3ee5e6b4b0d3255bfef95601890afd80709',
1492
+ :sha1lite => 'da39a3ee5e6b4b0d3255bfef95601890afd80709',
1493
+ }
1424
1494
  end
1425
1495
 
1426
1496
  (Puppet::Type::File::ParameterChecksum.value_collection.values - SOURCE_ONLY_CHECKSUMS).each do |checksum_type|
@@ -1432,6 +1502,16 @@ describe Puppet::Type.type(:file) do
1432
1502
  it 'should validate' do
1433
1503
  expect { file.validate }.to_not raise_error
1434
1504
  end
1505
+
1506
+ it 'should fail on an invalid checksum_value' do
1507
+ file[:checksum_value] = ''
1508
+ expect { file.validate }.to raise_error(Puppet::Error, "Checksum value '' is not a valid checksum type #{checksum_type}")
1509
+ end
1510
+
1511
+ it 'should validate a valid checksum_value' do
1512
+ file[:checksum_value] = @checksum_values[checksum_type]
1513
+ expect { file.validate }.to_not raise_error
1514
+ end
1435
1515
  end
1436
1516
  end
1437
1517
 
@@ -1446,6 +1526,26 @@ describe Puppet::Type.type(:file) do
1446
1526
  end
1447
1527
  end
1448
1528
 
1529
+ describe "when checksum is none" do
1530
+ before do
1531
+ file[:checksum] = :none
1532
+ end
1533
+
1534
+ it 'should validate' do
1535
+ expect { file.validate }.to_not raise_error
1536
+ end
1537
+
1538
+ it 'should fail on an invalid checksum_value' do
1539
+ file[:checksum_value] = 'boo'
1540
+ expect { file.validate }.to raise_error(Puppet::Error, "Checksum value 'boo' is not a valid checksum type none")
1541
+ end
1542
+
1543
+ it 'should validate a valid checksum_value' do
1544
+ file[:checksum_value] = ''
1545
+ expect { file.validate }.to_not raise_error
1546
+ end
1547
+ end
1548
+
1449
1549
  describe "when auditing" do
1450
1550
  before :each do
1451
1551
  # to prevent the catalog from trying to write state.yaml
@@ -1501,5 +1601,4 @@ describe Puppet::Type.type(:file) do
1501
1601
  end
1502
1602
  end
1503
1603
  end
1504
-
1505
1604
  end
File without changes
File without changes
@@ -68,15 +68,15 @@ describe host do
68
68
  end
69
69
 
70
70
  it "should not accept malformed IPv4 addresses like 192.168.0.300" do
71
- expect { @class.new(:name => "foo", :ip => '192.168.0.300') }.to raise_error
71
+ expect { @class.new(:name => "foo", :ip => '192.168.0.300') }.to raise_error(Puppet::ResourceError, /Parameter ip failed/)
72
72
  end
73
73
 
74
74
  it "should reject over-long IPv4 addresses" do
75
- expect { @class.new(:name => "foo", :ip => '10.10.10.10.10') }.to raise_error
75
+ expect { @class.new(:name => "foo", :ip => '10.10.10.10.10') }.to raise_error(Puppet::ResourceError, /Parameter ip failed/)
76
76
  end
77
77
 
78
78
  it "should not accept malformed IP addresses like 2001:0dg8:85a3:08d3:1319:8a2e:0370:7344" do
79
- expect { @class.new(:name => "foo", :ip => '2001:0dg8:85a3:08d3:1319:8a2e:0370:7344') }.to raise_error
79
+ expect { @class.new(:name => "foo", :ip => '2001:0dg8:85a3:08d3:1319:8a2e:0370:7344') }.to raise_error(Puppet::ResourceError, /Parameter ip failed/)
80
80
  end
81
81
 
82
82
  # Assorted, annotated IPv6 passes.
@@ -598,7 +598,7 @@ describe host do
598
598
  "::2222:3333:4444:5555:6666:7777:8888:",
599
599
  ].each do |ip|
600
600
  it "should reject #{ip.inspect} as an IPv6 address" do
601
- expect { @class.new(:name => "foo", :ip => ip) }.to raise_error
601
+ expect { @class.new(:name => "foo", :ip => ip) }.to raise_error(Puppet::ResourceError, /Parameter ip failed/)
602
602
  end
603
603
  end
604
604
 
@@ -67,6 +67,38 @@ describe Puppet::Type.type(:interface) do
67
67
  end
68
68
  end
69
69
 
70
+ describe "interface mode" do
71
+ it "should allow :access" do
72
+ Puppet::Type.type(:interface).new(:name => "FastEthernet 0/1", :mode => :access)
73
+ end
74
+
75
+ it "should allow :trunk" do
76
+ Puppet::Type.type(:interface).new(:name => "FastEthernet 0/1", :mode => :trunk)
77
+ end
78
+
79
+ it "should allow 'dynamic auto'" do
80
+ Puppet::Type.type(:interface).new(:name => "FastEthernet 0/1", :mode => 'dynamic auto')
81
+ end
82
+
83
+ it "should allow 'dynamic desirable'" do
84
+ Puppet::Type.type(:interface).new(:name => "FastEthernet 0/1", :mode => 'dynamic desirable')
85
+ end
86
+ end
87
+
88
+ describe "interface encapsulation" do
89
+ it "should allow :dot1q" do
90
+ Puppet::Type.type(:interface).new(:name => "FastEthernet 0/1", :encapsulation => :dot1q)
91
+ end
92
+
93
+ it "should allow :isl" do
94
+ Puppet::Type.type(:interface).new(:name => "FastEthernet 0/1", :encapsulation => :isl)
95
+ end
96
+
97
+ it "should allow :negotiate" do
98
+ Puppet::Type.type(:interface).new(:name => "FastEthernet 0/1", :encapsulation => :negotiate)
99
+ end
100
+ end
101
+
70
102
  describe "especially ipaddress" do
71
103
  it "should allow ipv4 addresses" do
72
104
  Puppet::Type.type(:interface).new(:name => "FastEthernet 0/1", :ipaddress => "192.168.0.1/24")
File without changes
@@ -1,6 +1,9 @@
1
1
  #! /usr/bin/env ruby
2
2
  require 'spec_helper'
3
3
 
4
+ module Puppet::Util::Plist
5
+ end
6
+
4
7
  macauth_type = Puppet::Type.type(:macauthorization)
5
8
 
6
9
  describe Puppet::Type.type(:macauthorization), "when checking macauthorization objects" do
@@ -10,7 +13,7 @@ describe Puppet::Type.type(:macauthorization), "when checking macauthorization o
10
13
  authplist["rules"] = { "foorule" => "foo" }
11
14
  authplist["rights"] = { "fooright" => "foo" }
12
15
  provider_class = macauth_type.provider(macauth_type.providers[0])
13
- Plist.stubs(:parse_xml).with("/etc/authorization").returns(authplist)
16
+ Puppet::Util::Plist.stubs(:parse_plist).with("/etc/authorization").returns(authplist)
14
17
  macauth_type.stubs(:defaultprovider).returns provider_class
15
18
  @resource = macauth_type.new(:name => 'foo')
16
19
  end
File without changes
File without changes
File without changes
@@ -197,6 +197,10 @@ describe Puppet::Type.type(:mount), :unless => Puppet.features.microsoft_windows
197
197
  it "should not support whitespace in fstype" do
198
198
  expect { described_class.new(:name => "/foo", :ensure => :present, :fstype => 'ext 3') }.to raise_error Puppet::Error, /fstype.*whitespace/
199
199
  end
200
+
201
+ it "should not support an empty string in fstype" do
202
+ expect { described_class.new(:name => "/foo", :ensure => :present, :fstype => "") }.to raise_error Puppet::Error, /fstype.*empty string/
203
+ end
200
204
  end
201
205
 
202
206
  describe "for options" do
@@ -211,6 +215,10 @@ describe Puppet::Type.type(:mount), :unless => Puppet.features.microsoft_windows
211
215
  it "should not support whitespace in options" do
212
216
  expect { described_class.new(:name => "/foo", :ensure => :present, :options => ['ro','foo bar','intr']) }.to raise_error Puppet::Error, /option.*whitespace/
213
217
  end
218
+
219
+ it "should not support an empty string in options" do
220
+ expect { described_class.new(:name => "/foo", :ensure => :present, :options => "") }.to raise_error Puppet::Error, /option.*empty string/
221
+ end
214
222
  end
215
223
 
216
224
  describe "for pass" do
@@ -537,15 +545,23 @@ describe Puppet::Type.type(:mount), :unless => Puppet.features.microsoft_windows
537
545
  end
538
546
  end
539
547
 
540
- describe "establishing autorequires" do
548
+ describe "establishing autorequires and autobefores" do
541
549
 
542
- def create_resource(path)
550
+ def create_mount_resource(path)
543
551
  described_class.new(
544
552
  :name => path,
545
553
  :provider => providerclass.new(path)
546
554
  )
547
555
  end
548
556
 
557
+ def create_file_resource(path)
558
+ file_class = Puppet::Type.type(:file)
559
+ file_class.new(
560
+ :path => path,
561
+ :provider => file_class.new(:path => path).provider
562
+ )
563
+ end
564
+
549
565
  def create_catalog(*resources)
550
566
  catalog = Puppet::Resource::Catalog.new
551
567
  resources.each do |resource|
@@ -555,38 +571,71 @@ describe Puppet::Type.type(:mount), :unless => Puppet.features.microsoft_windows
555
571
  catalog
556
572
  end
557
573
 
558
- let(:root_mount) { create_resource("/") }
559
- let(:var_mount) { create_resource("/var") }
560
- let(:log_mount) { create_resource("/var/log") }
574
+ let(:root_mount) { create_mount_resource("/") }
575
+ let(:var_mount) { create_mount_resource("/var") }
576
+ let(:log_mount) { create_mount_resource("/var/log") }
577
+ let(:var_file) { create_file_resource('/var') }
578
+ let(:log_file) { create_file_resource('/var/log') }
579
+ let(:puppet_file) { create_file_resource('/var/log/puppet') }
561
580
 
562
581
  before do
563
- create_catalog(root_mount, var_mount, log_mount)
582
+ create_catalog(root_mount, var_mount, log_mount, var_file, log_file, puppet_file)
564
583
  end
565
584
 
566
585
  it "adds no autorequires for the root mount" do
567
586
  expect(root_mount.autorequire).to be_empty
568
587
  end
569
588
 
570
- it "adds the parent autorequire for a mount with one parent" do
589
+ it "adds the parent autorequire and the file autorequire for a mount with one parent" do
571
590
  parent_relationship = var_mount.autorequire[0]
591
+ file_relationship = var_mount.autorequire[1]
572
592
 
573
- expect(var_mount.autorequire).to have_exactly(1).item
593
+ expect(var_mount.autorequire).to have_exactly(2).items
574
594
 
575
595
  expect(parent_relationship.source).to eq root_mount
576
596
  expect(parent_relationship.target).to eq var_mount
597
+
598
+ expect(file_relationship.source).to eq var_file
599
+ expect(file_relationship.target).to eq var_mount
577
600
  end
578
601
 
579
- it "adds both parent autorequires for a mount with two parents" do
602
+ it "adds both parent autorequires and the file autorequire for a mount with two parents" do
580
603
  grandparent_relationship = log_mount.autorequire[0]
581
604
  parent_relationship = log_mount.autorequire[1]
605
+ file_relationship = log_mount.autorequire[2]
582
606
 
583
- expect(log_mount.autorequire).to have_exactly(2).items
607
+ expect(log_mount.autorequire).to have_exactly(3).items
584
608
 
585
609
  expect(grandparent_relationship.source).to eq root_mount
586
610
  expect(grandparent_relationship.target).to eq log_mount
587
611
 
588
612
  expect(parent_relationship.source).to eq var_mount
589
613
  expect(parent_relationship.target).to eq log_mount
614
+
615
+ expect(file_relationship.source).to eq log_file
616
+ expect(file_relationship.target).to eq log_mount
617
+ end
618
+
619
+ it "adds the child autobefore for a mount with one file child" do
620
+ child_relationship = log_mount.autobefore[0]
621
+
622
+ expect(log_mount.autobefore).to have_exactly(1).item
623
+
624
+ expect(child_relationship.source).to eq log_mount
625
+ expect(child_relationship.target).to eq puppet_file
626
+ end
627
+
628
+ it "adds both child autobefores for a mount with two file childs" do
629
+ child_relationship = var_mount.autobefore[0]
630
+ grandchild_relationship = var_mount.autobefore[1]
631
+
632
+ expect(var_mount.autobefore).to have_exactly(2).items
633
+
634
+ expect(child_relationship.source).to eq var_mount
635
+ expect(child_relationship.target).to eq log_file
636
+
637
+ expect(grandchild_relationship.source).to eq var_mount
638
+ expect(grandchild_relationship.target).to eq puppet_file
590
639
  end
591
640
  end
592
641
  end
File without changes
File without changes
File without changes
@@ -3,6 +3,7 @@ require 'spec_helper'
3
3
 
4
4
  describe Puppet::Type.type(:package) do
5
5
  before do
6
+ Process.stubs(:euid).returns 0
6
7
  Puppet::Util::Storage.stubs(:store)
7
8
  end
8
9
 
File without changes
File without changes
File without changes
File without changes
@@ -63,6 +63,11 @@ describe Puppet::Type.type(:service), "when validating attribute values" do
63
63
  expect(srv.should(:enable)).to eq(:false)
64
64
  end
65
65
 
66
+ it "should support :mask as a value" do
67
+ srv = Puppet::Type.type(:service).new(:name => "yay", :enable => :mask)
68
+ expect(srv.should(:enable)).to eq(:mask)
69
+ end
70
+
66
71
  it "should support :manual as a value on Windows" do
67
72
  Puppet.features.stubs(:microsoft_windows?).returns true
68
73
 
@@ -213,6 +218,22 @@ describe Puppet::Type.type(:service), "when changing the host" do
213
218
  @service.property(:enable).sync
214
219
  end
215
220
 
221
+ it "should always consider the enable state of a static service to be in sync" do
222
+ @service.provider.class.stubs(:supports_parameter?).returns(true)
223
+ @service.provider.expects(:cached_enabled?).returns('static')
224
+ @service[:enable] = false
225
+ Puppet.expects(:debug).with("Unable to enable or disable static service yay")
226
+ expect(@service.property(:enable).insync?(:true)).to eq(true)
227
+ end
228
+
229
+ it "should determine insyncness normally when the service is not static" do
230
+ @service.provider.class.stubs(:supports_parameter?).returns(true)
231
+ @service.provider.expects(:cached_enabled?).returns('true')
232
+ @service[:enable] = true
233
+ Puppet.expects(:debug).never
234
+ expect(@service.property(:enable).insync?(:true)).to eq(true)
235
+ end
236
+
216
237
  it "should sync the service's enable state when changing the state of :ensure if :enable is being managed" do
217
238
  @service.provider.class.stubs(:supports_parameter?).returns(true)
218
239
  @service[:enable] = false
File without changes
File without changes
File without changes
@@ -66,7 +66,7 @@ describe tidy do
66
66
  end
67
67
 
68
68
  it "should not allow arbitrary values" do
69
- expect { @tidy[:recurse] = "whatever" }.to raise_error
69
+ expect { @tidy[:recurse] = "whatever" }.to raise_error(Puppet::ResourceError, /Parameter recurse failed/)
70
70
  end
71
71
  end
72
72
 
@@ -76,13 +76,13 @@ describe tidy do
76
76
  end
77
77
 
78
78
  it "should object if matches is given with recurse is not specified" do
79
- expect { @tidy[:matches] = '*.doh' }.to raise_error
79
+ expect { @tidy[:matches] = '*.doh' }.to raise_error(Puppet::ResourceError, /Parameter matches failed/)
80
80
  end
81
81
  it "should object if matches is given and recurse is 0" do
82
- expect { @tidy[:recurse] = 0; @tidy[:matches] = '*.doh' }.to raise_error
82
+ expect { @tidy[:recurse] = 0; @tidy[:matches] = '*.doh' }.to raise_error(Puppet::ResourceError, /Parameter matches failed/)
83
83
  end
84
84
  it "should object if matches is given and recurse is false" do
85
- expect { @tidy[:recurse] = false; @tidy[:matches] = '*.doh' }.to raise_error
85
+ expect { @tidy[:recurse] = false; @tidy[:matches] = '*.doh' }.to raise_error(Puppet::ResourceError, /Parameter matches failed/)
86
86
  end
87
87
  it "should not object if matches is given and recurse is > 0" do
88
88
  expect { @tidy[:recurse] = 1; @tidy[:matches] = '*.doh' }.not_to raise_error
@@ -344,13 +344,20 @@ describe Puppet::Type.type(:user) do
344
344
  end
345
345
  end
346
346
 
347
- describe "when managing comment on Ruby 1.9", :if => String.method_defined?(:encode) do
348
- it "should force value encoding to ASCII-8BIT" do
349
- value = 'abcd™'
350
- expect(value.encoding).to eq(Encoding::UTF_8)
351
- user = described_class.new(:name => 'foo', :comment => value)
352
- expect(user[:comment].encoding).to eq(Encoding::ASCII_8BIT)
353
- expect(user[:comment]).to eq(value.force_encoding(Encoding::ASCII_8BIT))
347
+ describe "when managing comment" do
348
+ before :each do
349
+ @value = 'abcd™'
350
+ expect(@value.encoding).to eq(Encoding::UTF_8)
351
+ @user = described_class.new(:name => 'foo', :comment => @value)
352
+ end
353
+
354
+ it "should be converted to ASCII_8BIT for ruby 1.9 / 2.0", :if => RUBY_VERSION < "2.1.0" && String.method_defined?(:encode) do
355
+ expect(@user[:comment].encoding).to eq(Encoding::ASCII_8BIT)
356
+ expect(@user[:comment]).to eq(@value.force_encoding(Encoding::ASCII_8BIT))
357
+ end
358
+
359
+ it "must not be converted for ruby >= 2.1", :if => RUBY_VERSION >= "2.1.0" do
360
+ expect(@user[:comment].encoding).to eq(Encoding::UTF_8)
354
361
  end
355
362
  end
356
363