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
@@ -228,7 +228,7 @@ describe Puppet::Type.type(:user).provider(:directoryservice) do
228
228
  {
229
229
  'UniqueID' => '1000',
230
230
  'RealName' => resource[:name],
231
- 'PrimaryGroupID' => '20',
231
+ 'PrimaryGroupID' => 20,
232
232
  'UserShell' => '/bin/bash',
233
233
  'NFSHomeDirectory' => "/Users/#{resource[:name]}"
234
234
  }
@@ -266,6 +266,13 @@ describe Puppet::Type.type(:user).provider(:directoryservice) do
266
266
  provider.expects(:merge_attribute_with_dscl).with('Groups', 'somegroup', 'GroupMembers', 'GUID')
267
267
  provider.create
268
268
  end
269
+
270
+ it 'should convert group names into integers' do
271
+ resource[:gid] = 'somegroup'
272
+ Puppet::Util.expects(:gid).with('somegroup').returns(21)
273
+ provider.expects(:merge_attribute_with_dscl).with('Users', username, 'PrimaryGroupID', 21)
274
+ provider.create
275
+ end
269
276
  end
270
277
 
271
278
  describe 'self#instances' do
@@ -599,7 +606,7 @@ describe Puppet::Type.type(:user).provider(:directoryservice) do
599
606
  }]
600
607
  end
601
608
 
602
- it 'should return a array of hashes containing group data' do
609
+ it 'should return an array of hashes containing group data' do
603
610
  provider.class.expects(:dscl).with('-plist', '.', 'readall', '/Groups').returns(groups_xml)
604
611
  provider.class.get_list_of_groups.should == groups_hash
605
612
  end
@@ -696,7 +703,7 @@ describe Puppet::Type.type(:user).provider(:directoryservice) do
696
703
  let(:password_hash_file) { '/var/db/shadow/hash/user_guid' }
697
704
  let(:stub_password_file) { stub('connection') }
698
705
 
699
- it 'should return a a sha1 hash read from disk' do
706
+ it 'should return a sha1 hash read from disk' do
700
707
  File.expects(:exists?).with(password_hash_file).returns(true)
701
708
  File.expects(:file?).with(password_hash_file).returns(true)
702
709
  File.expects(:readable?).with(password_hash_file).returns(true)
@@ -773,7 +780,7 @@ describe Puppet::Type.type(:user).provider(:directoryservice) do
773
780
  }
774
781
  end
775
782
 
776
- it 'should call set_salted_sha512 on 10.7 when given a a salted-SHA512 password hash' do
783
+ it 'should call set_salted_sha512 on 10.7 when given a salted-SHA512 password hash' do
777
784
  provider.expects(:get_users_plist).returns(sample_users_plist)
778
785
  provider.expects(:get_shadow_hash_data).with(sample_users_plist).returns(sha512_shadowhashdata)
779
786
  provider.class.expects(:get_os_version).returns('10.7')
@@ -267,6 +267,7 @@ FIXTURE
267
267
  end
268
268
 
269
269
  it "should only update the target user" do
270
+ Date.expects(:today).returns Date.new(2011,12,07)
270
271
  write_fixture <<FIXTURE
271
272
  before:seriously:15315:0:99999:7:::
272
273
  fakeval:seriously:15315:0:99999:7:::
@@ -294,6 +295,23 @@ FIXTURE
294
295
  provider.password = "totally"
295
296
  File.read(path).should == fixture
296
297
  end
298
+
299
+ it "should update the lastchg field" do
300
+ Date.expects(:today).returns Date.new(2013,5,12) # 15837 days after 1970-01-01
301
+ write_fixture <<FIXTURE
302
+ before:seriously:15315:0:99999:7:::
303
+ fakeval:seriously:15629:0:99999:7:::
304
+ fakevalish:seriously:15315:0:99999:7:::
305
+ after:seriously:15315:0:99999:7:::
306
+ FIXTURE
307
+ provider.password = "totally"
308
+ File.read(path).should == <<EOT
309
+ before:seriously:15315:0:99999:7:::
310
+ fakeval:totally:15837:0:99999:7:::
311
+ fakevalish:seriously:15315:0:99999:7:::
312
+ after:seriously:15315:0:99999:7:::
313
+ EOT
314
+ end
297
315
  end
