puppet 3.2.4 → 3.3.0.rc2

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

Potentially problematic release.


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

Files changed (562) hide show
  1. data/COMMITTERS.md +101 -42
  2. data/Gemfile +15 -4
  3. data/README.md +5 -1
  4. data/README_DEVELOPER.md +117 -54
  5. data/Rakefile +4 -0
  6. data/ext/build_defaults.yaml +3 -2
  7. data/ext/debian/puppet-common.manpages +33 -1
  8. data/ext/gentoo/init.d/puppet +1 -1
  9. data/ext/gentoo/init.d/puppetmaster +1 -1
  10. data/ext/redhat/puppet.spec.erb +0 -1
  11. data/install.rb +2 -1
  12. data/lib/hiera/backend/puppet_backend.rb +1 -1
  13. data/lib/puppet/application.rb +10 -9
  14. data/lib/puppet/application/agent.rb +87 -93
  15. data/lib/puppet/application/apply.rb +0 -2
  16. data/lib/puppet/application/device.rb +3 -3
  17. data/lib/puppet/application/kick.rb +2 -2
  18. data/lib/puppet/application/master.rb +41 -19
  19. data/lib/puppet/application/queue.rb +5 -3
  20. data/lib/puppet/bindings.rb +147 -0
  21. data/lib/puppet/configurer.rb +25 -15
  22. data/lib/puppet/configurer/fact_handler.rb +2 -9
  23. data/lib/puppet/daemon.rb +44 -33
  24. data/lib/puppet/defaults.rb +57 -26
  25. data/lib/puppet/error.rb +1 -1
  26. data/lib/puppet/external/dot.rb +2 -2
  27. data/lib/puppet/external/nagios/base.rb +1 -6
  28. data/lib/puppet/external/pson/common.rb +2 -2
  29. data/lib/puppet/external/pson/pure/generator.rb +2 -2
  30. data/lib/puppet/external/pson/pure/parser.rb +1 -1
  31. data/lib/puppet/face/ca.rb +1 -1
  32. data/lib/puppet/face/config.rb +1 -1
  33. data/lib/puppet/face/help.rb +2 -2
  34. data/lib/puppet/face/module/list.rb +2 -2
  35. data/lib/puppet/feature/rails.rb +1 -1
  36. data/lib/puppet/file_bucket/dipper.rb +0 -1
  37. data/lib/puppet/file_serving/base.rb +1 -1
  38. data/lib/puppet/file_serving/configuration/parser.rb +20 -14
  39. data/lib/puppet/forge.rb +0 -32
  40. data/lib/puppet/forge/cache.rb +1 -1
  41. data/lib/puppet/forge/errors.rb +3 -3
  42. data/lib/puppet/forge/repository.rb +7 -42
  43. data/lib/puppet/graph.rb +11 -0
  44. data/lib/puppet/graph/key.rb +26 -0
  45. data/lib/puppet/graph/prioritizer.rb +29 -0
  46. data/lib/puppet/graph/random_prioritizer.rb +16 -0
  47. data/lib/puppet/{rb_tree_map.rb → graph/rb_tree_map.rb} +3 -3
  48. data/lib/puppet/graph/relationship_graph.rb +246 -0
  49. data/lib/puppet/graph/sequential_prioritizer.rb +31 -0
  50. data/lib/puppet/{simple_graph.rb → graph/simple_graph.rb} +22 -3
  51. data/lib/puppet/graph/title_hash_prioritizer.rb +16 -0
  52. data/lib/puppet/indirector.rb +2 -2
  53. data/lib/puppet/indirector/catalog/compiler.rb +10 -7
  54. data/lib/puppet/indirector/catalog/static_compiler.rb +50 -0
  55. data/lib/puppet/indirector/certificate/rest.rb +1 -1
  56. data/lib/puppet/indirector/exec.rb +1 -1
  57. data/lib/puppet/indirector/facts/facter.rb +2 -2
  58. data/lib/puppet/indirector/facts/inventory_active_record.rb +0 -1
  59. data/lib/puppet/indirector/facts/network_device.rb +1 -1
  60. data/lib/puppet/indirector/file_bucket_file/file.rb +0 -1
  61. data/lib/puppet/indirector/indirection.rb +2 -2
  62. data/lib/puppet/indirector/memory.rb +9 -0
  63. data/lib/puppet/indirector/node/ldap.rb +2 -4
  64. data/lib/puppet/indirector/report/processor.rb +1 -2
  65. data/lib/puppet/indirector/report/rest.rb +1 -1
  66. data/lib/puppet/indirector/request.rb +32 -10
  67. data/lib/puppet/indirector/resource/rest.rb +1 -1
  68. data/lib/puppet/indirector/resource_type/parser.rb +31 -12
  69. data/lib/puppet/interface.rb +1 -1
  70. data/lib/puppet/interface/documentation.rb +7 -11
  71. data/lib/puppet/interface/option.rb +1 -1
  72. data/lib/puppet/interface/option_builder.rb +1 -1
  73. data/lib/puppet/metatype/manager.rb +2 -2
  74. data/lib/puppet/module.rb +7 -1
  75. data/lib/puppet/module_tool.rb +1 -1
  76. data/lib/puppet/module_tool/applications/application.rb +10 -0
  77. data/lib/puppet/module_tool/applications/installer.rb +6 -3
  78. data/lib/puppet/module_tool/dependency.rb +2 -0
  79. data/lib/puppet/module_tool/errors/upgrader.rb +1 -1
  80. data/lib/puppet/module_tool/metadata.rb +25 -13
  81. data/lib/puppet/module_tool/modulefile.rb +7 -7
  82. data/lib/puppet/module_tool/shared_behaviors.rb +4 -2
  83. data/lib/puppet/module_tool/skeleton.rb +1 -1
  84. data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +5 -5
  85. data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +5 -4
  86. data/lib/puppet/network/auth_config_parser.rb +3 -0
  87. data/lib/puppet/network/authconfig.rb +0 -1
  88. data/lib/puppet/network/authorization.rb +1 -1
  89. data/lib/puppet/network/authstore.rb +2 -2
  90. data/lib/puppet/network/format_handler.rb +25 -114
  91. data/lib/puppet/network/format_support.rb +106 -0
  92. data/lib/puppet/network/formats.rb +10 -4
  93. data/lib/puppet/network/http/compression.rb +1 -1
  94. data/lib/puppet/network/http/connection.rb +76 -32
  95. data/lib/puppet/network/http/handler.rb +122 -61
  96. data/lib/puppet/network/http/rack/rest.rb +1 -1
  97. data/lib/puppet/network/http/webrick/rest.rb +9 -3
  98. data/lib/puppet/network/http_pool.rb +2 -2
  99. data/lib/puppet/network/resolver.rb +1 -0
  100. data/lib/puppet/network/server.rb +5 -81
  101. data/lib/puppet/node/environment.rb +256 -13
  102. data/lib/puppet/node/facts.rb +28 -2
  103. data/lib/puppet/parameter.rb +27 -18
  104. data/lib/puppet/parameter/boolean.rb +20 -0
  105. data/lib/puppet/parameter/path.rb +1 -1
  106. data/lib/puppet/parameter/value.rb +1 -1
  107. data/lib/puppet/parameter/value_collection.rb +1 -1
  108. data/lib/puppet/parser/ast/arithmetic_operator.rb +8 -0
  109. data/lib/puppet/parser/ast/casestatement.rb +0 -3
  110. data/lib/puppet/parser/ast/lambda.rb +25 -6
  111. data/lib/puppet/parser/ast/leaf.rb +10 -3
  112. data/lib/puppet/parser/ast/nop.rb +1 -1
  113. data/lib/puppet/parser/ast/resource_override.rb +0 -2
  114. data/lib/puppet/parser/compiler.rb +92 -34
  115. data/lib/puppet/parser/files.rb +0 -5
  116. data/lib/puppet/parser/functions/create_resources.rb +23 -46
  117. data/lib/puppet/parser/functions/each.rb +0 -2
  118. data/lib/puppet/parser/functions/extlookup.rb +2 -2
  119. data/lib/puppet/parser/functions/foreach.rb +0 -2
  120. data/lib/puppet/parser/functions/hiera_include.rb +1 -1
  121. data/lib/puppet/parser/functions/lookup.rb +44 -0
  122. data/lib/puppet/parser/functions/slice.rb +1 -1
  123. data/lib/puppet/parser/grammar.ra +0 -1
  124. data/lib/puppet/parser/lexer.rb +0 -1
  125. data/lib/puppet/parser/parser.rb +0 -1
  126. data/lib/puppet/parser/parser_factory.rb +3 -2
  127. data/lib/puppet/parser/parser_support.rb +1 -1
  128. data/lib/puppet/parser/relationship.rb +1 -1
  129. data/lib/puppet/parser/scope.rb +49 -24
  130. data/lib/puppet/parser/type_loader.rb +13 -18
  131. data/lib/puppet/pops.rb +45 -0
  132. data/lib/puppet/pops/adaptable.rb +2 -2
  133. data/lib/puppet/pops/adapters.rb +4 -0
  134. data/lib/puppet/pops/binder/binder.rb +421 -0
  135. data/lib/puppet/pops/binder/binder_issues.rb +142 -0
  136. data/lib/puppet/pops/binder/bindings_checker.rb +217 -0
  137. data/lib/puppet/pops/binder/bindings_composer.rb +241 -0
  138. data/lib/puppet/pops/binder/bindings_factory.rb +847 -0
  139. data/lib/puppet/pops/binder/bindings_label_provider.rb +46 -0
  140. data/lib/puppet/pops/binder/bindings_loader.rb +79 -0
  141. data/lib/puppet/pops/binder/bindings_model.rb +215 -0
  142. data/lib/puppet/pops/binder/bindings_model_dumper.rb +205 -0
  143. data/lib/puppet/pops/binder/bindings_validator_factory.rb +28 -0
  144. data/lib/puppet/pops/binder/config/binder_config.rb +139 -0
  145. data/lib/puppet/pops/binder/config/binder_config_checker.rb +183 -0
  146. data/lib/puppet/pops/binder/config/diagnostic_producer.rb +32 -0
  147. data/lib/puppet/pops/binder/config/issues.rb +106 -0
  148. data/lib/puppet/pops/binder/hiera2.rb +10 -0
  149. data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +148 -0
  150. data/lib/puppet/pops/binder/hiera2/config.rb +69 -0
  151. data/lib/puppet/pops/binder/hiera2/config_checker.rb +68 -0
  152. data/lib/puppet/pops/binder/hiera2/diagnostic_producer.rb +36 -0
  153. data/lib/puppet/pops/binder/hiera2/issues.rb +67 -0
  154. data/lib/puppet/pops/binder/hiera2/json_backend.rb +18 -0
  155. data/lib/puppet/pops/binder/hiera2/yaml_backend.rb +21 -0
  156. data/lib/puppet/pops/binder/injector.rb +688 -0
  157. data/lib/puppet/pops/binder/injector_entry.rb +53 -0
  158. data/lib/puppet/pops/binder/key_factory.rb +61 -0
  159. data/lib/puppet/pops/binder/producers.rb +829 -0
  160. data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +67 -0
  161. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +34 -0
  162. data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +92 -0
  163. data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +84 -0
  164. data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +54 -0
  165. data/lib/puppet/pops/binder/system_bindings.rb +72 -0
  166. data/lib/puppet/pops/issue_reporter.rb +75 -0
  167. data/lib/puppet/pops/issues.rb +9 -5
  168. data/lib/puppet/pops/model/ast_transformer.rb +4 -4
  169. data/lib/puppet/pops/model/ast_tree_dumper.rb +1 -1
  170. data/lib/puppet/pops/model/factory.rb +25 -13
  171. data/lib/puppet/pops/model/model.rb +1 -1
  172. data/lib/puppet/pops/model/tree_dumper.rb +2 -2
  173. data/lib/puppet/pops/parser/egrammar.ra +0 -1
  174. data/lib/puppet/pops/parser/eparser.rb +1 -2
  175. data/lib/puppet/pops/parser/evaluating_parser.rb +162 -0
  176. data/lib/puppet/pops/parser/lexer.rb +8 -6
  177. data/lib/puppet/pops/types/class_loader.rb +118 -0
  178. data/lib/puppet/pops/types/type_calculator.rb +557 -0
  179. data/lib/puppet/pops/types/type_factory.rb +147 -0
  180. data/lib/puppet/pops/types/type_parser.rb +117 -0
  181. data/lib/puppet/pops/types/types.rb +132 -0
  182. data/lib/puppet/pops/validation.rb +146 -17
  183. data/lib/puppet/pops/validation/checker3_1.rb +1 -1
  184. data/lib/puppet/pops/validation/validator_factory_3_1.rb +6 -16
  185. data/lib/puppet/property.rb +3 -3
  186. data/lib/puppet/property/keyvalue.rb +1 -1
  187. data/lib/puppet/provider.rb +2 -2
  188. data/lib/puppet/provider/aixobject.rb +19 -21
  189. data/lib/puppet/provider/augeas/augeas.rb +3 -1
  190. data/lib/puppet/provider/command.rb +2 -2
  191. data/lib/puppet/provider/group/aix.rb +1 -1
  192. data/lib/puppet/provider/group/ldap.rb +1 -1
  193. data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
  194. data/lib/puppet/provider/mailalias/aliases.rb +3 -8
  195. data/lib/puppet/provider/mcx/mcxcontent.rb +7 -1
  196. data/lib/puppet/provider/mount.rb +8 -3
  197. data/lib/puppet/provider/nameservice.rb +1 -1
  198. data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
  199. data/lib/puppet/provider/package/appdmg.rb +1 -1
  200. data/lib/puppet/provider/package/apt.rb +0 -1
  201. data/lib/puppet/provider/package/dpkg.rb +86 -32
  202. data/lib/puppet/provider/package/fink.rb +0 -2
  203. data/lib/puppet/provider/package/freebsd.rb +0 -2
  204. data/lib/puppet/provider/package/openbsd.rb +57 -10
  205. data/lib/puppet/provider/package/opkg.rb +0 -1
  206. data/lib/puppet/provider/package/pacman.rb +0 -1
  207. data/lib/puppet/provider/package/pip.rb +1 -1
  208. data/lib/puppet/provider/package/pkgdmg.rb +17 -6
  209. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  210. data/lib/puppet/provider/package/portage.rb +9 -1
  211. data/lib/puppet/provider/package/ports.rb +2 -2
  212. data/lib/puppet/provider/package/rpm.rb +29 -12
  213. data/lib/puppet/provider/package/rug.rb +1 -1
  214. data/lib/puppet/provider/package/urpmi.rb +11 -15
  215. data/lib/puppet/provider/package/windows/exe_package.rb +1 -1
  216. data/lib/puppet/provider/package/windows/package.rb +1 -26
  217. data/lib/puppet/provider/package/yum.rb +1 -1
  218. data/lib/puppet/provider/package/zypper.rb +22 -3
  219. data/lib/puppet/provider/parsedfile.rb +1 -12
  220. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +1 -1
  221. data/lib/puppet/provider/service/base.rb +1 -1
  222. data/lib/puppet/provider/service/daemontools.rb +3 -3
  223. data/lib/puppet/provider/service/debian.rb +1 -1
  224. data/lib/puppet/provider/service/init.rb +14 -20
  225. data/lib/puppet/provider/service/openrc.rb +3 -1
  226. data/lib/puppet/provider/service/redhat.rb +5 -8
  227. data/lib/puppet/provider/service/runit.rb +3 -2
  228. data/lib/puppet/provider/service/systemd.rb +1 -1
  229. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
  230. data/lib/puppet/provider/sshkey/parsed.rb +0 -2
  231. data/lib/puppet/provider/user/aix.rb +25 -12
  232. data/lib/puppet/provider/user/directoryservice.rb +4 -7
  233. data/lib/puppet/provider/user/ldap.rb +0 -1
  234. data/lib/puppet/provider/user/user_role_add.rb +2 -0
  235. data/lib/puppet/provider/user/useradd.rb +1 -1
  236. data/lib/puppet/provider/zone/solaris.rb +1 -2
  237. data/lib/puppet/reference/metaparameter.rb +1 -1
  238. data/lib/puppet/reference/type.rb +1 -1
  239. data/lib/puppet/reports/rrdgraph.rb +1 -1
  240. data/lib/puppet/reports/tagmail.rb +1 -1
  241. data/lib/puppet/resource.rb +16 -4
  242. data/lib/puppet/resource/catalog.rb +111 -173
  243. data/lib/puppet/resource/status.rb +42 -3
  244. data/lib/puppet/resource/type.rb +33 -46
  245. data/lib/puppet/resource/type_collection.rb +19 -15
  246. data/lib/puppet/run.rb +5 -1
  247. data/lib/puppet/scheduler/scheduler.rb +14 -15
  248. data/lib/puppet/settings.rb +78 -41
  249. data/lib/puppet/settings/boolean_setting.rb +0 -2
  250. data/lib/puppet/settings/config_file.rb +0 -2
  251. data/lib/puppet/settings/directory_setting.rb +0 -2
  252. data/lib/puppet/settings/duration_setting.rb +0 -2
  253. data/lib/puppet/settings/enum_setting.rb +16 -0
  254. data/lib/puppet/settings/file_setting.rb +0 -2
  255. data/lib/puppet/settings/path_setting.rb +0 -2
  256. data/lib/puppet/settings/string_setting.rb +0 -3
  257. data/lib/puppet/settings/terminus_setting.rb +0 -2
  258. data/lib/puppet/ssl/certificate_authority.rb +102 -9
  259. data/lib/puppet/test/test_helper.rb +1 -0
  260. data/lib/puppet/transaction.rb +130 -292
  261. data/lib/puppet/transaction/additional_resource_generator.rb +126 -0
  262. data/lib/puppet/transaction/event.rb +16 -1
  263. data/lib/puppet/transaction/report.rb +34 -14
  264. data/lib/puppet/transaction/resource_harness.rb +16 -19
  265. data/lib/puppet/type.rb +59 -53
  266. data/lib/puppet/type/component.rb +0 -2
  267. data/lib/puppet/type/cron.rb +13 -2
  268. data/lib/puppet/type/exec.rb +5 -7
  269. data/lib/puppet/type/file.rb +9 -32
  270. data/lib/puppet/type/file/content.rb +4 -1
  271. data/lib/puppet/type/file/ctime.rb +3 -1
  272. data/lib/puppet/type/file/ensure.rb +1 -1
  273. data/lib/puppet/type/file/mode.rb +0 -1
  274. data/lib/puppet/type/file/mtime.rb +2 -1
  275. data/lib/puppet/type/group.rb +7 -9
  276. data/lib/puppet/type/host.rb +1 -2
  277. data/lib/puppet/type/mcx.rb +0 -1
  278. data/lib/puppet/type/mount.rb +38 -6
  279. data/lib/puppet/type/package.rb +2 -2
  280. data/lib/puppet/type/resources.rb +5 -4
  281. data/lib/puppet/type/schedule.rb +1 -4
  282. data/lib/puppet/type/selmodule.rb +1 -1
  283. data/lib/puppet/type/service.rb +1 -3
  284. data/lib/puppet/type/tidy.rb +3 -3
  285. data/lib/puppet/type/user.rb +9 -13
  286. data/lib/puppet/type/yumrepo.rb +11 -7
  287. data/lib/puppet/util.rb +14 -7
  288. data/lib/puppet/util/autoload.rb +0 -1
  289. data/lib/puppet/util/backups.rb +1 -3
  290. data/lib/puppet/util/classgen.rb +1 -1
  291. data/lib/puppet/util/command_line/puppet_option_parser.rb +1 -3
  292. data/lib/puppet/util/command_line/trollop.rb +1 -1
  293. data/lib/puppet/util/constant_inflector.rb +1 -2
  294. data/lib/puppet/util/errors.rb +1 -0
  295. data/lib/puppet/util/file_watcher.rb +28 -0
  296. data/lib/puppet/util/fileparsing.rb +1 -3
  297. data/lib/puppet/util/filetype.rb +0 -1
  298. data/lib/puppet/util/http_proxy.rb +38 -0
  299. data/lib/puppet/util/ldap/manager.rb +1 -2
  300. data/lib/puppet/util/log.rb +31 -10
  301. data/lib/puppet/util/log/destinations.rb +0 -50
  302. data/lib/puppet/util/metric.rb +8 -1
  303. data/lib/puppet/util/monkey_patches.rb +14 -148
  304. data/lib/puppet/util/network_device/cisco/facts.rb +1 -1
  305. data/lib/puppet/util/network_device/config.rb +6 -9
  306. data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
  307. data/lib/puppet/util/pidlock.rb +3 -0
  308. data/lib/puppet/util/posix.rb +1 -1
  309. data/lib/puppet/util/profiler.rb +1 -1
  310. data/lib/puppet/util/rdoc.rb +1 -1
  311. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +0 -1
  312. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +50 -42
  313. data/lib/puppet/util/retryaction.rb +0 -1
  314. data/lib/puppet/util/symbolic_file_mode.rb +5 -1
  315. data/lib/puppet/util/tagging.rb +0 -2
  316. data/lib/puppet/util/warnings.rb +3 -0
  317. data/lib/puppet/util/watched_file.rb +37 -0
  318. data/lib/puppet/util/watcher.rb +17 -0
  319. data/lib/puppet/util/watcher/change_watcher.rb +33 -0
  320. data/lib/puppet/util/watcher/periodic_watcher.rb +37 -0
  321. data/lib/puppet/util/watcher/timer.rb +19 -0
  322. data/lib/puppet/util/windows/user.rb +1 -1
  323. data/lib/puppet/version.rb +1 -1
  324. data/lib/puppetx.rb +109 -0
  325. data/lib/puppetx/puppet/bindings_scheme_handler.rb +130 -0
  326. data/lib/puppetx/puppet/hiera2_backend.rb +31 -0
  327. data/lib/puppetx/puppet/syntax_checker.rb +91 -0
  328. data/lib/puppetx/puppetlabs/syntax_checkers/json.rb +39 -0
  329. data/lib/semver.rb +1 -1
  330. data/man/man8/puppet-kick.8 +1 -1
  331. data/spec/fixtures/integration/provider/cron/crontab/unspecialized +15 -0
  332. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/binder_config.yaml +18 -0
  333. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/hiera.yaml +8 -0
  334. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/common.yaml +1 -0
  335. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/hiera.yaml +10 -0
  336. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +19 -0
  337. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/common.yaml +1 -0
  338. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/hiera.yaml +11 -0
  339. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/localhost.yaml +1 -0
  340. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/common.yaml +3 -0
  341. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/hiera.yaml +13 -0
  342. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppet/bindings/awesome/default.rb +4 -0
  343. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_backend.rb +11 -0
  344. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_scheme_handler.rb +18 -0
  345. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/localhost.yaml +1 -0
  346. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/common.yaml +3 -0
  347. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/hiera_config.yaml +9 -0
  348. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/common.yaml +2 -0
  349. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/hiera.yaml +11 -0
  350. data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +9 -0
  351. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/hiera.yaml +9 -0
  352. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.json +9 -0
  353. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.yaml +5 -0
  354. data/spec/fixtures/unit/pops/binder/hiera2/config/bad_syntax/hiera.yaml +10 -0
  355. data/spec/fixtures/unit/pops/binder/hiera2/config/malformed_hierarchy/hiera.yaml +8 -0
  356. data/spec/fixtures/unit/pops/binder/hiera2/config/missing/foo.txt +1 -0
  357. data/spec/fixtures/unit/pops/binder/hiera2/config/no_backends/hiera.yaml +7 -0
  358. data/spec/fixtures/unit/pops/binder/hiera2/config/no_hierarchy/hiera.yaml +4 -0
  359. data/spec/fixtures/unit/pops/binder/hiera2/config/not_a_hash/hiera.yaml +2 -0
  360. data/spec/fixtures/unit/pops/binder/hiera2/config/ok/hiera.yaml +8 -0
  361. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/empty/common.yaml +0 -0
  362. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/invalid/common.yaml +1 -0
  363. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/ok/common.yaml +2 -0
  364. data/spec/fixtures/unit/provider/package/openbsd/pkginfo_flavors.list +2 -0
  365. data/spec/integration/agent/logging_spec.rb +178 -0
  366. data/spec/integration/configurer_spec.rb +1 -1
  367. data/spec/integration/defaults_spec.rb +0 -6
  368. data/spec/integration/network/authconfig_spec.rb +19 -0
  369. data/spec/integration/network/server/webrick_spec.rb +10 -11
  370. data/spec/integration/parser/catalog_spec.rb +85 -0
  371. data/spec/integration/provider/cron/crontab_spec.rb +11 -0
  372. data/spec/integration/provider/mount_spec.rb +1 -0
  373. data/spec/integration/transaction_spec.rb +8 -8
  374. data/spec/integration/type/file_spec.rb +1 -1
  375. data/spec/integration/util/settings_spec.rb +58 -11
  376. data/spec/lib/matchers/include_in_order.rb +21 -0
  377. data/spec/lib/matchers/include_in_order_spec.rb +30 -0
  378. data/spec/lib/matchers/relationship_graph_matchers.rb +48 -0
  379. data/spec/lib/puppet_spec/compiler.rb +24 -0
  380. data/spec/lib/puppet_spec/pops.rb +16 -0
  381. data/spec/spec_helper.rb +0 -1
  382. data/spec/unit/application/agent_spec.rb +145 -145
  383. data/spec/unit/application/apply_spec.rb +1 -1
  384. data/spec/unit/application/doc_spec.rb +1 -1
  385. data/spec/unit/application/face_base_spec.rb +3 -3
  386. data/spec/unit/application/facts_spec.rb +1 -0
  387. data/spec/unit/application/master_spec.rb +0 -15
  388. data/spec/unit/application/queue_spec.rb +6 -12
  389. data/spec/unit/application/resource_spec.rb +1 -1
  390. data/spec/unit/configurer/fact_handler_spec.rb +19 -50
  391. data/spec/unit/configurer_spec.rb +23 -7
  392. data/spec/unit/daemon_spec.rb +97 -121
  393. data/spec/unit/defaults_spec.rb +44 -0
  394. data/spec/unit/face/node_spec.rb +2 -2
  395. data/spec/unit/file_serving/configuration/parser_spec.rb +23 -33
  396. data/spec/unit/file_serving/configuration_spec.rb +2 -2
  397. data/spec/unit/file_serving/mount/file_spec.rb +4 -4
  398. data/spec/unit/forge/repository_spec.rb +9 -29
  399. data/spec/unit/graph/key_spec.rb +41 -0
  400. data/spec/unit/{rb_tree_map_spec.rb → graph/rb_tree_map_spec.rb} +7 -7
  401. data/spec/unit/graph/relationship_graph_spec.rb +393 -0
  402. data/spec/unit/graph/sequential_prioritizer_spec.rb +32 -0
  403. data/spec/unit/{simple_graph_spec.rb → graph/simple_graph.rb} +42 -254
  404. data/spec/unit/graph/title_hash_prioritizer_spec.rb +49 -0
  405. data/spec/unit/hiera_puppet_spec.rb +1 -1
  406. data/spec/unit/indirector/catalog/active_record_spec.rb +4 -2
  407. data/spec/unit/indirector/catalog/compiler_spec.rb +20 -26
  408. data/spec/unit/indirector/face_spec.rb +1 -1
  409. data/spec/unit/indirector/facts/facter_spec.rb +11 -1
  410. data/spec/unit/indirector/facts/network_device_spec.rb +11 -1
  411. data/spec/unit/indirector/hiera_spec.rb +1 -1
  412. data/spec/unit/indirector/instrumentation_data/local_spec.rb +1 -1
  413. data/spec/unit/indirector/instrumentation_listener/local_spec.rb +1 -1
  414. data/spec/unit/indirector/request_spec.rb +92 -39
  415. data/spec/unit/indirector/rest_spec.rb +1 -0
  416. data/spec/unit/indirector_spec.rb +2 -2
  417. data/spec/unit/interface/option_builder_spec.rb +1 -0
  418. data/spec/unit/interface/option_spec.rb +1 -0
  419. data/spec/unit/interface_spec.rb +2 -2
  420. data/spec/unit/module_tool/applications/installer_spec.rb +49 -2
  421. data/spec/unit/module_tool/metadata_spec.rb +13 -0
  422. data/spec/unit/network/authstore_spec.rb +1 -1
  423. data/spec/unit/network/format_handler_spec.rb +33 -282
  424. data/spec/unit/network/format_support_spec.rb +199 -0
  425. data/spec/unit/network/formats_spec.rb +2 -2
  426. data/spec/unit/network/http/connection_spec.rb +88 -7
  427. data/spec/unit/network/http/handler_spec.rb +271 -249
  428. data/spec/unit/network/http/rack/rest_spec.rb +1 -1
  429. data/spec/unit/network/http/webrick/rest_spec.rb +73 -22
  430. data/spec/unit/network/http_pool_spec.rb +40 -0
  431. data/spec/unit/network/server_spec.rb +18 -207
  432. data/spec/unit/node/facts_spec.rb +68 -17
  433. data/spec/unit/other/selinux_spec.rb +24 -20
  434. data/spec/unit/parameter/boolean_spec.rb +25 -0
  435. data/spec/unit/parameter/value_collection_spec.rb +7 -7
  436. data/spec/unit/parameter_spec.rb +10 -13
  437. data/spec/unit/parser/ast/function_spec.rb +4 -4
  438. data/spec/unit/parser/ast/leaf_spec.rb +45 -6
  439. data/spec/unit/parser/collector_spec.rb +3 -3
  440. data/spec/unit/parser/compiler_spec.rb +4 -3
  441. data/spec/unit/parser/functions/create_resources_spec.rb +9 -25
  442. data/spec/unit/parser/functions/extlookup_spec.rb +2 -2
  443. data/spec/unit/parser/functions/hiera_include_spec.rb +12 -0
  444. data/spec/unit/parser/functions/lookup_spec.rb +96 -0
  445. data/spec/unit/parser/functions/regsubst_spec.rb +2 -2
  446. data/spec/unit/parser/functions/split_spec.rb +2 -2
  447. data/spec/unit/parser/functions/sprintf_spec.rb +1 -1
  448. data/spec/unit/parser/functions/versioncmp_spec.rb +2 -2
  449. data/spec/unit/parser/functions_spec.rb +7 -7
  450. data/spec/unit/parser/lexer_spec.rb +1 -1
  451. data/spec/unit/parser/methods/collect_spec.rb +43 -0
  452. data/spec/unit/parser/resource_spec.rb +9 -9
  453. data/spec/unit/parser/scope_spec.rb +45 -2
  454. data/spec/unit/parser/type_loader_spec.rb +159 -175
  455. data/spec/unit/pops/binder/binder_spec.rb +62 -0
  456. data/spec/unit/pops/binder/bindings_checker_spec.rb +196 -0
  457. data/spec/unit/pops/binder/bindings_composer_spec.rb +89 -0
  458. data/spec/unit/pops/binder/bindings_validator_factory_spec.rb +18 -0
  459. data/spec/unit/pops/binder/config/binder_config_spec.rb +48 -0
  460. data/spec/unit/pops/binder/hiera2/bindings_provider_spec.rb +74 -0
  461. data/spec/unit/pops/binder/hiera2/config_spec.rb +61 -0
  462. data/spec/unit/pops/binder/hiera2/yaml_backend_spec.rb +33 -0
  463. data/spec/unit/pops/binder/injector_spec.rb +789 -0
  464. data/spec/unit/pops/containment_spec.rb +1 -0
  465. data/spec/unit/pops/issues_spec.rb +1 -1
  466. data/spec/unit/pops/parser/evaluating_parser_spec.rb +88 -0
  467. data/spec/unit/pops/parser/lexer_spec.rb +1 -1
  468. data/spec/unit/pops/parser/parse_calls_spec.rb +4 -0
  469. data/spec/unit/pops/parser/parser_spec.rb +1 -1
  470. data/spec/unit/pops/types/type_calculator_spec.rb +484 -0
  471. data/spec/unit/pops/types/type_factory_spec.rb +65 -0
  472. data/spec/unit/pops/types/type_parser_spec.rb +93 -0
  473. data/spec/unit/property/list_spec.rb +1 -1
  474. data/spec/unit/property/ordered_list_spec.rb +1 -1
  475. data/spec/unit/provider/aixobject_spec.rb +101 -0
  476. data/spec/unit/provider/augeas/augeas_spec.rb +14 -3
  477. data/spec/unit/provider/mcx/mcxcontent_spec.rb +52 -16
  478. data/spec/unit/provider/mount/parsed_spec.rb +44 -56
  479. data/spec/unit/provider/mount_spec.rb +11 -2
  480. data/spec/unit/provider/naginator_spec.rb +8 -0
  481. data/spec/unit/provider/package/apt_spec.rb +5 -1
  482. data/spec/unit/provider/package/aptitude_spec.rb +9 -5
  483. data/spec/unit/provider/package/aptrpm_spec.rb +2 -2
  484. data/spec/unit/provider/package/dpkg_spec.rb +274 -99
  485. data/spec/unit/provider/package/openbsd_spec.rb +84 -1
  486. data/spec/unit/provider/package/opkg_spec.rb +3 -3
  487. data/spec/unit/provider/package/pip_spec.rb +16 -0
  488. data/spec/unit/provider/package/pkgdmg_spec.rb +62 -7
  489. data/spec/unit/provider/package/rpm_spec.rb +112 -21
  490. data/spec/unit/provider/package/urpmi.rb +80 -0
  491. data/spec/unit/provider/package/windows/exe_package_spec.rb +1 -1
  492. data/spec/unit/provider/package/yum_spec.rb +85 -0
  493. data/spec/unit/provider/package/zypper_spec.rb +25 -6
  494. data/spec/unit/provider/parsedfile_spec.rb +3 -2
  495. data/spec/unit/provider/service/init_spec.rb +10 -10
  496. data/spec/unit/provider/service/openrc_spec.rb +16 -0
  497. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  498. data/spec/unit/provider/service/redhat_spec.rb +7 -0
  499. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +2 -2
  500. data/spec/unit/provider/user/aix_spec.rb +89 -0
  501. data/spec/unit/provider/user/directoryservice_spec.rb +11 -4
  502. data/spec/unit/provider/user/user_role_add_spec.rb +18 -0
  503. data/spec/unit/provider_spec.rb +2 -13
  504. data/spec/unit/reports/http_spec.rb +1 -1
  505. data/spec/unit/resource/catalog_spec.rb +23 -97
  506. data/spec/unit/resource/resource_type.json +34 -0
  507. data/spec/unit/resource/status_spec.rb +56 -0
  508. data/spec/unit/resource/type_collection_spec.rb +6 -6
  509. data/spec/unit/resource/type_spec.rb +25 -5
  510. data/spec/unit/resource_spec.rb +68 -24
  511. data/spec/unit/run_spec.rb +16 -0
  512. data/spec/unit/scheduler/scheduler_spec.rb +14 -27
  513. data/spec/unit/semver_spec.rb +5 -0
  514. data/spec/unit/settings/enum_setting_spec.rb +27 -0
  515. data/spec/unit/settings_spec.rb +53 -44
  516. data/spec/unit/ssl/certificate_authority_spec.rb +155 -19
  517. data/spec/unit/transaction/additional_resource_generator_spec.rb +419 -0
  518. data/spec/unit/transaction/event_manager_spec.rb +2 -2
  519. data/spec/unit/transaction/event_spec.rb +57 -0
  520. data/spec/unit/transaction/report_spec.rb +66 -0
  521. data/spec/unit/transaction/resource_harness_spec.rb +27 -20
  522. data/spec/unit/transaction_spec.rb +182 -390
  523. data/spec/unit/type/augeas_spec.rb +3 -3
  524. data/spec/unit/type/component_spec.rb +0 -9
  525. data/spec/unit/type/computer_spec.rb +1 -1
  526. data/spec/unit/type/cron_spec.rb +2 -2
  527. data/spec/unit/type/exec_spec.rb +4 -2
  528. data/spec/unit/type/file/content_spec.rb +11 -0
  529. data/spec/unit/type/file/group_spec.rb +1 -1
  530. data/spec/unit/type/file_spec.rb +16 -8
  531. data/spec/unit/type/mount_spec.rb +445 -259
  532. data/spec/unit/type/package_spec.rb +4 -4
  533. data/spec/unit/type/resources_spec.rb +30 -1
  534. data/spec/unit/type/user_spec.rb +26 -3
  535. data/spec/unit/type/yumrepo_spec.rb +7 -27
  536. data/spec/unit/type/zone_spec.rb +4 -1
  537. data/spec/unit/type_spec.rb +66 -33
  538. data/spec/unit/util/backups_spec.rb +3 -3
  539. data/spec/unit/util/http_proxy_spec.rb +83 -0
  540. data/spec/unit/util/log_spec.rb +79 -8
  541. data/spec/unit/util/metric_spec.rb +12 -0
  542. data/spec/unit/util/monkey_patches_spec.rb +6 -0
  543. data/spec/unit/util/network_device/config_spec.rb +26 -64
  544. data/spec/unit/util/pidlock_spec.rb +4 -1
  545. data/spec/unit/util/tagging_spec.rb +5 -9
  546. data/spec/unit/util/warnings_spec.rb +1 -1
  547. data/spec/unit/util/watched_file_spec.rb +52 -0
  548. data/spec/unit/util/watcher/periodic_watcher_spec.rb +52 -0
  549. data/spec/unit/util/watcher_spec.rb +56 -0
  550. data/spec/unit/util_spec.rb +16 -0
  551. metadata +2767 -2576
  552. data/ext/debian/puppet.manpages +0 -32
  553. data/ext/osx/PackageInfo.plist +0 -36
  554. data/ext/osx/createpackage.sh +0 -187
  555. data/ext/redhat/rundir-perms.patch +0 -28
  556. data/lib/puppet/external/base64.rb +0 -19
  557. data/lib/puppet/util/graph.rb +0 -27
  558. data/lib/puppet/util/loadedfile.rb +0 -61
  559. data/lib/puppet/util/log_paths.rb +0 -22
  560. data/lib/puppet/util/subclass_loader.rb +0 -78
  561. data/spec/monkey_patches/publicize_methods.rb +0 -11
  562. data/spec/unit/util/loadedfile_spec.rb +0 -71
