puppet 3.4.3 → 3.5.0.rc1

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 (811) hide show
  1. data/CONTRIBUTING.md +6 -6
  2. data/Gemfile +22 -16
  3. data/LICENSE +1 -1
  4. data/README.md +33 -11
  5. data/Rakefile +1 -1
  6. data/conf/auth.conf +4 -0
  7. data/ext/build_defaults.yaml +1 -1
  8. data/ext/debian/control +6 -6
  9. data/ext/ips/transforms +1 -1
  10. data/ext/nagios/naggen +1 -1
  11. data/ext/project_data.yaml +21 -1
  12. data/ext/puppet-test +3 -3
  13. data/ext/redhat/puppet.spec.erb +28 -2
  14. data/ext/suse/puppet.spec +1 -1
  15. data/ext/upload_facts.rb +1 -1
  16. data/ext/windows/service/daemon.rb +99 -20
  17. data/lib/hiera_puppet.rb +2 -2
  18. data/lib/puppet.rb +68 -5
  19. data/lib/puppet/agent.rb +5 -1
  20. data/lib/puppet/application.rb +20 -11
  21. data/lib/puppet/application/agent.rb +1 -1
  22. data/lib/puppet/application/apply.rb +61 -41
  23. data/lib/puppet/application/cert.rb +3 -3
  24. data/lib/puppet/application/device.rb +7 -8
  25. data/lib/puppet/application/doc.rb +1 -1
  26. data/lib/puppet/application/filebucket.rb +3 -3
  27. data/lib/puppet/application/kick.rb +2 -2
  28. data/lib/puppet/application/master.rb +1 -1
  29. data/lib/puppet/application/queue.rb +9 -9
  30. data/lib/puppet/application/resource.rb +2 -2
  31. data/lib/puppet/bindings.rb +6 -6
  32. data/lib/puppet/configurer.rb +17 -14
  33. data/lib/puppet/configurer/fact_handler.rb +1 -1
  34. data/lib/puppet/confine/any.rb +26 -0
  35. data/lib/puppet/confine/exists.rb +1 -1
  36. data/lib/puppet/confiner.rb +1 -0
  37. data/lib/puppet/context.rb +55 -0
  38. data/lib/puppet/context/trusted_information.rb +56 -0
  39. data/lib/puppet/defaults.rb +97 -26
  40. data/lib/puppet/environments.rb +187 -0
  41. data/lib/puppet/error.rb +2 -1
  42. data/lib/puppet/external/pson/common.rb +1 -1
  43. data/lib/puppet/external/pson/pure/generator.rb +1 -1
  44. data/lib/puppet/external/pson/pure/parser.rb +1 -1
  45. data/lib/puppet/face/config.rb +73 -15
  46. data/lib/puppet/face/file/store.rb +1 -1
  47. data/lib/puppet/face/help.rb +2 -1
  48. data/lib/puppet/face/help/action.erb +1 -0
  49. data/lib/puppet/face/help/face.erb +1 -0
  50. data/lib/puppet/face/help/global.erb +1 -0
  51. data/lib/puppet/face/help/man.erb +9 -8
  52. data/lib/puppet/face/module/list.rb +13 -7
  53. data/lib/puppet/face/node/clean.rb +2 -2
  54. data/lib/puppet/face/parser.rb +11 -5
  55. data/lib/puppet/face/status.rb +1 -1
  56. data/lib/puppet/feature/external_facts.rb +2 -2
  57. data/lib/puppet/feature/libuser.rb +1 -1
  58. data/lib/puppet/feature/msgpack.rb +2 -0
  59. data/lib/puppet/feature/rails.rb +2 -2
  60. data/lib/puppet/file_bucket/dipper.rb +9 -9
  61. data/lib/puppet/file_bucket/file.rb +9 -5
  62. data/lib/puppet/file_serving/base.rb +1 -1
  63. data/lib/puppet/file_serving/configuration.rb +1 -1
  64. data/lib/puppet/file_serving/configuration/parser.rb +3 -3
  65. data/lib/puppet/file_serving/content.rb +2 -2
  66. data/lib/puppet/file_serving/fileset.rb +4 -4
  67. data/lib/puppet/file_serving/metadata.rb +69 -15
  68. data/lib/puppet/file_serving/mount/file.rb +1 -1
  69. data/lib/puppet/file_system.rb +361 -1
  70. data/lib/puppet/file_system/file18.rb +3 -3
  71. data/lib/puppet/file_system/file19.rb +3 -3
  72. data/lib/puppet/file_system/file19windows.rb +18 -23
  73. data/lib/puppet/file_system/file_impl.rb +145 -0
  74. data/lib/puppet/file_system/memory_file.rb +23 -9
  75. data/lib/puppet/file_system/memory_impl.rb +64 -0
  76. data/lib/puppet/forge.rb +4 -3
  77. data/lib/puppet/forge/repository.rb +0 -1
  78. data/lib/puppet/graph/relationship_graph.rb +7 -7
  79. data/lib/puppet/indirector.rb +1 -0
  80. data/lib/puppet/indirector/catalog/compiler.rb +3 -30
  81. data/lib/puppet/indirector/catalog/msgpack.rb +6 -0
  82. data/lib/puppet/indirector/catalog/static_compiler.rb +3 -7
  83. data/lib/puppet/indirector/data_binding/hiera.rb +1 -1
  84. data/lib/puppet/indirector/direct_file_server.rb +2 -2
  85. data/lib/puppet/indirector/exec.rb +1 -1
  86. data/lib/puppet/indirector/face.rb +3 -2
  87. data/lib/puppet/indirector/facts/facter.rb +1 -1
  88. data/lib/puppet/indirector/file_bucket_file/file.rb +25 -15
  89. data/lib/puppet/indirector/file_metadata/file.rb +1 -1
  90. data/lib/puppet/indirector/file_server.rb +1 -1
  91. data/lib/puppet/indirector/indirection.rb +1 -1
  92. data/lib/puppet/indirector/json.rb +4 -4
  93. data/lib/puppet/indirector/key/file.rb +8 -5
  94. data/lib/puppet/indirector/ldap.rb +1 -1
  95. data/lib/puppet/indirector/memory.rb +4 -0
  96. data/lib/puppet/indirector/msgpack.rb +82 -0
  97. data/lib/puppet/indirector/node/exec.rb +1 -1
  98. data/lib/puppet/indirector/node/ldap.rb +3 -3
  99. data/lib/puppet/indirector/node/msgpack.rb +7 -0
  100. data/lib/puppet/indirector/node/yaml.rb +15 -0
  101. data/lib/puppet/indirector/queue.rb +3 -2
  102. data/lib/puppet/indirector/report/msgpack.rb +11 -0
  103. data/lib/puppet/indirector/request.rb +17 -20
  104. data/lib/puppet/indirector/resource/rest.rb +1 -1
  105. data/lib/puppet/indirector/resource_type/parser.rb +3 -13
  106. data/lib/puppet/indirector/rest.rb +6 -7
  107. data/lib/puppet/indirector/ssl_file.rb +7 -7
  108. data/lib/puppet/indirector/yaml.rb +9 -13
  109. data/lib/puppet/metatype/manager.rb +12 -7
  110. data/lib/puppet/module.rb +14 -9
  111. data/lib/puppet/module_tool.rb +21 -26
  112. data/lib/puppet/module_tool/applications/application.rb +1 -1
  113. data/lib/puppet/module_tool/applications/generator.rb +2 -1
  114. data/lib/puppet/module_tool/applications/installer.rb +9 -4
  115. data/lib/puppet/module_tool/applications/uninstaller.rb +10 -7
  116. data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
  117. data/lib/puppet/module_tool/applications/upgrader.rb +11 -8
  118. data/lib/puppet/module_tool/checksums.rb +1 -1
  119. data/lib/puppet/module_tool/contents_description.rb +2 -0
  120. data/lib/puppet/module_tool/dependency.rb +4 -5
  121. data/lib/puppet/module_tool/errors.rb +2 -0
  122. data/lib/puppet/module_tool/install_directory.rb +3 -0
  123. data/lib/puppet/module_tool/metadata.rb +3 -5
  124. data/lib/puppet/module_tool/modulefile.rb +3 -0
  125. data/lib/puppet/module_tool/shared_behaviors.rb +6 -1
  126. data/lib/puppet/module_tool/skeleton.rb +3 -0
  127. data/lib/puppet/module_tool/tar.rb +3 -0
  128. data/lib/puppet/network/auth_config_parser.rb +1 -1
  129. data/lib/puppet/network/authconfig.rb +5 -2
  130. data/lib/puppet/network/authentication.rb +7 -2
  131. data/lib/puppet/network/authorization.rb +2 -2
  132. data/lib/puppet/network/format_support.rb +4 -0
  133. data/lib/puppet/network/formats.rb +9 -14
  134. data/lib/puppet/network/http.rb +11 -0
  135. data/lib/puppet/network/http/api.rb +0 -2
  136. data/lib/puppet/network/http/api/v1.rb +146 -11
  137. data/lib/puppet/network/http/api/v2.rb +32 -0
  138. data/lib/puppet/network/http/api/v2/authorization.rb +13 -0
  139. data/lib/puppet/network/http/api/v2/environments.rb +21 -0
  140. data/lib/puppet/network/http/connection.rb +94 -37
  141. data/lib/puppet/network/http/error.rb +69 -0
  142. data/lib/puppet/network/http/handler.rb +28 -196
  143. data/lib/puppet/network/http/issues.rb +9 -0
  144. data/lib/puppet/network/http/memory_response.rb +13 -0
  145. data/lib/puppet/network/http/rack/rest.rb +10 -18
  146. data/lib/puppet/network/http/request.rb +56 -0
  147. data/lib/puppet/network/http/response.rb +11 -0
  148. data/lib/puppet/network/http/route.rb +91 -0
  149. data/lib/puppet/network/http/webrick.rb +1 -1
  150. data/lib/puppet/network/http/webrick/rest.rb +7 -12
  151. data/lib/puppet/network/http_pool.rb +3 -3
  152. data/lib/puppet/network/rights.rb +4 -4
  153. data/lib/puppet/node.rb +23 -14
  154. data/lib/puppet/node/environment.rb +149 -125
  155. data/lib/puppet/node/facts.rb +6 -5
  156. data/lib/puppet/parameter.rb +1 -1
  157. data/lib/puppet/parser/ast.rb +1 -1
  158. data/lib/puppet/parser/ast/block_expression.rb +1 -6
  159. data/lib/puppet/parser/ast/collexpr.rb +54 -2
  160. data/lib/puppet/parser/ast/lambda.rb +9 -0
  161. data/lib/puppet/parser/ast/leaf.rb +15 -0
  162. data/lib/puppet/parser/ast/pops_bridge.rb +168 -0
  163. data/lib/puppet/parser/code_merger.rb +13 -0
  164. data/lib/puppet/parser/collector.rb +1 -1
  165. data/lib/puppet/parser/compiler.rb +28 -30
  166. data/lib/puppet/parser/e4_parser_adapter.rb +81 -0
  167. data/lib/puppet/parser/e_parser_adapter.rb +0 -1
  168. data/lib/puppet/parser/files.rb +12 -7
  169. data/lib/puppet/parser/functions.rb +36 -29
  170. data/lib/puppet/parser/functions/collect.rb +1 -1
  171. data/lib/puppet/parser/functions/defined.rb +40 -16
  172. data/lib/puppet/parser/functions/each.rb +55 -41
  173. data/lib/puppet/parser/functions/epp.rb +41 -0
  174. data/lib/puppet/parser/functions/extlookup.rb +2 -2
  175. data/lib/puppet/parser/functions/file.rb +1 -1
  176. data/lib/puppet/parser/functions/filter.rb +68 -16
  177. data/lib/puppet/parser/functions/generate.rb +1 -1
  178. data/lib/puppet/parser/functions/include.rb +3 -2
  179. data/lib/puppet/parser/functions/inline_epp.rb +79 -0
  180. data/lib/puppet/parser/functions/inline_template.rb +1 -1
  181. data/lib/puppet/parser/functions/lookup.rb +127 -27
  182. data/lib/puppet/parser/functions/map.rb +64 -12
  183. data/lib/puppet/parser/functions/reduce.rb +40 -16
  184. data/lib/puppet/parser/functions/select.rb +1 -1
  185. data/lib/puppet/parser/functions/slice.rb +42 -23
  186. data/lib/puppet/parser/grammar.ra +3 -0
  187. data/lib/puppet/parser/lexer.rb +10 -9
  188. data/lib/puppet/parser/parser.rb +15 -12
  189. data/lib/puppet/parser/parser_factory.rb +26 -1
  190. data/lib/puppet/parser/parser_support.rb +13 -4
  191. data/lib/puppet/parser/resource.rb +1 -1
  192. data/lib/puppet/parser/scope.rb +246 -97
  193. data/lib/puppet/parser/templatewrapper.rb +1 -1
  194. data/lib/puppet/parser/type_loader.rb +13 -2
  195. data/lib/puppet/pops.rb +15 -1
  196. data/lib/puppet/pops/adapters.rb +64 -32
  197. data/lib/puppet/pops/binder/binder.rb +122 -150
  198. data/lib/puppet/pops/binder/binder_issues.rb +1 -21
  199. data/lib/puppet/pops/binder/bindings_checker.rb +0 -20
  200. data/lib/puppet/pops/binder/bindings_composer.rb +4 -70
  201. data/lib/puppet/pops/binder/bindings_factory.rb +16 -58
  202. data/lib/puppet/pops/binder/bindings_label_provider.rb +0 -3
  203. data/lib/puppet/pops/binder/bindings_loader.rb +13 -4
  204. data/lib/puppet/pops/binder/bindings_model.rb +17 -31
  205. data/lib/puppet/pops/binder/bindings_model_dumper.rb +2 -20
  206. data/lib/puppet/pops/binder/config/binder_config.rb +8 -40
  207. data/lib/puppet/pops/binder/config/binder_config_checker.rb +2 -43
  208. data/lib/puppet/pops/binder/config/issues.rb +1 -21
  209. data/lib/puppet/pops/binder/injector.rb +86 -7
  210. data/lib/puppet/pops/binder/injector_entry.rb +6 -2
  211. data/lib/puppet/pops/binder/key_factory.rb +7 -1
  212. data/lib/puppet/pops/binder/lookup.rb +191 -0
  213. data/lib/puppet/pops/binder/producers.rb +5 -5
  214. data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +2 -3
  215. data/lib/puppet/pops/binder/system_bindings.rb +4 -16
  216. data/lib/puppet/pops/containment.rb +72 -5
  217. data/lib/puppet/pops/evaluator/access_operator.rb +548 -0
  218. data/lib/puppet/pops/evaluator/closure.rb +57 -0
  219. data/lib/puppet/pops/evaluator/compare_operator.rb +168 -0
  220. data/lib/puppet/pops/evaluator/epp_evaluator.rb +87 -0
  221. data/lib/puppet/pops/evaluator/evaluator_impl.rb +1069 -0
  222. data/lib/puppet/pops/evaluator/external_syntax_support.rb +49 -0
  223. data/lib/puppet/pops/evaluator/relationship_operator.rb +156 -0
  224. data/lib/puppet/pops/evaluator/runtime3_support.rb +489 -0
  225. data/lib/puppet/pops/issue_reporter.rb +8 -4
  226. data/lib/puppet/pops/issues.rb +199 -4
  227. data/lib/puppet/pops/label_provider.rb +5 -0
  228. data/lib/puppet/pops/model/ast_transformer.rb +55 -31
  229. data/lib/puppet/pops/model/ast_tree_dumper.rb +9 -1
  230. data/lib/puppet/pops/model/factory.rb +265 -111
  231. data/lib/puppet/pops/model/model.rb +179 -140
  232. data/lib/puppet/pops/model/model_label_provider.rb +38 -9
  233. data/lib/puppet/pops/model/model_tree_dumper.rb +38 -13
  234. data/lib/puppet/pops/parser/code_merger.rb +17 -0
  235. data/lib/puppet/pops/parser/egrammar.ra +110 -61
  236. data/lib/puppet/pops/parser/eparser.rb +1415 -1092
  237. data/lib/puppet/pops/parser/epp_parser.rb +51 -0
  238. data/lib/puppet/pops/parser/epp_support.rb +247 -0
  239. data/lib/puppet/pops/parser/evaluating_parser.rb +53 -15
  240. data/lib/puppet/pops/parser/heredoc_support.rb +139 -0
  241. data/lib/puppet/pops/parser/interpolation_support.rb +227 -0
  242. data/lib/puppet/pops/parser/lexer.rb +83 -192
  243. data/lib/puppet/pops/parser/lexer2.rb +684 -0
  244. data/lib/puppet/pops/parser/lexer_support.rb +107 -0
  245. data/lib/puppet/pops/parser/locatable.rb +23 -0
  246. data/lib/puppet/pops/parser/locator.rb +291 -0
  247. data/lib/puppet/pops/parser/makefile +1 -8
  248. data/lib/puppet/pops/parser/parser_support.rb +76 -48
  249. data/lib/puppet/pops/parser/slurp_support.rb +95 -0
  250. data/lib/puppet/pops/patterns.rb +13 -4
  251. data/lib/puppet/pops/types/class_loader.rb +2 -2
  252. data/lib/puppet/pops/types/enumeration.rb +34 -0
  253. data/lib/puppet/pops/types/type_calculator.rb +983 -58
  254. data/lib/puppet/pops/types/type_factory.rb +203 -15
  255. data/lib/puppet/pops/types/type_parser.rb +355 -12
  256. data/lib/puppet/pops/types/types.rb +314 -24
  257. data/lib/puppet/pops/utils.rb +23 -7
  258. data/lib/puppet/pops/validation.rb +14 -8
  259. data/lib/puppet/pops/validation/checker3_1.rb +17 -12
  260. data/lib/puppet/pops/validation/checker4_0.rb +514 -0
  261. data/lib/puppet/pops/validation/validator_factory_4_0.rb +31 -0
  262. data/lib/puppet/pops/visitor.rb +146 -4
  263. data/lib/puppet/property.rb +1 -1
  264. data/lib/puppet/property/ensure.rb +1 -1
  265. data/lib/puppet/provider.rb +47 -26
  266. data/lib/puppet/provider/aixobject.rb +3 -3
  267. data/lib/puppet/provider/augeas/augeas.rb +11 -11
  268. data/lib/puppet/provider/cron/crontab.rb +10 -1
  269. data/lib/puppet/provider/exec.rb +1 -1
  270. data/lib/puppet/provider/exec/posix.rb +1 -1
  271. data/lib/puppet/provider/exec/windows.rb +1 -1
  272. data/lib/puppet/provider/file/posix.rb +2 -2
  273. data/lib/puppet/provider/file/windows.rb +15 -9
  274. data/lib/puppet/provider/group/aix.rb +2 -2
  275. data/lib/puppet/provider/macauthorization/macauthorization.rb +3 -3
  276. data/lib/puppet/provider/mount.rb +7 -0
  277. data/lib/puppet/provider/mount/parsed.rb +0 -1
  278. data/lib/puppet/provider/naginator.rb +1 -1
  279. data/lib/puppet/provider/nameservice.rb +3 -3
  280. data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
  281. data/lib/puppet/provider/package/aix.rb +1 -1
  282. data/lib/puppet/provider/package/appdmg.rb +1 -4
  283. data/lib/puppet/provider/package/apple.rb +1 -1
  284. data/lib/puppet/provider/package/apt.rb +1 -1
  285. data/lib/puppet/provider/package/blastwave.rb +1 -1
  286. data/lib/puppet/provider/package/fink.rb +1 -1
  287. data/lib/puppet/provider/package/gem.rb +3 -3
  288. data/lib/puppet/provider/package/openbsd.rb +6 -4
  289. data/lib/puppet/provider/package/pacman.rb +58 -5
  290. data/lib/puppet/provider/package/pip.rb +2 -2
  291. data/lib/puppet/provider/package/pkgdmg.rb +25 -10
  292. data/lib/puppet/provider/package/pkgin.rb +48 -23
  293. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  294. data/lib/puppet/provider/package/ports.rb +1 -1
  295. data/lib/puppet/provider/package/portupgrade.rb +7 -7
  296. data/lib/puppet/provider/package/rpm.rb +16 -8
  297. data/lib/puppet/provider/package/windows.rb +1 -1
  298. data/lib/puppet/provider/package/windows/package.rb +1 -1
  299. data/lib/puppet/provider/parsedfile.rb +1 -1
  300. data/lib/puppet/provider/selboolean/getsetsebool.rb +1 -1
  301. data/lib/puppet/provider/selmodule/semodule.rb +5 -5
  302. data/lib/puppet/provider/service/base.rb +1 -1
  303. data/lib/puppet/provider/service/bsd.rb +3 -3
  304. data/lib/puppet/provider/service/daemontools.rb +20 -20
  305. data/lib/puppet/provider/service/debian.rb +1 -1
  306. data/lib/puppet/provider/service/freebsd.rb +3 -3
  307. data/lib/puppet/provider/service/gentoo.rb +2 -2
  308. data/lib/puppet/provider/service/init.rb +5 -5
  309. data/lib/puppet/provider/service/launchd.rb +4 -4
  310. data/lib/puppet/provider/service/redhat.rb +2 -2
  311. data/lib/puppet/provider/service/runit.rb +4 -4
  312. data/lib/puppet/provider/service/service.rb +3 -4
  313. data/lib/puppet/provider/service/smf.rb +1 -1
  314. data/lib/puppet/provider/service/src.rb +3 -3
  315. data/lib/puppet/provider/service/systemd.rb +4 -4
  316. data/lib/puppet/provider/service/upstart.rb +22 -7
  317. data/lib/puppet/provider/service/windows.rb +7 -7
  318. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +3 -3
  319. data/lib/puppet/provider/user/aix.rb +5 -5
  320. data/lib/puppet/provider/user/directoryservice.rb +8 -5
  321. data/lib/puppet/provider/user/ldap.rb +1 -1
  322. data/lib/puppet/provider/user/pw.rb +1 -1
  323. data/lib/puppet/provider/user/user_role_add.rb +2 -2
  324. data/lib/puppet/provider/user/useradd.rb +19 -5
  325. data/lib/puppet/provider/yumrepo/inifile.rb +187 -0
  326. data/lib/puppet/provider/zone/solaris.rb +4 -4
  327. data/lib/puppet/rails.rb +16 -11
  328. data/lib/puppet/rails/benchmark.rb +1 -1
  329. data/lib/puppet/rails/resource.rb +5 -1
  330. data/lib/puppet/reference/configuration.rb +1 -1
  331. data/lib/puppet/reference/report.rb +1 -1
  332. data/lib/puppet/relationship.rb +10 -5
  333. data/lib/puppet/reports/http.rb +8 -2
  334. data/lib/puppet/reports/rrdgraph.rb +1 -1
  335. data/lib/puppet/reports/store.rb +3 -3
  336. data/lib/puppet/reports/tagmail.rb +4 -4
  337. data/lib/puppet/resource.rb +37 -44
  338. data/lib/puppet/resource/catalog.rb +18 -20
  339. data/lib/puppet/resource/status.rb +7 -6
  340. data/lib/puppet/resource/type.rb +6 -5
  341. data/lib/puppet/resource/type_collection.rb +2 -2
  342. data/lib/puppet/run.rb +9 -8
  343. data/lib/puppet/settings.rb +395 -244
  344. data/lib/puppet/settings/base_setting.rb +10 -4
  345. data/lib/puppet/settings/config_file.rb +81 -44
  346. data/lib/puppet/settings/directory_setting.rb +1 -2
  347. data/lib/puppet/settings/file_setting.rb +12 -5
  348. data/lib/puppet/settings/ini_file.rb +171 -0
  349. data/lib/puppet/ssl/base.rb +4 -0
  350. data/lib/puppet/ssl/certificate_authority.rb +16 -11
  351. data/lib/puppet/ssl/certificate_authority/interface.rb +3 -2
  352. data/lib/puppet/ssl/certificate_factory.rb +50 -5
  353. data/lib/puppet/ssl/certificate_request.rb +2 -2
  354. data/lib/puppet/ssl/certificate_request_attributes.rb +1 -1
  355. data/lib/puppet/ssl/certificate_revocation_list.rb +3 -1
  356. data/lib/puppet/ssl/host.rb +9 -8
  357. data/lib/puppet/ssl/inventory.rb +1 -1
  358. data/lib/puppet/ssl/key.rb +1 -1
  359. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  360. data/lib/puppet/status.rb +8 -7
  361. data/lib/puppet/test/test_helper.rb +35 -4
  362. data/lib/puppet/transaction/event.rb +6 -5
  363. data/lib/puppet/transaction/report.rb +10 -10
  364. data/lib/puppet/type.rb +1 -3
  365. data/lib/puppet/type/augeas.rb +2 -1
  366. data/lib/puppet/type/cron.rb +41 -11
  367. data/lib/puppet/type/exec.rb +5 -5
  368. data/lib/puppet/type/file.rb +42 -4
  369. data/lib/puppet/type/file/content.rb +5 -6
  370. data/lib/puppet/type/file/ensure.rb +3 -3
  371. data/lib/puppet/type/file/source.rb +12 -6
  372. data/lib/puppet/type/file/target.rb +5 -5
  373. data/lib/puppet/type/k5login.rb +4 -4
  374. data/lib/puppet/type/mount.rb +1 -1
  375. data/lib/puppet/type/package.rb +79 -3
  376. data/lib/puppet/type/resources.rb +34 -5
  377. data/lib/puppet/type/selboolean.rb +1 -1
  378. data/lib/puppet/type/selmodule.rb +1 -1
  379. data/lib/puppet/type/ssh_authorized_key.rb +2 -1
  380. data/lib/puppet/type/sshkey.rb +2 -1
  381. data/lib/puppet/type/tidy.rb +1 -1
  382. data/lib/puppet/type/user.rb +4 -1
  383. data/lib/puppet/type/yumrepo.rb +219 -344
  384. data/lib/puppet/type/zone.rb +15 -5
  385. data/lib/puppet/util.rb +14 -13
  386. data/lib/puppet/util/adsi.rb +19 -3
  387. data/lib/puppet/util/autoload.rb +27 -24
  388. data/lib/puppet/util/backups.rb +6 -6
  389. data/lib/puppet/util/checksums.rb +2 -2
  390. data/lib/puppet/util/classgen.rb +1 -1
  391. data/lib/puppet/util/colors.rb +4 -12
  392. data/lib/puppet/util/command_line.rb +2 -2
  393. data/lib/puppet/util/command_line/trollop.rb +3 -3
  394. data/lib/puppet/util/docs.rb +2 -2
  395. data/lib/puppet/util/errors.rb +8 -1
  396. data/lib/puppet/util/execution.rb +12 -5
  397. data/lib/puppet/util/filetype.rb +5 -5
  398. data/lib/puppet/util/inifile.rb +19 -4
  399. data/lib/puppet/util/instrumentation/data.rb +5 -0
  400. data/lib/puppet/util/instrumentation/indirection_probe.rb +6 -1
  401. data/lib/puppet/util/instrumentation/listener.rb +6 -1
  402. data/lib/puppet/util/json_lockfile.rb +4 -1
  403. data/lib/puppet/util/ldap/connection.rb +1 -1
  404. data/lib/puppet/util/lockfile.rb +10 -6
  405. data/lib/puppet/util/log.rb +6 -1
  406. data/lib/puppet/util/log/destinations.rb +2 -2
  407. data/lib/puppet/util/metric.rb +9 -4
  408. data/lib/puppet/util/nagios_maker.rb +26 -1
  409. data/lib/puppet/util/network_device.rb +1 -1
  410. data/lib/puppet/util/network_device/config.rb +1 -1
  411. data/lib/puppet/util/network_device/transport/ssh.rb +3 -3
  412. data/lib/puppet/util/plugins.rb +1 -1
  413. data/lib/puppet/util/profiler.rb +13 -1
  414. data/lib/puppet/util/pson.rb +1 -1
  415. data/lib/puppet/util/queue/stomp.rb +2 -2
  416. data/lib/puppet/util/rdoc.rb +1 -1
  417. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
  418. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +19 -19
  419. data/lib/puppet/util/reference.rb +1 -1
  420. data/lib/puppet/util/resource_template.rb +1 -1
  421. data/lib/puppet/util/retryaction.rb +1 -1
  422. data/lib/puppet/util/selinux.rb +2 -2
  423. data/lib/puppet/util/storage.rb +3 -3
  424. data/lib/puppet/util/symbolic_file_mode.rb +1 -1
  425. data/lib/puppet/util/tag_set.rb +15 -3
  426. data/lib/puppet/util/tagging.rb +12 -17
  427. data/lib/puppet/util/watched_file.rb +1 -1
  428. data/lib/puppet/util/watcher.rb +1 -1
  429. data/lib/puppet/util/windows/error.rb +2 -2
  430. data/lib/puppet/util/windows/file.rb +20 -4
  431. data/lib/puppet/util/windows/registry.rb +2 -2
  432. data/lib/puppet/vendor/safe_yaml/CHANGES.md +1 -1
  433. data/lib/puppet/version.rb +1 -1
  434. data/lib/puppetx.rb +1 -21
  435. data/lib/puppetx/puppet/syntax_checker.rb +1 -1
  436. data/lib/puppetx/puppetlabs/syntax_checkers/json.rb +9 -11
  437. data/spec/fixtures/integration/node/environment/sitedir/00_a.pp +2 -0
  438. data/spec/fixtures/integration/node/environment/sitedir/01_b.pp +6 -0
  439. data/spec/fixtures/{unit/pops/binder/hiera2/yaml_backend/empty/common.yaml → integration/node/environment/sitedir/03_empty.pp} +0 -0
  440. data/spec/fixtures/integration/node/environment/sitedir/04_include.pp +2 -0
  441. data/spec/fixtures/integration/provider/cron/crontab/purged +8 -0
  442. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +1 -1
  443. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +3 -12
  444. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/lib/puppet/bindings/confdirtest.rb +10 -0
  445. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet/bindings/awesome2/default.rb +20 -0
  446. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/{awesome/lib/puppetx/awesome → awesome2/lib/puppetx/awesome2}/echo_scheme_handler.rb +2 -2
  447. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/lib/puppet/bindings/bad/default.rb +5 -0
  448. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/lib/puppet/bindings/good/default.rb +6 -0
  449. data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +2 -2
  450. data/spec/fixtures/unit/provider/service/systemd/{list_units → list_units_services} +0 -1
  451. data/spec/integration/agent/logging_spec.rb +1 -1
  452. data/spec/integration/application/apply_spec.rb +78 -3
  453. data/spec/integration/application/doc_spec.rb +3 -2
  454. data/spec/integration/configurer_spec.rb +5 -3
  455. data/spec/integration/directory_environments_spec.rb +50 -0
  456. data/spec/integration/indirector/direct_file_server_spec.rb +1 -1
  457. data/spec/integration/indirector/file_content/file_server_spec.rb +4 -5
  458. data/spec/integration/network/authconfig_spec.rb +4 -4
  459. data/spec/integration/network/formats_spec.rb +1 -1
  460. data/spec/integration/node/environment_spec.rb +67 -15
  461. data/spec/integration/node/facts_spec.rb +1 -1
  462. data/spec/integration/node_spec.rb +1 -1
  463. data/spec/integration/parser/catalog_spec.rb +100 -60
  464. data/spec/integration/parser/compiler_spec.rb +102 -13
  465. data/spec/integration/parser/future_compiler_spec.rb +416 -0
  466. data/spec/integration/parser/parser_spec.rb +44 -105
  467. data/spec/integration/parser/scope_spec.rb +614 -528
  468. data/spec/integration/provider/cron/crontab_spec.rb +21 -0
  469. data/spec/integration/provider/mount_spec.rb +15 -2
  470. data/spec/integration/resource/catalog_spec.rb +1 -1
  471. data/spec/integration/resource/type_collection_spec.rb +3 -4
  472. data/spec/integration/ssl/autosign_spec.rb +1 -1
  473. data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
  474. data/spec/integration/ssl/host_spec.rb +1 -1
  475. data/spec/integration/transaction_spec.rb +13 -13
  476. data/spec/integration/type/exec_spec.rb +2 -2
  477. data/spec/integration/type/file_spec.rb +114 -41
  478. data/spec/integration/type/nagios_spec.rb +80 -0
  479. data/spec/integration/type/tidy_spec.rb +2 -2
  480. data/spec/integration/util/execution_spec.rb +17 -0
  481. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  482. data/spec/integration/util/settings_spec.rb +1 -1
  483. data/spec/integration/util/windows/security_spec.rb +27 -2
  484. data/spec/lib/matchers/include.rb +27 -0
  485. data/spec/lib/matchers/include_spec.rb +32 -0
  486. data/spec/lib/matchers/json.rb +135 -79
  487. data/spec/lib/matchers/match_tokens2.rb +74 -0
  488. data/spec/lib/matchers/resource.rb +35 -0
  489. data/spec/lib/puppet/indirector/indirector_testing/memory.rb +7 -0
  490. data/spec/lib/puppet/indirector/indirector_testing/msgpack.rb +6 -0
  491. data/spec/lib/puppet/indirector_testing.rb +12 -2
  492. data/spec/lib/puppet_spec/files.rb +1 -0
  493. data/spec/lib/puppet_spec/matchers.rb +5 -0
  494. data/spec/lib/puppet_spec/modules.rb +1 -1
  495. data/spec/lib/puppet_spec/scope.rb +14 -0
  496. data/spec/shared_behaviours/file_server_terminus.rb +2 -2
  497. data/spec/spec_helper.rb +47 -17
  498. data/spec/unit/agent_spec.rb +8 -1
  499. data/spec/unit/application/agent_spec.rb +5 -4
  500. data/spec/unit/application/apply_spec.rb +34 -15
  501. data/spec/unit/application/device_spec.rb +27 -32
  502. data/spec/unit/application/doc_spec.rb +4 -4
  503. data/spec/unit/application/filebucket_spec.rb +1 -1
  504. data/spec/unit/application/master_spec.rb +2 -2
  505. data/spec/unit/application_spec.rb +1 -1
  506. data/spec/unit/configurer/downloader_spec.rb +1 -1
  507. data/spec/unit/configurer/fact_handler_spec.rb +5 -16
  508. data/spec/unit/configurer_spec.rb +2 -2
  509. data/spec/unit/confine/exists_spec.rb +5 -5
  510. data/spec/unit/context/trusted_information_spec.rb +124 -0
  511. data/spec/unit/context_spec.rb +74 -0
  512. data/spec/unit/environments_spec.rb +126 -0
  513. data/spec/unit/face/config_spec.rb +31 -16
  514. data/spec/unit/face/module/build_spec.rb +1 -0
  515. data/spec/unit/face/module/install_spec.rb +21 -104
  516. data/spec/unit/face/module/list_spec.rb +52 -36
  517. data/spec/unit/face/module/uninstall_spec.rb +18 -25
  518. data/spec/unit/face/parser_spec.rb +39 -23
  519. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  520. data/spec/unit/file_serving/base_spec.rb +9 -13
  521. data/spec/unit/file_serving/configuration/parser_spec.rb +8 -2
  522. data/spec/unit/file_serving/configuration_spec.rb +7 -7
  523. data/spec/unit/file_serving/content_spec.rb +7 -12
  524. data/spec/unit/file_serving/fileset_spec.rb +49 -53
  525. data/spec/unit/file_serving/metadata_spec.rb +83 -32
  526. data/spec/unit/file_serving/mount/file_spec.rb +10 -10
  527. data/spec/unit/file_system/tempfile_spec.rb +3 -3
  528. data/spec/unit/file_system_spec.rb +508 -0
  529. data/spec/unit/forge/errors_spec.rb +1 -1
  530. data/spec/unit/forge/repository_spec.rb +1 -3
  531. data/spec/unit/hiera/scope_spec.rb +6 -2
  532. data/spec/unit/hiera_puppet_spec.rb +13 -6
  533. data/spec/unit/indirector/catalog/msgpack_spec.rb +12 -0
  534. data/spec/unit/indirector/catalog/static_compiler_spec.rb +42 -11
  535. data/spec/unit/indirector/direct_file_server_spec.rb +6 -6
  536. data/spec/unit/indirector/facts/facter_spec.rb +5 -5
  537. data/spec/unit/indirector/file_bucket_file/file_spec.rb +4 -4
  538. data/spec/unit/indirector/file_metadata/file_spec.rb +2 -2
  539. data/spec/unit/indirector/file_server_spec.rb +4 -4
  540. data/spec/unit/indirector/json_spec.rb +6 -6
  541. data/spec/unit/indirector/key/file_spec.rb +8 -8
  542. data/spec/unit/indirector/msgpack_spec.rb +191 -0
  543. data/spec/unit/indirector/node/active_record_spec.rb +1 -1
  544. data/spec/unit/indirector/node/ldap_spec.rb +16 -7
  545. data/spec/unit/indirector/node/msgpack_spec.rb +24 -0
  546. data/spec/unit/indirector/node/plain_spec.rb +1 -1
  547. data/spec/unit/indirector/queue_spec.rb +1 -1
  548. data/spec/unit/indirector/report/msgpack_spec.rb +28 -0
  549. data/spec/unit/indirector/request_spec.rb +16 -8
  550. data/spec/unit/indirector/rest_spec.rb +0 -4
  551. data/spec/unit/indirector/ssl_file_spec.rb +12 -11
  552. data/spec/unit/indirector/yaml_spec.rb +4 -4
  553. data/spec/unit/man_spec.rb +32 -0
  554. data/spec/unit/module_spec.rb +60 -46
  555. data/spec/unit/module_tool/applications/checksummer_spec.rb +1 -1
  556. data/spec/unit/module_tool/applications/installer_spec.rb +53 -16
  557. data/spec/unit/module_tool/applications/uninstaller_spec.rb +26 -25
  558. data/spec/unit/module_tool/tar_spec.rb +1 -1
  559. data/spec/unit/module_tool_spec.rb +17 -90
  560. data/spec/unit/network/authconfig_spec.rb +3 -4
  561. data/spec/unit/network/authentication_spec.rb +20 -6
  562. data/spec/unit/network/authorization_spec.rb +11 -1
  563. data/spec/unit/network/formats_spec.rb +32 -9
  564. data/spec/unit/network/http/api/v1_spec.rb +365 -62
  565. data/spec/unit/network/http/api/v2/authorization_spec.rb +57 -0
  566. data/spec/unit/network/http/api/v2/environments_spec.rb +42 -0
  567. data/spec/unit/network/http/api/v2_spec.rb +14 -0
  568. data/spec/unit/network/http/connection_spec.rb +39 -5
  569. data/spec/unit/network/http/error_spec.rb +30 -0
  570. data/spec/unit/network/http/handler_spec.rb +69 -419
  571. data/spec/unit/network/http/rack/rest_spec.rb +20 -28
  572. data/spec/unit/network/http/route_spec.rb +75 -0
  573. data/spec/unit/network/http/webrick/rest_spec.rb +21 -58
  574. data/spec/unit/network/http_pool_spec.rb +3 -3
  575. data/spec/unit/network/rights_spec.rb +2 -2
  576. data/spec/unit/node/environment_spec.rb +108 -89
  577. data/spec/unit/node/facts_spec.rb +5 -12
  578. data/spec/unit/node_spec.rb +22 -22
  579. data/spec/unit/parser/ast/collection_spec.rb +1 -1
  580. data/spec/unit/parser/ast/leaf_spec.rb +2 -0
  581. data/spec/unit/parser/ast/resource_spec.rb +1 -1
  582. data/spec/unit/parser/compiler_spec.rb +5 -3
  583. data/spec/unit/parser/files_spec.rb +40 -50
  584. data/spec/unit/parser/functions/defined_spec.rb +80 -18
  585. data/spec/unit/parser/functions/epp_spec.rb +88 -0
  586. data/spec/unit/parser/functions/fqdn_rand_spec.rb +4 -1
  587. data/spec/unit/parser/functions/generate_spec.rb +6 -2
  588. data/spec/unit/parser/functions/hiera_array_spec.rb +5 -2
  589. data/spec/unit/parser/functions/hiera_hash_spec.rb +4 -1
  590. data/spec/unit/parser/functions/hiera_include_spec.rb +6 -3
  591. data/spec/unit/parser/functions/hiera_spec.rb +5 -2
  592. data/spec/unit/parser/functions/include_spec.rb +0 -1
  593. data/spec/unit/parser/functions/inline_epp_spec.rb +82 -0
  594. data/spec/unit/parser/functions/lookup_spec.rb +66 -16
  595. data/spec/unit/parser/functions_spec.rb +25 -91
  596. data/spec/unit/parser/lexer_spec.rb +1 -1
  597. data/spec/unit/parser/methods/filter_spec.rb +56 -0
  598. data/spec/unit/parser/methods/map_spec.rb +94 -5
  599. data/spec/unit/parser/methods/reduce_spec.rb +10 -0
  600. data/spec/unit/parser/methods/shared.rb +2 -18
  601. data/spec/unit/parser/methods/slice_spec.rb +39 -1
  602. data/spec/unit/parser/parser_spec.rb +14 -10
  603. data/spec/unit/parser/resource_spec.rb +3 -9
  604. data/spec/unit/parser/scope_spec.rb +81 -78
  605. data/spec/unit/parser/type_loader_spec.rb +0 -4
  606. data/spec/unit/pops/benchmark_spec.rb +142 -0
  607. data/spec/unit/pops/binder/binder_spec.rb +15 -34
  608. data/spec/unit/pops/binder/bindings_checker_spec.rb +0 -41
  609. data/spec/unit/pops/binder/bindings_composer_spec.rb +6 -31
  610. data/spec/unit/pops/binder/config/binder_config_spec.rb +5 -18
  611. data/spec/unit/pops/binder/injector_spec.rb +76 -81
  612. data/spec/unit/pops/evaluator/access_ops_spec.rb +376 -0
  613. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +77 -0
  614. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +103 -0
  615. data/spec/unit/pops/evaluator/collections_ops_spec.rb +111 -0
  616. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +256 -0
  617. data/spec/unit/pops/evaluator/conditionals_spec.rb +190 -0
  618. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1045 -0
  619. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +75 -0
  620. data/spec/unit/pops/evaluator/logical_ops_spec.rb +90 -0
  621. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +44 -0
  622. data/spec/unit/pops/evaluator/variables_spec.rb +194 -0
  623. data/spec/unit/pops/factory_spec.rb +6 -29
  624. data/spec/unit/pops/issues_spec.rb +1 -1
  625. data/spec/unit/pops/model/ast_transformer_spec.rb +6 -9
  626. data/spec/unit/pops/model/model_spec.rb +2 -2
  627. data/spec/unit/pops/parser/epp_parser_spec.rb +86 -0
  628. data/spec/unit/pops/parser/evaluating_parser_spec.rb +4 -2
  629. data/spec/unit/pops/parser/lexer2_spec.rb +428 -0
  630. data/spec/unit/pops/parser/lexer_spec.rb +25 -86
  631. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +29 -4
  632. data/spec/unit/pops/parser/parse_calls_spec.rb +10 -6
  633. data/spec/unit/pops/parser/parse_conditionals_spec.rb +0 -9
  634. data/spec/unit/pops/parser/parse_containers_spec.rb +43 -12
  635. data/spec/unit/pops/parser/parse_heredoc_spec.rb +73 -0
  636. data/spec/unit/pops/parser/parse_resource_spec.rb +14 -0
  637. data/spec/unit/pops/parser/parser_spec.rb +3 -1
  638. data/spec/unit/pops/transformer/transform_basic_expressions_spec.rb +4 -4
  639. data/spec/unit/pops/transformer/transform_calls_spec.rb +41 -6
  640. data/spec/unit/pops/transformer/transform_conditionals_spec.rb +0 -9
  641. data/spec/unit/pops/transformer/transform_containers_spec.rb +12 -4
  642. data/spec/unit/pops/types/enumeration_spec.rb +50 -0
  643. data/spec/unit/pops/types/type_calculator_spec.rb +1171 -196
  644. data/spec/unit/pops/types/type_factory_spec.rb +108 -4
  645. data/spec/unit/pops/types/type_parser_spec.rb +114 -10
  646. data/spec/unit/pops/validator/validator_spec.rb +36 -1
  647. data/spec/unit/provider/augeas/augeas_spec.rb +39 -16
  648. data/spec/unit/provider/cron/parsed_spec.rb +27 -31
  649. data/spec/unit/provider/file/posix_spec.rb +2 -2
  650. data/spec/unit/provider/group/windows_adsi_spec.rb +1 -0
  651. data/spec/unit/provider/mount_spec.rb +12 -1
  652. data/spec/unit/provider/nameservice/directoryservice_spec.rb +3 -3
  653. data/spec/unit/provider/package/apt_spec.rb +1 -1
  654. data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
  655. data/spec/unit/provider/package/gem_spec.rb +12 -0
  656. data/spec/unit/provider/package/msi_spec.rb +4 -0
  657. data/spec/unit/provider/package/openbsd_spec.rb +10 -10
  658. data/spec/unit/provider/package/pacman_spec.rb +36 -7
  659. data/spec/unit/provider/package/pkgin_spec.rb +57 -55
  660. data/spec/unit/provider/package/rpm_spec.rb +51 -6
  661. data/spec/unit/provider/service/base_spec.rb +4 -4
  662. data/spec/unit/provider/service/daemontools_spec.rb +8 -13
  663. data/spec/unit/provider/service/freebsd_spec.rb +3 -3
  664. data/spec/unit/provider/service/gentoo_spec.rb +24 -24
  665. data/spec/unit/provider/service/init_spec.rb +15 -15
  666. data/spec/unit/provider/service/openbsd_spec.rb +16 -16
  667. data/spec/unit/provider/service/openrc_spec.rb +20 -20
  668. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  669. data/spec/unit/provider/service/runit_spec.rb +5 -8
  670. data/spec/unit/provider/service/src_spec.rb +4 -4
  671. data/spec/unit/provider/service/systemd_spec.rb +24 -14
  672. data/spec/unit/provider/service/upstart_spec.rb +12 -4
  673. data/spec/unit/provider/service/windows_spec.rb +1 -1
  674. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +21 -23
  675. data/spec/unit/provider/user/directoryservice_spec.rb +7 -7
  676. data/spec/unit/provider/user/useradd_spec.rb +43 -15
  677. data/spec/unit/provider/user/windows_adsi_spec.rb +1 -0
  678. data/spec/unit/provider/yumrepo/inifile_spec.rb +105 -0
  679. data/spec/unit/provider/zone/solaris_spec.rb +1 -1
  680. data/spec/unit/provider_spec.rb +120 -62
  681. data/spec/unit/rails/host_spec.rb +1 -1
  682. data/spec/unit/rails/param_value_spec.rb +4 -0
  683. data/spec/unit/relationship_spec.rb +4 -4
  684. data/spec/unit/reports/http_spec.rb +14 -3
  685. data/spec/unit/reports/rrdgraph_spec.rb +0 -1
  686. data/spec/unit/reports/store_spec.rb +2 -2
  687. data/spec/unit/resource/catalog_spec.rb +17 -29
  688. data/spec/unit/resource/status_spec.rb +1 -1
  689. data/spec/unit/resource/type_collection_spec.rb +28 -47
  690. data/spec/unit/resource/type_spec.rb +12 -23
  691. data/spec/unit/resource_spec.rb +54 -93
  692. data/spec/unit/run_spec.rb +3 -3
  693. data/spec/unit/settings/autosign_setting_spec.rb +1 -1
  694. data/spec/unit/settings/config_file_spec.rb +68 -15
  695. data/spec/unit/settings/file_setting_spec.rb +2 -2
  696. data/spec/unit/settings/ini_file_spec.rb +184 -0
  697. data/spec/unit/settings_spec.rb +137 -79
  698. data/spec/unit/ssl/certificate_authority/interface_spec.rb +3 -1
  699. data/spec/unit/ssl/certificate_authority_spec.rb +11 -9
  700. data/spec/unit/ssl/certificate_factory_spec.rb +19 -4
  701. data/spec/unit/ssl/certificate_request_attributes_spec.rb +1 -1
  702. data/spec/unit/ssl/certificate_revocation_list_spec.rb +101 -72
  703. data/spec/unit/ssl/host_spec.rb +8 -20
  704. data/spec/unit/ssl/inventory_spec.rb +2 -2
  705. data/spec/unit/ssl/key_spec.rb +4 -4
  706. data/spec/unit/status_spec.rb +6 -4
  707. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -11
  708. data/spec/unit/transaction/event_spec.rb +2 -2
  709. data/spec/unit/transaction/report_spec.rb +24 -15
  710. data/spec/unit/transaction/resource_harness_spec.rb +1 -1
  711. data/spec/unit/type/cron_spec.rb +39 -1
  712. data/spec/unit/type/file/content_spec.rb +4 -5
  713. data/spec/unit/type/file/ctime_spec.rb +1 -1
  714. data/spec/unit/type/file/mode_spec.rb +5 -4
  715. data/spec/unit/type/file/mtime_spec.rb +1 -1
  716. data/spec/unit/type/file/source_spec.rb +30 -7
  717. data/spec/unit/type/file_spec.rb +8 -8
  718. data/spec/unit/type/k5login_spec.rb +3 -3
  719. data/spec/unit/type/nagios_spec.rb +6 -0
  720. data/spec/unit/type/package/package_settings_spec.rb +135 -0
  721. data/spec/unit/type/package_spec.rb +13 -1
  722. data/spec/unit/type/resources_spec.rb +155 -0
  723. data/spec/unit/type/service_spec.rb +3 -3
  724. data/spec/unit/type/ssh_authorized_key_spec.rb +96 -93
  725. data/spec/unit/type/sshkey_spec.rb +39 -30
  726. data/spec/unit/type/tidy_spec.rb +19 -12
  727. data/spec/unit/type/user_spec.rb +47 -2
  728. data/spec/unit/type/whit_spec.rb +2 -2
  729. data/spec/unit/type/yumrepo_spec.rb +32 -177
  730. data/spec/unit/type/zone_spec.rb +2 -2
  731. data/spec/unit/type_spec.rb +11 -0
  732. data/spec/unit/util/adsi_spec.rb +48 -1
  733. data/spec/unit/util/autoload_spec.rb +24 -39
  734. data/spec/unit/util/backups_spec.rb +25 -28
  735. data/spec/unit/util/checksums_spec.rb +1 -3
  736. data/spec/unit/util/colors_spec.rb +14 -0
  737. data/spec/unit/util/docs_spec.rb +9 -0
  738. data/spec/unit/util/execution_spec.rb +1 -1
  739. data/spec/unit/util/filetype_spec.rb +7 -7
  740. data/spec/unit/util/instrumentation/data_spec.rb +3 -1
  741. data/spec/unit/util/instrumentation/indirection_probe_spec.rb +2 -0
  742. data/spec/unit/util/instrumentation/listener_spec.rb +3 -2
  743. data/spec/unit/util/json_lockfile_spec.rb +25 -4
  744. data/spec/unit/util/lockfile_spec.rb +49 -7
  745. data/spec/unit/util/log/destinations_spec.rb +1 -0
  746. data/spec/unit/util/log_spec.rb +1 -1
  747. data/spec/unit/util/metric_spec.rb +1 -1
  748. data/spec/unit/util/pidlock_spec.rb +6 -6
  749. data/spec/unit/util/pson_spec.rb +2 -2
  750. data/spec/unit/util/rdoc/parser_spec.rb +32 -29
  751. data/spec/unit/util/resource_template_spec.rb +3 -3
  752. data/spec/unit/util/selinux_spec.rb +5 -5
  753. data/spec/unit/util/storage_spec.rb +4 -4
  754. data/spec/unit/util/tag_set_spec.rb +1 -1
  755. data/spec/unit/util/watcher_spec.rb +1 -4
  756. data/spec/unit/util/yaml_spec.rb +2 -2
  757. data/spec/unit/util_spec.rb +7 -7
  758. data/tasks/benchmark.rake +0 -1
  759. data/tasks/parallel.rake +408 -0
  760. data/tasks/yard.rake +59 -0
  761. metadata +2889 -2782
  762. checksums.yaml +0 -7
  763. data/README_DEVELOPER.md +0 -809
  764. data/lib/puppet/file_system/file.rb +0 -271
  765. data/lib/puppet/network/http/rack/httphandler.rb +0 -13
  766. data/lib/puppet/pops/binder/hiera2.rb +0 -10
  767. data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +0 -148
  768. data/lib/puppet/pops/binder/hiera2/config.rb +0 -69
  769. data/lib/puppet/pops/binder/hiera2/config_checker.rb +0 -68
  770. data/lib/puppet/pops/binder/hiera2/diagnostic_producer.rb +0 -36
  771. data/lib/puppet/pops/binder/hiera2/issues.rb +0 -67
  772. data/lib/puppet/pops/binder/hiera2/json_backend.rb +0 -18
  773. data/lib/puppet/pops/binder/hiera2/yaml_backend.rb +0 -21
  774. data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +0 -67
  775. data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +0 -92
  776. data/lib/puppet/pops/parser/grammar.ra +0 -746
  777. data/lib/puppet/provider/port/parsed.rb +0 -173
  778. data/lib/puppet/type/port.rb +0 -119
  779. data/lib/puppetx/puppet/hiera2_backend.rb +0 -31
  780. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/binder_config.yaml +0 -18
  781. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/hiera.yaml +0 -8
  782. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/common.yaml +0 -1
  783. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/hiera.yaml +0 -10
  784. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/common.yaml +0 -1
  785. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/hiera.yaml +0 -11
  786. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/localhost.yaml +0 -1
  787. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/common.yaml +0 -3
  788. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/hiera.yaml +0 -13
  789. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppet/bindings/awesome/default.rb +0 -4
  790. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_backend.rb +0 -11
  791. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/localhost.yaml +0 -1
  792. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/common.yaml +0 -3
  793. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/hiera_config.yaml +0 -9
  794. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/common.yaml +0 -2
  795. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/hiera.yaml +0 -11
  796. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/hiera.yaml +0 -9
  797. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.json +0 -9
  798. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.yaml +0 -5
  799. data/spec/fixtures/unit/pops/binder/hiera2/config/bad_syntax/hiera.yaml +0 -10
  800. data/spec/fixtures/unit/pops/binder/hiera2/config/malformed_hierarchy/hiera.yaml +0 -8
  801. data/spec/fixtures/unit/pops/binder/hiera2/config/missing/foo.txt +0 -1
  802. data/spec/fixtures/unit/pops/binder/hiera2/config/no_backends/hiera.yaml +0 -7
  803. data/spec/fixtures/unit/pops/binder/hiera2/config/no_hierarchy/hiera.yaml +0 -4
  804. data/spec/fixtures/unit/pops/binder/hiera2/config/not_a_hash/hiera.yaml +0 -2
  805. data/spec/fixtures/unit/pops/binder/hiera2/config/ok/hiera.yaml +0 -8
  806. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/invalid/common.yaml +0 -1
  807. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/ok/common.yaml +0 -2
  808. data/spec/unit/file_system/file_spec.rb +0 -486
  809. data/spec/unit/pops/binder/hiera2/bindings_provider_spec.rb +0 -74
  810. data/spec/unit/pops/binder/hiera2/config_spec.rb +0 -61
  811. data/spec/unit/pops/binder/hiera2/yaml_backend_spec.rb +0 -33