298
316
 
299
317
  describe "#shadow_entry" do
@@ -448,28 +448,17 @@ describe Puppet::Provider do
448
448
 
449
449
  fields = %w{prop1 prop2 param1 param2}
450
450
 
451
- # This is needed for Ruby 1.8.5, which throws an exception that the
452
- # default rescue doesn't catch if the method isn't present. Also, it has
453
- # no convenient predicate for them, which equally hurts.
454
- def has_method?(object, name)
455
- begin
456
- return true if object.instance_method(name)
457
- rescue Exception
458
- return false
459
- end
460
- end
461
-
462
451
  fields.each do |name|
463
452
  it "should add getter methods for #{name}" do
464
453
  expect { subject.mk_resource_methods }.
465
- to change { has_method?(subject, name) }.
454
+ to change { subject.method_defined?(name) }.
466
455
  from(false).to(true)
467
456
  end
468
457
 
469
458
  it "should add setter methods for #{name}" do
470
459
  method = name + '='
471
460
  expect { subject.mk_resource_methods }.
472
- to change { has_method?(subject, name) }.
461
+ to change { subject.method_defined?(name) }.
473
462
  from(false).to(true)
474
463
  end
475
464
  end
@@ -89,7 +89,7 @@ describe processor do
89
89
  end
90
90
  end
91
91
 
92
- if code.to_i >= 300
92
+ if code.to_i >= 300 && ![301, 302, 307].include?(code.to_i)
93
93
  it "should log error on http code #{code}" do
94
94
  response = klass.new('1.1', code, '')
95
95
  http.expects(:post).returns(response)
@@ -260,7 +260,9 @@ describe Puppet::Resource::Catalog, "when compiling" do
260
260
 
261
261
  it "should add resources to the relationship graph if it exists" do
262
262
  relgraph = @catalog.relationship_graph
263
+
263
264
  @catalog.add_resource @one
265
+
264
266
  relgraph.should be_vertex(@one)
265
267
  end
266
268
 
@@ -275,6 +277,21 @@ describe Puppet::Resource::Catalog, "when compiling" do
275
277
  @catalog.vertices.find { |r| r.ref == @one.ref }.must equal(@one)
276
278
  end
277
279
 
280
+ it "tracks the container through edges" do
281
+ @catalog.add_resource(@two)
282
+ @catalog.add_resource(@one)
283
+
284
+ @catalog.add_edge(@one, @two)
285
+
286
+ @catalog.container_of(@two).must == @one
287
+ end
288
+
289
+ it "a resource without a container is contained in nil" do
290
+ @catalog.add_resource(@one)
291
+
292
+ @catalog.container_of(@one).must be_nil
293
+ end
294
+
278
295
  it "should canonize how resources are referred to during retrieval when both type and title are provided" do
279
296
  @catalog.add_resource(@one)
280
297
  @catalog.resource("notify", "one").must equal(@one)
@@ -311,10 +328,6 @@ describe Puppet::Resource::Catalog, "when compiling" do
311
328
  end
312
329
  end
313
330
 
314
- it "should not store objects that do not respond to :ref" do
315
- proc { @catalog.add_resource("thing") }.should raise_error(ArgumentError)
316
- end
317
-
318
331
  it "should remove all resources when asked" do
319
332
  @catalog.add_resource @one
320
333
  @catalog.add_resource @two
@@ -523,10 +536,9 @@ describe Puppet::Resource::Catalog, "when compiling" do
523
536
  before :each do
524
537
  @catalog = Puppet::Resource::Catalog.new("host")
525
538
 
526
- @transaction = Puppet::Transaction.new(@catalog)
539
+ @transaction = Puppet::Transaction.new(@catalog, nil, Puppet::Graph::RandomPrioritizer.new)
527
540
  Puppet::Transaction.stubs(:new).returns(@transaction)
528
541
  @transaction.stubs(:evaluate)
529
- @transaction.stubs(:add_times)
530
542
  @transaction.stubs(:for_network_device=)