@@ -35,7 +35,7 @@ describe Puppet::Util::Backups do
35
35
  end
36
36
 
37
37
  it "a bucket should be used when provided" do
38
- File.stubs(:stat).with(path).returns(mock('stat', :ftype => 'file'))
38
+ File.stubs(:lstat).with(path).returns(mock('lstat', :ftype => 'file'))
39
39
  bucket.expects(:backup).with(path).returns("mysum")
40
40
  FileTest.expects(:exists?).with(path).returns(true)
41
41
 
@@ -43,7 +43,7 @@ describe Puppet::Util::Backups do
43
43
  end
44
44
 
45
45
  it "should propagate any exceptions encountered when backing up to a filebucket" do
46
- File.stubs(:stat).with(path).returns(mock('stat', :ftype => 'file'))
46
+ File.stubs(:lstat).with(path).returns(mock('lstat', :ftype => 'file'))
47
47
  bucket.expects(:backup).raises ArgumentError
48
48
  FileTest.expects(:exists?).with(path).returns(true)
49
49
 
@@ -108,7 +108,7 @@ describe Puppet::Util::Backups do
108
108
 
109
109
  bucket.expects(:backup).with(filename).returns true
110
110
 
111
- File.stubs(:stat).with(path).returns(stub('stat', :ftype => 'directory'))
111
+ File.stubs(:lstat).with(path).returns(stub('lstat', :ftype => 'directory'))
112
112
 