@@ -40,6 +40,10 @@ describe Puppet::Type.type(:cron).provider(:crontab), '(integration)', :unless =
40
40
  resource.expects(:err).never
41
41
  catalog.add_resource(resource)
42
42
  end
43
+
44
+ # the resources are not properly contained and generated resources
45
+ # will end up with dangling edges without this stubbing:
46
+ catalog.stubs(:container_of).returns resources[0]
43
47
  catalog.apply
44
48
  end
45
49
 
@@ -48,6 +52,23 @@ describe Puppet::Type.type(:cron).provider(:crontab), '(integration)', :unless =
48
52
  end
49
53
 
50
54
  describe "when managing a cron entry" do
55
+
56
+ it "should be able to purge unmanaged entries" do
57
+ resource = Puppet::Type.type(:cron).new(
58
+ :name => 'only managed entry',
59
+ :ensure => :present,
60
+ :command => '/bin/true',
61
+ :target => crontab_user1,
62
+ :user => crontab_user1
63
+ )
64
+ resources = Puppet::Type.type(:resources).new(
65
+ :name => 'cron',
66
+ :purge => 'true'
67
+ )
68
+ run_in_catalog(resource, resources)
69
+ expect_output('purged')
70
+ end
71
+
51
72
  describe "with ensure absent" do