531
543
 
532
544
  Puppet.settings.stubs(:use)
@@ -537,18 +549,6 @@ describe Puppet::Resource::Catalog, "when compiling" do
537
549
  @catalog.apply
538
550
  end
539
551
 
540
- it "should provide the catalog retrieval time to the transaction" do
541
- @catalog.retrieval_duration = 5
542
- @transaction.expects(:add_times).with(:config_retrieval => 5)
543
- @catalog.apply
544
- end
545
-
546
- it "should use a retrieval time of 0 if none is set in the catalog" do
547
- @catalog.retrieval_duration = nil
548
- @transaction.expects(:add_times).with(:config_retrieval => 0)
549
- @catalog.apply
550
- end
551
-
552
552
  it "should return the transaction" do
553
553
  @catalog.apply.should equal(@transaction)
554
554
  end
@@ -627,90 +627,15 @@ describe Puppet::Resource::Catalog, "when compiling" do
627
627
 
628
628
  describe "when creating a relationship graph" do
629
629
  before do
630
- Puppet::Type.type(:component)
631
630
  @catalog = Puppet::Resource::Catalog.new("host")
632
- @compone = Puppet::Type::Component.new :name => "one"
633
- @comptwo = Puppet::Type::Component.new :name => "two", :require => "Class[one]"
634
- @file = Puppet::Type.type(:file)
635
- @one = @file.new :path => @basepath+"/one"
636
- @two = @file.new :path => @basepath+"/two"
637
- @sub = @file.new :path => @basepath+"/two/subdir"
638
- @catalog.add_edge @compone, @one
639
- @catalog.add_edge @comptwo, @two
640
-
641
- @three = @file.new :path => @basepath+"/three"
642
- @four = @file.new :path => @basepath+"/four", :require => "File[#{@basepath}/three]"
643
- @five = @file.new :path => @basepath+"/five"
644
- @catalog.add_resource @compone, @comptwo, @one, @two, @three, @four, @five, @sub
645
-
646
- @relationships = @catalog.relationship_graph
647
- end
648
-
649
- it "should be able to create a relationship graph" do
650
- @relationships.should be_instance_of(Puppet::SimpleGraph)
651
- end
652
-
653
- it "should not have any components" do
654
- @relationships.vertices.find { |r| r.instance_of?(Puppet::Type::Component) }.should be_nil
655
- end
656
-
657
- it "should have all non-component resources from the catalog" do
658
- # The failures print out too much info, so i just do a class comparison
659
- @relationships.vertex?(@five).should be_true
660
- end
661
-
662
- it "should have all resource relationships set as edges" do
663
- @relationships.edge?(@three, @four).should be_true
664
- end
665
-
666
- it "should copy component relationships to all contained resources" do
667
- @relationships.path_between(@one, @two).should be
668
- end
669
-
670
- it "should add automatic relationships to the relationship graph" do
671
- @relationships.edge?(@two, @sub).should be_true
672
631
  end
673
632
 
674
633
  it "should get removed when the catalog is cleaned up" do
675
- @relationships.expects(:clear)
676
- @catalog.clear
677
- @catalog.instance_variable_get("@relationship_graph").should be_nil
678
- end
634
+ @catalog.relationship_graph.expects(:clear)
679
635
 
680
- it "should write :relationships and :expanded_relationships graph files if the catalog is a host catalog" do
681
636
  @catalog.clear
682
- graph = Puppet::SimpleGraph.new
683
- Puppet::SimpleGraph.expects(:new).returns graph
684
-
685
- graph.expects(:write_graph).with(:relationships)
686
- graph.expects(:write_graph).with(:expanded_relationships)
687
-
688
- @catalog.host_config = true
689
637
 