113
113
  FileTest.stubs(:exists?).with(path).returns(true)
114
114
  FileTest.stubs(:exists?).with(filename).returns(true)
@@ -0,0 +1,83 @@
1
+ require 'uri'
2
+ require 'spec_helper'
3
+ require 'puppet/util/http_proxy'
4
+
5
+ describe Puppet::Util::HttpProxy do
6
+
7
+ host, port = 'some.host', 1234
8
+
9
+ describe ".http_proxy_env" do
10
+ it "should return nil if no environment variables" do
11
+ subject.http_proxy_env.should == nil
12
+ end
13
+
14
+ it "should return a URI::HTTP object if http_proxy env variable is set" do
15
+ Puppet::Util.withenv('HTTP_PROXY' => host) do
16
+ subject.http_proxy_env.should == URI.parse(host)
17
+ end
18
+ end
19
+
20
+ it "should return a URI::HTTP object if HTTP_PROXY env variable is set" do
21
+ Puppet::Util.withenv('HTTP_PROXY' => host) do
22
+ subject.http_proxy_env.should == URI.parse(host)
23
+ end
24
+ end
25
+
26
+ it "should return a URI::HTTP object with .host and .port if URI is given" do
27
+ Puppet::Util.withenv('HTTP_PROXY' => "http://#{host}:#{port}") do
28
+ subject.http_proxy_env.should == URI.parse("http://#{host}:#{port}")
29
+ end
30
+ end
31
+
32
+ it "should return nil if proxy variable is malformed" do
33
+ Puppet::Util.withenv('HTTP_PROXY' => 'this is not a valid URI') do
34
+ subject.http_proxy_env.should == nil
35
+ end
36
+ end
37
+ end
38
+
39
+ describe ".http_proxy_host" do
40
+ it "should return nil if no proxy host in config or env" do
41
+ subject.http_proxy_host.should == nil
42
+ end
43
+
44
+ it "should return a proxy host if set in config" do
45
+ Puppet.settings[:http_proxy_host] = host
46
+ subject.http_proxy_host.should == host
47
+ end
48
+
49
+ it "should return nil if set to `none` in config" do
50
+ Puppet.settings[:http_proxy_host] = 'none'
51
+ subject.http_proxy_host.should == nil
52
+ end
53
+
54
+ it "uses environment variable before puppet settings" do
55
+ Puppet::Util.withenv('HTTP_PROXY' => "http://#{host}:#{port}") do
56
+ Puppet.settings[:http_proxy_host] = 'not.correct'
57
+ subject.http_proxy_host.should == host
58
+ end
59
+ end
60
+ end
61
+
62
+ describe ".http_proxy_port" do
63
+ it "should return a proxy port if set in environment" do
64
+ Puppet::Util.withenv('HTTP_PROXY' => "http://#{host}:#{port}") do
65
+ subject.http_proxy_port.should == port
66
+ end
67
+ end
68
+
69
+ it "should return a proxy port if set in config" do
70
+ Puppet.settings[:http_proxy_port] = port
71
+ subject.http_proxy_port.should == port
72
+ end
73
+
74
+ it "uses environment variable before puppet settings" do
75
+ Puppet::Util.withenv('HTTP_PROXY' => "http://#{host}:#{port}") do
76
+ Puppet.settings[:http_proxy_port] = 7456
77
+ subject.http_proxy_port.should == port
78
+ end
79
+ end
80
+
81
+ end
82
+
83
+ end
@@ -6,6 +6,10 @@ require 'puppet/util/log'
6
6
  describe Puppet::Util::Log do