52
73
  it "should do nothing if entry already absent" do
53
74
  resource = Puppet::Type.type(:cron).new(
@@ -35,9 +35,22 @@ describe "mount provider (integration)", :unless => Puppet.features.microsoft_wi
35
35
  else
36
36
  command.length.should == 4
37
37
  command[1].should == '-o'
38
+
39
+ # update is a special option, used on bsd's
40
+ # strip it out and track as a local bool here
41
+ update = false
42
+ tmp_options = command[2].split(",")
43
+
44
+ if tmp_options.include?("update")
45
+ update = true
46
+ tmp_options.delete("update")
47
+ end
48
+ @current_options = tmp_options.join(",")
49
+
50
+ if !update
51
+ @mounted.should == false # verify that we don't try to call "mount" redundantly
52
+ end
38
53
  command[3].should == '/Volumes/foo_disk'
39
- @mounted.should == false # verify that we don't try to call "mount" redundantly
40
- @current_options = command[2]
41
54
  @current_device = check_fstab(true)
42
55
  @mounted = true
43
56
  ''
@@ -21,7 +21,7 @@ describe Puppet::Resource::Catalog do
21
21
  terminus = Puppet::Resource::Catalog.indirection.terminus(:yaml)
22
22
  terminus.expects(:path).with("me").returns "/my/yaml/file"
23
23
 
24
- Puppet::FileSystem::File.expects(:exist?).with("/my/yaml/file").returns false
24
+ Puppet::FileSystem.expects(:exist?).with("/my/yaml/file").returns false
25
25
  Puppet::Resource::Catalog.indirection.find("me").should be_nil
26
26
  end
27
27
 
@@ -10,11 +10,10 @@ describe Puppet::Resource::TypeCollection do
10
10
 
11
11
  before do
12
12
  @dir = tmpfile("autoload_testing")
13
- Puppet[:modulepath] = @dir
14
-
15
13
  FileUtils.mkdir_p @dir
16
- @code = Puppet::Resource::TypeCollection.new("env")
17
- Puppet::Node::Environment.new("env").stubs(:known_resource_types).returns @code
14
+
15
+ environment = Puppet::Node::Environment.create(:env, [@dir], '')
16
+ @code = environment.known_resource_types
18
17
  end
19
18
 
20
19
  # Setup a module.
@@ -39,7 +39,7 @@ describe "autosigning" do
39
39
 
40
40
  context "when the csr_attributes file is valid, but empty" do
41
41
  it "generates a CSR when the file is empty" do
42
- Puppet::FileSystem::File.new(Puppet.settings[:csr_attributes]).touch
42
+ Puppet::FileSystem.touch(Puppet.settings[:csr_attributes])
43
43
 
44
44
  host.generate_certificate_request
45
45
  end
@@ -29,7 +29,7 @@ describe Puppet::SSL::CertificateRevocationList do
29
29
  it "should be able to read in written out CRLs with no revoked certificates" do
30
30
  ca = Puppet::SSL::CertificateAuthority.new
31
31
 
32
- raise "CRL not created" unless Puppet::FileSystem::File.exist?(Puppet[:hostcrl])
32
+ raise "CRL not created" unless Puppet::FileSystem.exist?(Puppet[:hostcrl])
33
33
 
34
34
  crl = Puppet::SSL::CertificateRevocationList.new("crl_int_testing")
35
35
  crl.read(Puppet[:hostcrl])
@@ -70,7 +70,7 @@ describe Puppet::SSL::Host do
70
70
  @ca = Puppet::SSL::Host.new(Puppet::SSL::Host.ca_name)
71
71
  @ca.generate_key
72
72
 
73
- Puppet::FileSystem::File.exist?(File.join(Puppet[:privatekeydir], "ca.pem")).should be_false
73
+ Puppet::FileSystem.exist?(File.join(Puppet[:privatekeydir], "ca.pem")).should be_false
74
74
  end
75
75
  end
76
76
 
@@ -64,7 +64,7 @@ describe Puppet::Transaction do
64
64
  catalog.add_resource resource
65
65
 
66
66
  catalog.apply
67
- Puppet::FileSystem::File.exist?(path).should be_true
67
+ Puppet::FileSystem.exist?(path).should be_true
68
68
  end
69
69
 
70
70
  it "should not apply virtual exported resources" do
@@ -189,8 +189,8 @@ describe Puppet::Transaction do
189
189
 
190
190
  catalog = mk_catalog(file, exec1, exec2)
191
191
  catalog.apply
192
- Puppet::FileSystem::File.exist?(file1).should be_true
193
- Puppet::FileSystem::File.exist?(file2).should be_true
192
+ Puppet::FileSystem.exist?(file1).should be_true
193
+ Puppet::FileSystem.exist?(file2).should be_true
194
194
  end
195
195
 
196
196
  it "should not let one failed refresh result in other refreshes failing" do
@@ -223,7 +223,7 @@ describe Puppet::Transaction do
223
223
 
224
224
  catalog = mk_catalog(file, exec1, exec2)
225
225
  catalog.apply
226
- Puppet::FileSystem::File.exist?(newfile).should be_true
226
+ Puppet::FileSystem.exist?(newfile).should be_true
227
227
  end
228
228
 
229
229
  it "should still trigger skipped resources" do
@@ -251,18 +251,18 @@ describe Puppet::Transaction do
251
251
 
252
252
  # Run it once
253
253
  catalog.apply
254
- Puppet::FileSystem::File.exist?(fname).should be_true
254
+ Puppet::FileSystem.exist?(fname).should be_true
255
255
 
256
256
  # Now remove it, so it can get created again
257
- Puppet::FileSystem::File.unlink(fname)
257
+ Puppet::FileSystem.unlink(fname)
258
258
 
259
259
  file[:content] = "some content"
260
260
 
261
261
  catalog.apply
262
- Puppet::FileSystem::File.exist?(fname).should be_true
262
+ Puppet::FileSystem.exist?(fname).should be_true
263
263
 
264
264
  # Now remove it, so it can get created again
265
- Puppet::FileSystem::File.unlink(fname)
265
+ Puppet::FileSystem.unlink(fname)
266
266
 
267
267
  # And tag our exec
268
268
  exec.tag("testrun")
@@ -275,7 +275,7 @@ describe Puppet::Transaction do
275
275
  file[:content] = "totally different content"
276
276
 
277
277
  catalog.apply
278
- Puppet::FileSystem::File.exist?(fname).should be_true
278
+ Puppet::FileSystem.exist?(fname).should be_true
279
279
  end
280
280
 
281
281
  it "should not attempt to evaluate resources with failed dependencies" do
@@ -302,8 +302,8 @@ describe Puppet::Transaction do
302
302
  catalog = mk_catalog(exec, file1, file2)
303
303
  catalog.apply
304
304
 
305
- Puppet::FileSystem::File.exist?(file1[:path]).should be_false
306
- Puppet::FileSystem::File.exist?(file2[:path]).should be_false
305
+ Puppet::FileSystem.exist?(file1[:path]).should be_false
306
+ Puppet::FileSystem.exist?(file2[:path]).should be_false
307
307
  end
308
308
 
309
309
  it "should not trigger subscribing resources on failure" do
@@ -328,8 +328,8 @@ describe Puppet::Transaction do
328
328
  catalog = mk_catalog(exec, create_file1, create_file2)
329
329
  catalog.apply
330
330
 
331
- Puppet::FileSystem::File.exist?(file1).should be_false
332
- Puppet::FileSystem::File.exist?(file2).should be_false
331
+ Puppet::FileSystem.exist?(file1).should be_false
332
+ Puppet::FileSystem.exist?(file2).should be_false
333
333
  end
334
334
 
335
335
  # #801 -- resources only checked in noop should be rescheduled immediately.
@@ -33,7 +33,7 @@ describe Puppet::Type.type(:exec) do
33
33
  catalog.add_resource exec
34
34
  catalog.apply
35
35
 
36
- Puppet::FileSystem::File.exist?(path).should be_false
36
+ Puppet::FileSystem.exist?(path).should be_false
37
37
  end
38
38
 
39
39
  it "should execute the command if onlyif returns zero" do
@@ -72,6 +72,6 @@ describe Puppet::Type.type(:exec) do
72
72
  catalog.add_resource exec
73
73
  catalog.apply
74
74
 
75
- Puppet::FileSystem::File.exist?(path).should be_false
75
+ Puppet::FileSystem.exist?(path).should be_false
76
76
  end
77
77
  end
@@ -34,15 +34,15 @@ describe Puppet::Type.type(:file) do
34
34
  end
35
35
 
36
36
  def get_mode(file)
37
- Puppet::FileSystem::File.new(file).lstat.mode
37
+ Puppet::FileSystem.lstat(file).mode
38
38
  end
39
39
 
40
40
  def get_owner(file)
41
- Puppet::FileSystem::File.new(file).lstat.uid
41
+ Puppet::FileSystem.lstat(file).uid
42
42
  end
43
43
 
44
44
  def get_group(file)
45
- Puppet::FileSystem::File.new(file).lstat.gid
45
+ Puppet::FileSystem.lstat(file).gid
46
46
  end
47
47
  else
48
48
  class SecurityHelper
@@ -83,7 +83,7 @@ describe Puppet::Type.type(:file) do
83
83
  status = catalog.apply.report.resource_statuses["File[#{source}]"]
84
84
  status.should_not be_failed
85
85
  status.should_not be_changed
86
- Puppet::FileSystem::File.exist?(source).should be_false
86
+ Puppet::FileSystem.exist?(source).should be_false
87
87
  end
88
88
 
89
89
  describe "when ensure is absent" do
@@ -92,14 +92,14 @@ describe Puppet::Type.type(:file) do
92
92
  catalog.add_resource(described_class.new(:path => path, :ensure => :absent, :backup => :false))
93
93
  report = catalog.apply.report
94
94
  report.resource_statuses["File[#{path}]"].should_not be_failed
95
- Puppet::FileSystem::File.exist?(path).should be_false
95
+ Puppet::FileSystem.exist?(path).should be_false
96
96
  end
97
97
 
98
98
  it "should do nothing if file is not present" do
99
99
  catalog.add_resource(described_class.new(:path => path, :ensure => :absent, :backup => :false))
100
100
  report = catalog.apply.report
101
101
  report.resource_statuses["File[#{path}]"].should_not be_failed
102
- Puppet::FileSystem::File.exist?(path).should be_false
102
+ Puppet::FileSystem.exist?(path).should be_false
103
103
  end
104
104
 
105
105
  # issue #14599
@@ -225,7 +225,7 @@ describe Puppet::Type.type(:file) do
225
225
  FileUtils.touch(link_target)
226
226
  File.chmod(0444, link_target)
227
227
 
228
- Puppet::FileSystem::File.new(link_target).symlink(link)
228
+ Puppet::FileSystem.symlink(link_target, link)
229
229
  end
230
230
 
231
231
  it "should not set the executable bit on the link nor the target" do
@@ -233,8 +233,8 @@ describe Puppet::Type.type(:file) do
233
233
 
234
234
  catalog.apply
235
235
 
236
- (Puppet::FileSystem::File.new(link).stat.mode & 07777) == 0666
237
- (Puppet::FileSystem::File.new(link_target).lstat.mode & 07777) == 0444
236
+ (Puppet::FileSystem.stat(link).mode & 07777) == 0666
237
+ (Puppet::FileSystem.lstat(link_target).mode & 07777) == 0444
238
238
  end
239
239
 
240
240
  it "should ignore dangling symlinks (#6856)" do
@@ -243,7 +243,7 @@ describe Puppet::Type.type(:file) do
243
243
  catalog.add_resource described_class.new(:path => link, :ensure => :link, :mode => 0666, :target => link_target, :links => :manage)
244
244
  catalog.apply
245
245
 
246
- Puppet::FileSystem::File.exist?(link).should be_false
246
+ Puppet::FileSystem.exist?(link).should be_false
247
247
  end
248
248
 
249
249
  it "should create a link to the target if ensure is omitted" do
@@ -251,9 +251,9 @@ describe Puppet::Type.type(:file) do
251
251
  catalog.add_resource described_class.new(:path => link, :target => link_target)
252
252
  catalog.apply
253
253
 
254
- Puppet::FileSystem::File.exist?(link).should be_true
255
- Puppet::FileSystem::File.new(link).lstat.ftype.should == 'link'
256
- Puppet::FileSystem::File.new(link).readlink().should == link_target
254
+ Puppet::FileSystem.exist?(link).should be_true
255
+ Puppet::FileSystem.lstat(link).ftype.should == 'link'
256
+ Puppet::FileSystem.readlink(link).should == link_target
257
257
  end
258
258
  end
259
259
 
@@ -262,7 +262,7 @@ describe Puppet::Type.type(:file) do
262
262
  target = tmpfile('dangling')
263
263
 
264
264
  FileUtils.touch(target)
265
- Puppet::FileSystem::File.new(target).symlink(link)
265
+ Puppet::FileSystem.symlink(target, link)
266
266
  File.delete(target)
267
267
 
268
268
  catalog.add_resource described_class.new(:path => path, :source => link, :mode => 0600, :links => :follow)
@@ -275,7 +275,7 @@ describe Puppet::Type.type(:file) do
275
275
  before :each do
276
276
  File.chmod(0600, link_target)
277
277
 
278
- Puppet::FileSystem::File.new(link_target).symlink(link)
278
+ Puppet::FileSystem.symlink(link_target, link)
279
279
  end
280
280
 
281
281
  after :each do
@@ -338,7 +338,7 @@ describe Puppet::Type.type(:file) do
338
338
  before :each do
339
339
  FileUtils.touch(link_target)
340
340
 
341
- Puppet::FileSystem::File.new(link_target).symlink(link)
341
+ Puppet::FileSystem.symlink(link_target, link)
342
342
  end
343
343
 
344
344
  it "should create the file, not a symlink (#2817, #10315)" do
@@ -368,8 +368,8 @@ describe Puppet::Type.type(:file) do
368
368
  File.chmod(0666, real_target)
369
369
 
370
370
  # link -> target -> real_target
371
- Puppet::FileSystem::File.new(real_target).symlink(target)
372
- Puppet::FileSystem::File.new(target).symlink(link)
371
+ Puppet::FileSystem.symlink(real_target, target)
372
+ Puppet::FileSystem.symlink(target, link)
373
373
  end
374
374
 
375
375
  after :each do
@@ -426,7 +426,7 @@ describe Puppet::Type.type(:file) do
426
426
  catalog.apply
427
427
 
428
428
  backup = file[:path] + ".bak"
429
- Puppet::FileSystem::File.exist?(backup).should be_true
429
+ Puppet::FileSystem.exist?(backup).should be_true
430
430
  File.read(backup).should == "bar\n"
431
431
  end
432
432
 
@@ -458,14 +458,14 @@ describe Puppet::Type.type(:file) do
458
458
  catalog.add_resource bucket
459
459
 
460
460
  File.open(dest1, "w") { |f| f.puts "whatever" }
461
- Puppet::FileSystem::File.new(dest1).symlink(link)
461
+ Puppet::FileSystem.symlink(dest1, link)
462
462
 
463
463
  md5 = Digest::MD5.hexdigest(File.read(file[:path]))
464
464
 
465
465
  catalog.apply
466
466
 
467
- Puppet::FileSystem::File.new(link).readlink().should == dest2
468
- Puppet::FileSystem::File.exist?(bucket[:path]).should be_false
467
+ Puppet::FileSystem.readlink(link).should == dest2
468
+ Puppet::FileSystem.exist?(bucket[:path]).should be_false
469
469
  end
470
470
 
471
471
  it "should backup directories to the local filesystem by copying the whole directory" do
@@ -587,13 +587,13 @@ describe Puppet::Type.type(:file) do
587
587
  @dirs.each do |path|
588
588
  link_path = path.sub(source, dest)
589
589
 
590
- Puppet::FileSystem::File.new(link_path).lstat.should be_directory
590
+ Puppet::FileSystem.lstat(link_path).should be_directory
591
591
  end
592
592
 
593
593
  @files.each do |path|
594
594
  link_path = path.sub(source, dest)
595
595
 
596
- Puppet::FileSystem::File.new(link_path).lstat.ftype.should == "link"
596
+ Puppet::FileSystem.lstat(link_path).ftype.should == "link"
597
597
  end
598
598
  end
599
599
 
@@ -613,13 +613,13 @@ describe Puppet::Type.type(:file) do
613
613
  @dirs.each do |path|
614
614
  newpath = path.sub(source, dest)
615
615
 
616
- Puppet::FileSystem::File.new(newpath).lstat.should be_directory
616
+ Puppet::FileSystem.lstat(newpath).should be_directory
617
617
  end
618
618
 
619
619
  @files.each do |path|
620
620
  newpath = path.sub(source, dest)
621
621
 
622
- Puppet::FileSystem::File.new(newpath).lstat.ftype.should == "file"
622
+ Puppet::FileSystem.lstat(newpath).ftype.should == "file"
623
623
  end
624
624
  end
625
625
 
@@ -682,8 +682,8 @@ describe Puppet::Type.type(:file) do
682
682
  catalog.apply
683
683
 
684
684
  File.should be_directory(path)
685
- Puppet::FileSystem::File.exist?(File.join(path, 'one')).should be_false
686
- Puppet::FileSystem::File.exist?(File.join(path, 'three', 'four')).should be_true
685
+ Puppet::FileSystem.exist?(File.join(path, 'one')).should be_false
686
+ Puppet::FileSystem.exist?(File.join(path, 'three', 'four')).should be_true
687
687
  end
688
688
 
689
689
  it "should recursively copy an empty directory" do
@@ -704,7 +704,7 @@ describe Puppet::Type.type(:file) do
704
704
  catalog.apply
705
705
 
706
706
  File.should be_directory(path)
707
- Puppet::FileSystem::File.exist?(File.join(path, 'a')).should be_false
707
+ Puppet::FileSystem.exist?(File.join(path, 'a')).should be_false
708
708
  end
709
709
 
710
710
  it "should only recurse one level" do
@@ -728,9 +728,9 @@ describe Puppet::Type.type(:file) do
728
728
 
729
729
  catalog.apply
730
730
 
731
- Puppet::FileSystem::File.exist?(File.join(path, 'a')).should be_true
732
- Puppet::FileSystem::File.exist?(File.join(path, 'a', 'b')).should be_false
733
- Puppet::FileSystem::File.exist?(File.join(path, 'z')).should be_false
731
+ Puppet::FileSystem.exist?(File.join(path, 'a')).should be_true
732
+ Puppet::FileSystem.exist?(File.join(path, 'a', 'b')).should be_false
733
+ Puppet::FileSystem.exist?(File.join(path, 'z')).should be_false
734
734
  end
735
735
  end
736
736
 
@@ -827,10 +827,10 @@ describe Puppet::Type.type(:file) do
827
827
  catalog.add_resource obj
828
828
  catalog.apply
829
829
 
830
- Puppet::FileSystem::File.exist?(File.join(path, 'a')).should be_true
831
- Puppet::FileSystem::File.exist?(File.join(path, 'a', 'b')).should be_false
832
- Puppet::FileSystem::File.exist?(File.join(path, 'z')).should be_true
833
- Puppet::FileSystem::File.exist?(File.join(path, 'z', 'y')).should be_false
830
+ Puppet::FileSystem.exist?(File.join(path, 'a')).should be_true
831
+ Puppet::FileSystem.exist?(File.join(path, 'a', 'b')).should be_false
832
+ Puppet::FileSystem.exist?(File.join(path, 'z')).should be_true
833
+ Puppet::FileSystem.exist?(File.join(path, 'z', 'y')).should be_false
834
834
  end
835
835
  end
836
836
  end
@@ -886,15 +886,16 @@ describe Puppet::Type.type(:file) do
886
886
  it "should be able to copy files with spaces in their names" do
887
887
  dest = tmpfile("destwith spaces")
888
888
  source = tmpfile_with_contents("filewith spaces", "foo")
889
- File.chmod(0755, source)
889
+
890
+ expected_mode = 0755
891
+ Puppet::FileSystem.chmod(expected_mode, source)
890
892
 
891
893
  catalog.add_resource described_class.new(:path => dest, :source => source)
892
894
 
893
895
  catalog.apply
894
896
 
895
- expected_mode = Puppet.features.microsoft_windows? ? 0644 : 0755
896
897
  File.read(dest).should == "foo"
897
- (Puppet::FileSystem::File.new(dest).stat.mode & 007777).should == expected_mode
898
+ (Puppet::FileSystem.stat(dest).mode & 007777).should == expected_mode
898
899
  end
899
900
 
900
901
  it "should be able to copy individual files even if recurse has been specified" do
@@ -946,7 +947,7 @@ describe Puppet::Type.type(:file) do
946
947
  catalog.add_resource file
947
948
  catalog.apply
948
949
 
949
- Puppet::FileSystem::File.exist?(dest).should be_false
950
+ Puppet::FileSystem.exist?(dest).should be_false
950
951
  end
951
952
 
952
953
  describe "when sourcing" do
@@ -1021,6 +1022,7 @@ describe Puppet::Type.type(:file) do
1021
1022
  end
1022
1023
 
1023
1024
  it "should provide valid default values when ACLs are not supported" do
1025
+ Puppet::Util::Windows::Security.stubs(:supports_acl?).returns(false)
1024
1026
  Puppet::Util::Windows::Security.stubs(:supports_acl?).with(source).returns false
1025
1027
 
1026
1028
  file = described_class.new(
@@ -1140,6 +1142,20 @@ describe Puppet::Type.type(:file) do
1140
1142
  system_aces.size.should == 1
1141
1143
  end
1142
1144
  end
1145
+
1146
+ describe "with :links set to :follow" do
1147
+ it "should not fail to apply" do
1148
+ # at minimal, we need an owner and/or group
1149
+ @file[:owner] = @sids[:users]
1150
+ @file[:links] = :follow
1151
+
1152
+ catalog.apply do |transaction|
1153
+ if transaction.any_failed?
1154
+ pretty_transaction_error(transaction)
1155
+ end
1156
+ end
1157
+ end
1158
+ end
1143
1159
  end
1144
1160
 
1145
1161
  describe "on directories" do
@@ -1151,6 +1167,19 @@ describe Puppet::Type.type(:file) do
1151
1167
  catalog.add_resource @directory
1152
1168
  end
1153
1169
 
1170
+ def grant_everyone_full_access(path)
1171
+ sd = Puppet::Util::Windows::Security.get_security_descriptor(path)
1172
+ sd.dacl.allow(
1173
+ 'S-1-1-0', #everyone
1174
+ Windows::File::FILE_ALL_ACCESS,
1175
+ Windows::File::OBJECT_INHERIT_ACE | Windows::File::CONTAINER_INHERIT_ACE)
1176
+ Puppet::Util::Windows::Security.set_security_descriptor(path, sd)
1177
+ end
1178
+
1179
+ after :each do
1180
+ grant_everyone_full_access(dir)
1181
+ end
1182
+
1154
1183
  describe "when source permissions are ignored" do
1155
1184
  before :each do
1156
1185
  @directory[:source_permissions] = :ignore
@@ -1233,6 +1262,20 @@ describe Puppet::Type.type(:file) do
1233
1262
  system_aces.size.should == 1
1234
1263
  end
1235
1264
  end
1265
+
1266
+ describe "with :links set to :follow" do
1267
+ it "should not fail to apply" do
1268
+ # at minimal, we need an owner and/or group
1269
+ @directory[:owner] = @sids[:users]
1270
+ @directory[:links] = :follow
1271
+
1272
+ catalog.apply do |transaction|
1273
+ if transaction.any_failed?
1274
+ pretty_transaction_error(transaction)
1275
+ end
1276
+ end
1277
+ end
1278
+ end
1236
1279
  end
1237
1280
  end
1238
1281
  end
@@ -1284,7 +1327,25 @@ describe Puppet::Type.type(:file) do
1284
1327
  end
1285
1328
 
1286
1329
  it "should purge files that are neither remote nor otherwise managed" do
1287
- Puppet::FileSystem::File.exist?(@purgee).should be_false
1330
+ Puppet::FileSystem.exist?(@purgee).should be_false
1331
+ end
1332
+ end
1333
+
1334
+ describe "when using validate_cmd" do
1335
+ it "should fail the file resource if command fails" do
1336
+ catalog.add_resource(described_class.new(:path => path, :content => "foo", :validate_cmd => "/usr/bin/env false"))
1337
+ Puppet::Util::Execution.expects(:execute).with("/usr/bin/env false", {:combine => true, :failonfail => true}).raises(Puppet::ExecutionFailure, "Failed")
1338
+ report = catalog.apply.report
1339
+ report.resource_statuses["File[#{path}]"].should be_failed
1340
+ Puppet::FileSystem.exist?(path).should be_false
1341
+ end
1342
+
1343
+ it "should succeed the file resource if command succeeds" do
1344
+ catalog.add_resource(described_class.new(:path => path, :content => "foo", :validate_cmd => "/usr/bin/env true"))
1345
+ Puppet::Util::Execution.expects(:execute).with("/usr/bin/env true", {:combine => true, :failonfail => true}).returns ''
1346
+ report = catalog.apply.report
1347
+ report.resource_statuses["File[#{path}]"].should_not be_failed
1348
+ Puppet::FileSystem.exist?(path).should be_true
1288
1349
  end
1289
1350
  end
1290
1351
 
@@ -1299,4 +1360,16 @@ describe Puppet::Type.type(:file) do
1299
1360
  File.open(full_name, "w") { |f| f.write contents }
1300
1361
  full_name
1301
1362
  end
1363
+
1364
+ def pretty_transaction_error(transaction)
1365
+ report = transaction.report
1366
+ status_failures = report.resource_statuses.values.select { |r| r.failed? }
1367
+ status_fail_msg = status_failures.
1368
+ collect(&:events).
1369
+ flatten.
1370
+ select { |event| event.status == 'failure' }.
1371
+ collect { |event| "#{event.resource}: #{event.message}" }.join("; ")
1372
+
1373
+ raise "Got #{status_failures.length} failure(s) while applying: #{status_fail_msg}"
1374
+ end
1302
1375
  end