690
- @catalog.relationship_graph
691
- end
692
-
693
- it "should not write graph files if the catalog is not a host catalog" do
694
- @catalog.clear
695
- graph = Puppet::SimpleGraph.new
696
- Puppet::SimpleGraph.expects(:new).returns graph
697
-
698
- graph.expects(:write_graph).never
699
-
700
- @catalog.host_config = false
701
-
702
- @catalog.relationship_graph
703
- end
704
-
705
- it "should create a new relationship graph after clearing the old one" do
706
- @relationships.expects(:clear)
707
- @catalog.clear
708
- @catalog.relationship_graph.should be_instance_of(Puppet::SimpleGraph)
709
- end
710
-
711
- it "should remove removed resources from the relationship graph if it exists" do
712
- @catalog.remove_resource(@one)
713
- @catalog.relationship_graph.vertex?(@one).should be_false
638
+ @catalog.instance_variable_get("@relationship_graph").should be_nil
714
639
  end
715
640
  end
716
641
 
@@ -902,8 +827,9 @@ describe Puppet::Resource::Catalog, "when converting from pson" do
902
827
  it 'should convert the resources list into resources and add each of them' do
903
828
  @data['resources'] = [Puppet::Resource.new(:file, "/foo"), Puppet::Resource.new(:file, "/bar")]
904
829
 
905
- @catalog.expects(:add_resource).times(2).with { |res| res.type == "File" }
906
- PSON.parse @pson.to_pson
830
+ catalog = PSON.parse @pson.to_pson
831
+
832
+ catalog.resources.collect(&:ref) == ["File[/foo]", "File[/bar]"]
907
833
  end
908
834
 
909
835
  it 'should convert resources even if they do not include "type" information' do
@@ -0,0 +1,34 @@
1
+ {
2
+ "type": "object",
3
+ "properties": {
4
+ "doc": {
5
+ "type": "string"
6
+ },
7
+ "line": {
8
+ "type": "integer"
9
+ },
10
+ "file": {
11
+ "type": "string"
12
+ },
13
+ "parent": {
14
+ "type": "string"
15
+ },
16
+ "name": {
17
+ "type": "string",
18
+ "required": "true"
19
+ },
20
+ "kind": {
21
+ "type": "string",
22
+ "enum": [
23
+ "class",
24
+ "node",
25
+ "defined_type"
26
+ ],
27
+ "required": "true"
28
+ },
29
+ "parameters": {
30
+ "type": "object"
31
+ }
32
+ },
33
+ "additionalProperties": false
34
+ }
@@ -8,6 +8,8 @@ describe Puppet::Resource::Status do
8
8
 
9
9
  before do
10
10
  @resource = Puppet::Type.type(:file).new :path => make_absolute("/my/file")
11
+ @containment_path = ["foo", "bar", "baz"]
12
+ @resource.stubs(:pathbuilder).returns @containment_path
11
13
  @status = Puppet::Resource::Status.new(@resource)
12
14
  end
13
15
 
@@ -44,6 +46,10 @@ describe Puppet::Resource::Status do
44
46
  Puppet::Resource::Status.new(@resource).source_description.should == "/my/path"
45
47
  end
46
48
 
49
+ it "should set its containment path" do
50
+ Puppet::Resource::Status.new(@resource).containment_path.should == @containment_path
51
+ end
52
+
47
53
  [:file, :line].each do |attr|
48
54
  it "should copy the resource's #{attr}" do
49
55
  @resource.expects(attr).returns "foo"
@@ -151,4 +157,54 @@ describe Puppet::Resource::Status do
151
157
  @status.to_yaml_properties.should =~ Puppet::Resource::Status::YAML_ATTRIBUTES
152
158
  end
153
159
  end