7
7
  include PuppetSpec::Files
8
8
 
9
+ def log_notice(message)
10
+ Puppet::Util::Log.new(:level => :notice, :message => message)
11
+ end
12
+
9
13
  it "should write a given message to the specified destination" do
10
14
  arraydest = []
11
15
  Puppet::Util::Log.newdestination(Puppet::Test::LogCollector.new(arraydest))
@@ -39,6 +43,57 @@ describe Puppet::Util::Log do
39
43
  end
40
44
  end
41
45
 
46
+ describe "#with_destination" do
47
+ it "does nothing when nested" do
48
+ logs = []
49
+ destination = Puppet::Test::LogCollector.new(logs)
50
+ Puppet::Util::Log.with_destination(destination) do
51
+ Puppet::Util::Log.with_destination(destination) do
52
+ log_notice("Inner block")
53
+ end
54
+
55
+ log_notice("Outer block")
56
+ end
57
+
58
+ log_notice("Outside")
59
+
60
+ expect(logs.collect(&:message)).to include("Inner block", "Outer block")
61
+ expect(logs.collect(&:message)).not_to include("Outside")
62
+ end
63
+
64
+ it "logs when called a second time" do
65
+ logs = []
66
+ destination = Puppet::Test::LogCollector.new(logs)
67
+
68
+ Puppet::Util::Log.with_destination(destination) do
69
+ log_notice("First block")
70
+ end
71
+
72
+ log_notice("Between blocks")
73
+
74
+ Puppet::Util::Log.with_destination(destination) do
75
+ log_notice("Second block")
76
+ end
77
+
78
+ expect(logs.collect(&:message)).to include("First block", "Second block")
79
+ expect(logs.collect(&:message)).not_to include("Between blocks")
80
+ end
81
+
82
+ it "doesn't close the destination if already set manually" do
83
+ logs = []
84
+ destination = Puppet::Test::LogCollector.new(logs)
85
+
86
+ Puppet::Util::Log.newdestination(destination)
87
+ Puppet::Util::Log.with_destination(destination) do
88
+ log_notice "Inner block"
89
+ end
90
+
91
+ log_notice "Outer block"
92
+ Puppet::Util::Log.close(destination)
93
+
94
+ expect(logs.collect(&:message)).to include("Inner block", "Outer block")
95
+ end
96
+ end
42
97
  describe Puppet::Util::Log::DestConsole do
43
98
  before do
44
99
  @console = Puppet::Util::Log::DestConsole.new
@@ -186,7 +241,7 @@ describe Puppet::Util::Log do
186
241
  log.tags.should be_include("bar")
187
242
  end
188
243
 
189
- it "should use an passed-in source" do
244
+ it "should use a passed-in source" do
190
245
  Puppet::Util::Log.any_instance.expects(:source=).with "foo"
191
246
  Puppet::Util::Log.new(:level => "notice", :message => :foo, :source => "foo")
192
247
  end
@@ -247,34 +302,37 @@ describe Puppet::Util::Log do
247
302
  end
248
303
 
249
304
  describe "when setting the source as a RAL object" do
305
+ let(:path) { File.expand_path('/foo/bar') }
306
+
250
307
  it "should tag itself with any tags the source has" do
251
- source = Puppet::Type.type(:file).new :path => make_absolute("/foo/bar")
308
+ source = Puppet::Type.type(:file).new :path => path
252
309
  log = Puppet::Util::Log.new(:level => "notice", :message => :foo, :source => source)
253
310
  source.tags.each do |tag|
254
311
  log.tags.should be_include(tag)
255
312
  end
256
313
  end
257
314
 
258
- it "should use the source_descriptors" do
259
- source = stub "source"
260
- source.stubs(:source_descriptors).returns(:tags => ["tag","tag2"], :path => "path", :version => 100)
315
+ it "should set the source to 'path', when available" do
316
+ source = Puppet::Type.type(:file).new :path => path
317
+ source.tags = ["tag", "tag2"]
261
318
 