160
+
161
+ it "should round trip through pson" do
162
+ @status.file = "/foo.rb"
163
+ @status.line = 27
164
+ @status.evaluation_time = 2.7
165
+ @status.tags = %w{one two}
166
+ @status << Puppet::Transaction::Event.new(:name => :mode_changed, :status => 'audit')
167
+ @status.failed = false
168
+ @status.changed = true
169
+ @status.out_of_sync = true
170
+ @status.skipped = false
171
+
172
+ @status.containment_path.should == @containment_path
173
+
174
+ tripped = Puppet::Resource::Status.from_pson(PSON.parse(@status.to_pson))
175
+
176
+ tripped.title.should == @status.title
177
+ tripped.containment_path.should == @status.containment_path
178
+ tripped.file.should == @status.file
179
+ tripped.line.should == @status.line
180
+ tripped.resource.should == @status.resource
181
+ tripped.resource_type.should == @status.resource_type
182
+ tripped.evaluation_time.should == @status.evaluation_time
183
+ tripped.tags.should == @status.tags
184
+ tripped.time.should == @status.time
185
+ tripped.failed.should == @status.failed
186
+ tripped.changed.should == @status.changed
187
+ tripped.out_of_sync.should == @status.out_of_sync
188
+ tripped.skipped.should == @status.skipped
189
+
190
+ tripped.change_count.should == @status.change_count
191
+ tripped.out_of_sync_count.should == @status.out_of_sync_count
192
+ events_as_hashes(tripped).should == events_as_hashes(@status)
193
+ end
194
+
195
+ def events_as_hashes(report)
196
+ report.events.collect do |e|
197
+ {
198
+ :audited => e.audited,
199
+ :property => e.property,
200
+ :previous_value => e.previous_value,
201
+ :desired_value => e.desired_value,
202
+ :historical_value => e.historical_value,
203
+ :message => e.message,
204
+ :name => e.name,
205
+ :status => e.status,
206
+ :time => e.time,
207
+ }
208
+ end
209
+ end
154
210
  end
@@ -190,7 +190,7 @@ describe Puppet::Resource::TypeCollection do
190
190
  @code.loader.expects(:try_load_fqname).with(:hostclass, "klass").returns(nil)
191
191
  @code.find_hostclass("Ns", "Klass").should be_nil
192
192
 
193
- Puppet.expects(:warning).at_least_once.with {|msg| msg =~ /Not attempting to load hostclass/}
193
+ Puppet.expects(:debug).at_least_once.with {|msg| msg =~ /Not attempting to load hostclass/}
194
194
  @code.find_hostclass("Ns", "Klass").should be_nil
195
195
  end
196
196
  end
@@ -369,7 +369,7 @@ describe Puppet::Resource::TypeCollection do
369
369
  describe "when managing files" do
370
370
  before do
371
371
  @loader = Puppet::Resource::TypeCollection.new("env")
372
- Puppet::Util::LoadedFile.stubs(:new).returns stub("watched_file")
372
+ Puppet::Util::WatchedFile.stubs(:new).returns stub("watched_file")
373
373
  end
374
374
 
375
375
  it "should have a method for specifying a file should be watched" do
@@ -381,15 +381,15 @@ describe Puppet::Resource::TypeCollection do
381
381
  @loader.should be_watching_file("/foo/bar")
382
382
  end
383
383
 
384
- it "should use LoadedFile to watch files" do
385
- Puppet::Util::LoadedFile.expects(:new).with("/foo/bar").returns stub("watched_file")
384
+ it "should use WatchedFile to watch files" do
385
+ Puppet::Util::WatchedFile.expects(:new).with("/foo/bar").returns stub("watched_file")
386
386
  @loader.watch_file("/foo/bar")
387
387
  end
388
388
 
389
389
  it "should be considered stale if any files have changed" do
390
390
  file1 = stub 'file1', :changed? => false
391
391
  file2 = stub 'file2', :changed? => true
392
- Puppet::Util::LoadedFile.expects(:new).times(2).returns(file1).then.returns(file2)
392
+ Puppet::Util::WatchedFile.expects(:new).times(2).returns(file1).then.returns(file2)
393
393
  @loader.watch_file("/foo/bar")
394
394
  @loader.watch_file("/other/bar")
395
395
 
@@ -399,7 +399,7 @@ describe Puppet::Resource::TypeCollection do
399
399
  it "should not be considered stable if no files have changed" do
400
400
  file1 = stub 'file1', :changed? => false
401
401
  file2 = stub 'file2', :changed? => false
402
- Puppet::Util::LoadedFile.expects(:new).times(2).returns(file1).then.returns(file2)
402
+ Puppet::Util::WatchedFile.expects(:new).times(2).returns(file1).then.returns(file2)
403
403
  @loader.watch_file("/foo/bar")
404
404
  @loader.watch_file("/other/bar")
405
405