262
319
  log = Puppet::Util::Log.new(:level => "notice", :message => :foo)
320
+ log.expects(:tag).with("file")
263
321
  log.expects(:tag).with("tag")
264
322
  log.expects(:tag).with("tag2")
265
323
 
266
324
  log.source = source
267
325
 
268
- log.source.should == "path"
326
+ log.source.should == "/File[#{path}]"
269
327
  end
270
328
 
271
329
  it "should copy over any file and line information" do
272
- source = Puppet::Type.type(:file).new :path => make_absolute("/foo/bar")
330
+ source = Puppet::Type.type(:file).new :path => path
273
331
  source.file = "/my/file"
274
332
  source.line = 50
275
333
  log = Puppet::Util::Log.new(:level => "notice", :message => :foo, :source => source)
276
- log.file.should == "/my/file"
277
334
  log.line.should == 50
335
+ log.file.should == "/my/file"
278
336
  end
279
337
  end
280
338
 
@@ -304,4 +362,17 @@ describe Puppet::Util::Log do
304
362
  log.to_yaml_properties.should include(:@line)
305
363
  end
306
364
  end
365
+
366
+ it "should round trip through pson" do
367
+ log = Puppet::Util::Log.new(:level => 'notice', :message => 'hooray', :file => 'thefile', :line => 1729, :source => 'specs', :tags => ['a', 'b', 'c'])
368
+ tripped = Puppet::Util::Log.from_pson(PSON.parse(log.to_pson))
369
+
370
+ tripped.file.should == log.file
371
+ tripped.line.should == log.line
372
+ tripped.level.should == log.level
373
+ tripped.message.should == log.message
374
+ tripped.source.should == log.source
375
+ tripped.tags.should == log.tags
376
+ tripped.time.should == log.time
377
+ end
307
378
  end
@@ -83,4 +83,16 @@ describe Puppet::Util::Metric do
83
83
  it "should return nil if the named value cannot be found" do
84
84
  @metric["foo"].should == 0
85
85
  end
86
+
87
+ it "should round trip through pson" do
88
+ metric = Puppet::Util::Metric.new("foo", "mylabel")
89
+ metric.newvalue("v1", 10.1, "something")
90
+ metric.newvalue("v2", 20, "something else")
91
+
92
+ tripped = Puppet::Util::Metric.from_pson(PSON.parse(metric.to_pson))
93
+
94
+ tripped.name.should == metric.name
95
+ tripped.label.should == metric.label
96
+ tripped.values.should == metric.values
97
+ end
86
98
  end
@@ -292,3 +292,9 @@ describe OpenSSL::SSL::SSLContext do
292
292
  ciphers.should be_empty
293
293
  end
294
294
  end
295
+
296
+ describe SecureRandom do
297
+ it 'generates a properly formatted uuid' do
298
+ SecureRandom.uuid.should =~ /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i
299
+ end
300
+ end
@@ -7,117 +7,79 @@ describe Puppet::Util::NetworkDevice::Config do
7
7
  include PuppetSpec::Files
8
8
 
9
9
  before(:each) do
10
- Puppet[:deviceconfig] = make_absolute("/dummy")
11
- FileTest.stubs(:exists?).with(make_absolute("/dummy")).returns(true)
12
- end
13
-
14
- describe "when initializing" do
15
- before :each do
16
- Puppet::Util::NetworkDevice::Config.any_instance.stubs(:read)
17
- end
18
-
19
- it "should use the deviceconfig setting as pathname" do
20
- Puppet.expects(:[]).with(:deviceconfig).returns(make_absolute("/dummy"))
21
-
22
- Puppet::Util::NetworkDevice::Config.new
23
- end
24
-
25
- it "should raise an error if no file is defined finally" do
26
- Puppet.expects(:[]).with(:deviceconfig).returns(nil)
27
-
28
- lambda { Puppet::Util::NetworkDevice::Config.new }.should raise_error(Puppet::DevError)
29
- end
30
-
31
- it "should read and parse the file" do
32
- Puppet::Util::NetworkDevice::Config.any_instance.expects(:read)
33
-
34
- Puppet::Util::NetworkDevice::Config.new
35
- end
10
+ Puppet[:deviceconfig] = tmpfile('deviceconfig')
36
11
  end
37
12
 
38
13
  describe "when parsing device" do
39
- before :each do
40
- @config = Puppet::Util::NetworkDevice::Config.new
41
- @config.stubs(:changed?).returns(true)
42
- @fd = stub 'fd'
43
- File.stubs(:open).yields(@fd)
14
+ let(:config) { Puppet::Util::NetworkDevice::Config.new }
15
+
16
+ def write_device_config(*lines)
17
+ File.open(Puppet[:deviceconfig], 'w') {|f| f.puts lines}
44
18
  end
45
19
 
46
20
  it "should skip comments" do
47
- @fd.stubs(:each).yields(' # comment')
48
-
49
- OpenStruct.expects(:new).never
21
+ write_device_config(' # comment')
50
22
 
51
- @config.read
23
+ config.devices.should be_empty
52
24
  end
53
25
 
54
26
  it "should increment line number even on commented lines" do
55
- @fd.stubs(:each).multiple_yields(' # comment','[router.puppetlabs.com]')
27
+ write_device_config(' # comment','[router.puppetlabs.com]')
56
28
 
57
- @config.read
58
- @config.devices.should be_include('router.puppetlabs.com')
29
+ config.devices.should be_include('router.puppetlabs.com')
59
30
  end
60
31
 
61
32
  it "should skip blank lines" do
62
- @fd.stubs(:each).yields(' ')
33
+ write_device_config(' ')
63
34
 
64
- @config.read
65
- @config.devices.should be_empty
35
+ config.devices.should be_empty
66
36
  end
67
37
 
68
38
  it "should produce the correct line number" do
69
- @fd.stubs(:each).multiple_yields(' ', '[router.puppetlabs.com]')
39
+ write_device_config(' ', '[router.puppetlabs.com]')
70
40
 
71
- @config.read
72
- @config.devices['router.puppetlabs.com'].line.should == 2
41
+ config.devices['router.puppetlabs.com'].line.should == 2
73
42
  end
74
43
 
75
44
  it "should throw an error if the current device already exists" do
76
- @fd.stubs(:each).multiple_yields('[router.puppetlabs.com]', '[router.puppetlabs.com]')
45
+ write_device_config('[router.puppetlabs.com]', '[router.puppetlabs.com]')
77
46
 
78
- lambda { @config.read }.should raise_error
79
47
  end
80
48
 
81
49
  it "should accept device certname containing dashes" do
82
- @fd.stubs(:each).yields('[router-1.puppetlabs.com]')
50
+ write_device_config('[router-1.puppetlabs.com]')
83
51
 
84
- @config.read
85
- @config.devices.should include('router-1.puppetlabs.com')
52
+ config.devices.should include('router-1.puppetlabs.com')
86
53
  end
87
54
 
88
55
  it "should create a new device for each found device line" do
89
- @fd.stubs(:each).multiple_yields('[router.puppetlabs.com]', '[swith.puppetlabs.com]')
56
+ write_device_config('[router.puppetlabs.com]', '[swith.puppetlabs.com]')
90
57
 
91
- @config.read
92
- @config.devices.size.should == 2
58
+ config.devices.size.should == 2
93
59
  end
94
60
 
95
61
  it "should parse the device type" do
96
- @fd.stubs(:each).multiple_yields('[router.puppetlabs.com]', 'type cisco')
62
+ write_device_config('[router.puppetlabs.com]', 'type cisco')
97
63
 
98
- @config.read
99
- @config.devices['router.puppetlabs.com'].provider.should == 'cisco'
64
+ config.devices['router.puppetlabs.com'].provider.should == 'cisco'
100
65
  end
101
66
 
102
67
  it "should parse the device url" do
103
- @fd.stubs(:each).multiple_yields('[router.puppetlabs.com]', 'type cisco', 'url ssh://test/')
68
+ write_device_config('[router.puppetlabs.com]', 'type cisco', 'url ssh://test/')
104
69
 
105
- @config.read
106
- @config.devices['router.puppetlabs.com'].url.should == 'ssh://test/'
70
+ config.devices['router.puppetlabs.com'].url.should == 'ssh://test/'
107
71
  end
108
72
 
109
73
  it "should parse the debug mode" do
110
- @fd.stubs(:each).multiple_yields('[router.puppetlabs.com]', 'type cisco', 'url ssh://test/', 'debug')
74
+ write_device_config('[router.puppetlabs.com]', 'type cisco', 'url ssh://test/', 'debug')
111
75
 
112
- @config.read
113
- @config.devices['router.puppetlabs.com'].options.should == { :debug => true }
76
+ config.devices['router.puppetlabs.com'].options.should == { :debug => true }
114
77
  end
115
78
 
116
79
  it "should set the debug mode to false by default" do
117
- @fd.stubs(:each).multiple_yields('[router.puppetlabs.com]', 'type cisco', 'url ssh://test/')
80
+ write_device_config('[router.puppetlabs.com]', 'type cisco', 'url ssh://test/')
118
81
 
119
- @config.read
120
- @config.devices['router.puppetlabs.com'].options.should == { :debug => false }
82
+ config.devices['router.puppetlabs.com'].options.should == { :debug => false }
121
83
  end
122
84
  end
123
85
 
@@ -45,11 +45,14 @@ describe Puppet::Util::Pidlock do
45
45
  @lock.lock.should be_true
46
46
  end
47
47
 
48
-
49
48
  it "should create a lock file" do
50
49
  @lock.lock
51
50
  File.should be_exists(@lockfile)
52
51
  end
52
+
53
+ it "should expose the lock file_path" do
54
+ @lock.file_path.should == @lockfile
55
+ end
53
56
  end
54
57
 
55
58
  describe "#unlock" do
@@ -42,27 +42,23 @@ describe Puppet::Util::Tagging, "when adding tags" do
42
42
  end
43
43
 
44
44
  it "should fail on tags containing '*' characters" do
45
- lambda { @tagger.tag("bad*tag") }.should raise_error(Puppet::ParseError)
45
+ expect { @tagger.tag("bad*tag") }.to raise_error(Puppet::ParseError)
46
46
  end
47
47
 
48
48
  it "should fail on tags starting with '-' characters" do
49
- lambda { @tagger.tag("-badtag") }.should raise_error(Puppet::ParseError)
49
+ expect { @tagger.tag("-badtag") }.to raise_error(Puppet::ParseError)
50
50
  end
51
51
 
52
52
  it "should fail on tags containing ' ' characters" do
53
- lambda { @tagger.tag("bad tag") }.should raise_error(Puppet::ParseError)
53
+ expect { @tagger.tag("bad tag") }.to raise_error(Puppet::ParseError)
54
54
  end
55
55
 
56
56
  it "should allow alpha tags" do
57
- lambda { @tagger.tag("good_tag") }.should_not raise_error(Puppet::ParseError)
57
+ expect { @tagger.tag("good_tag") }.to_not raise_error
58
58
  end
59
59
 
60
60
  it "should allow tags containing '.' characters" do
61
- lambda { @tagger.tag("good.tag") }.should_not raise_error(Puppet::ParseError)
62
- end
63
-
64
- it "should provide a method for testing tag validity" do
65
- @tagger.singleton_class.publicize_methods(:valid_tag?) { @tagger.should be_respond_to(:valid_tag?) }
61
+ expect { @tagger.tag("good.tag") }.to_not raise_error
66
62
  end
67
63
 
68
64
  it "should add qualified classes as tags" do