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
@@ -8,8 +8,24 @@ describe "puppet module uninstall" do
8
8
  let(:options) do
9
9
  {}
10
10
  end
11
+ let(:modulepath) { File.expand_path('/module/path') }
12
+ let(:environment) do
13
+ Puppet::Node::Environment.create(:env, [modulepath], '')
14
+ end
15
+ let(:expected_options) do
16
+ {
17
+ :target_dir => modulepath,
18
+ :environment_instance => environment,
19
+ }
20
+ end
11
21
 
12
22
  describe "option validation" do
23
+ around(:each) do |example|
24
+ Puppet.override(:current_environment => environment) do
25
+ example.run
26
+ end
27
+ end
28
+
13
29
  context "without any options" do
14
30
  it "should require a name" do
15
31
  pattern = /wrong number of arguments/
@@ -22,39 +38,16 @@ describe "puppet module uninstall" do
22
38
  end
23
39
  end
24
40
 
25
- it "should accept the --environment option" do
26
- options[:environment] = "development"
27
- expected_options = { :environment => 'development' }
28
- Puppet::ModuleTool::Applications::Uninstaller.expects(:run).with("puppetlabs-apache", has_entries(expected_options)).once
29
- subject.uninstall("puppetlabs-apache", options)
30
- end
31
-
32
- it "should accept the --modulepath option" do
33
- options[:modulepath] = "/foo/puppet/modules"
34
- expected_options = {
35
- :modulepath => '/foo/puppet/modules',
36
- :environment => 'production',
37
- }
38
- Puppet::ModuleTool::Applications::Uninstaller.expects(:run).with("puppetlabs-apache", has_entries(expected_options)).once
39
- subject.uninstall("puppetlabs-apache", options)
40
- end
41
-
42
41
  it "should accept the --version option" do
43
42
  options[:version] = "1.0.0"
44
- expected_options = {
45
- :version => '1.0.0',
46
- :environment => 'production',
47
- }
43
+ expected_options.merge!(:version => '1.0.0')
48
44
  Puppet::ModuleTool::Applications::Uninstaller.expects(:run).with("puppetlabs-apache", has_entries(expected_options)).once
49
45
  subject.uninstall("puppetlabs-apache", options)
50
46
  end
51
47
 
52
48
  it "should accept the --force flag" do
53
49
  options[:force] = true
54
- expected_options = {
55
- :environment => 'production',
56
- :force => true,
57
- }
50
+ expected_options.merge!(:force => true)
58
51
  Puppet::ModuleTool::Applications::Uninstaller.expects(:run).with("puppetlabs-apache", has_entries(expected_options)).once
59
52
  subject.uninstall("puppetlabs-apache", options)
60
53
  end
@@ -8,39 +8,55 @@ describe Puppet::Face[:parser, :current] do
8
8
 
9
9
  let(:parser) { Puppet::Face[:parser, :current] }
10
10
 
11
- it "validates the configured site manifest when no files are given" do
12
- Puppet[:manifest] = file_containing('site.pp', "{ invalid =>")
13
- from_an_interactive_terminal
11
+ context "from an interactive terminal" do
12
+ before :each do
13
+ from_an_interactive_terminal
14
+ end
14
15
 
15
- expect { parser.validate() }.to exit_with(1)
16
- end
16
+ it "validates the configured site manifest when no files are given" do
17
+ Puppet[:manifest] = file_containing('site.pp', "{ invalid =>")
17
18
 
18
- it "validates the given file" do
19
- manifest = file_containing('site.pp', "{ invalid =>")
20
- from_an_interactive_terminal
19
+ expect { parser.validate() }.to exit_with(1)
20
+ end
21
21
 
22
- expect { parser.validate(manifest) }.to exit_with(1)
23
- end
22
+ it "validates the given file" do
23
+ manifest = file_containing('site.pp', "{ invalid =>")
24
24
 
25
- it "validates the contents of STDIN when no files given and STDIN is not a tty" do
26
- from_a_piped_input_of("{ invalid =>")
25
+ expect { parser.validate(manifest) }.to exit_with(1)
26
+ end
27
27
 
28
- expect { parser.validate() }.to exit_with(1)
29
- end
28
+ it "runs error free when there are no validation errors" do
29
+ manifest = file_containing('site.pp', "notify { valid: }")
30
30
 
31
- it "runs error free when there are no validation errors" do
32
- manifest = file_containing('site.pp', "notify { valid: }")
33
- from_an_interactive_terminal
31
+ parser.validate(manifest)
32
+ end
33
+
34
+ it "reports missing files" do
35
+ expect do
36
+ parser.validate("missing.pp")
37
+ end.to raise_error(Puppet::Error, /One or more file\(s\) specified did not exist.*missing\.pp/m)
38
+ end
39
+
40
+ it "parses supplied manifest files in the context of a directory environment" do
41
+ manifest = file_containing('test.pp', "{ invalid =>")
42
+
43
+ env_loader = Puppet::Environments::Static.new(
44
+ Puppet::Node::Environment.create(:special, [], '')
45
+ )
46
+ Puppet.override(:environments => env_loader) do
47
+ Puppet[:environment] = 'special'
48
+ expect { parser.validate(manifest) }.to exit_with(1)
49
+ end
50
+
51
+ expect(@logs.join).to match(/environment special.*Syntax error at '\{'/)
52
+ end
34
53
 
35
- parser.validate(manifest)
36
54
  end
37
55
 
38
- it "reports missing files" do
39
- from_an_interactive_terminal
56
+ it "validates the contents of STDIN when no files given and STDIN is not a tty" do
57
+ from_a_piped_input_of("{ invalid =>")
40
58
 
41
- expect do
42
- parser.validate("missing.pp")
43
- end.to raise_error(Puppet::Error, /One or more file\(s\) specified did not exist.*missing\.pp/m)
59
+ expect { parser.validate() }.to exit_with(1)
44
60
  end
45
61
 
46
62
  def from_an_interactive_terminal
@@ -45,7 +45,7 @@ describe Puppet::FileBucket::Dipper do
45
45
  Digest::MD5.hexdigest("my\r\ncontents").should == checksum
46
46
 
47
47
  @dipper.backup(file).should == checksum
48
- Puppet::FileSystem::File.exist?("#{file_bucket}/f/0/d/7/d/4/e/4/f0d7d4e480ad698ed56aeec8b6bd6dea/contents").should == true
48
+ Puppet::FileSystem.exist?("#{file_bucket}/f/0/d/7/d/4/e/4/f0d7d4e480ad698ed56aeec8b6bd6dea/contents").should == true
49
49
  end
50
50
 
51
51
  it "should not backup a file that is already in the bucket" do
@@ -123,7 +123,7 @@ describe Puppet::FileBucket::Dipper do
123
123
  klass.any_instance.expects(:find).with { |r| request = r }.returns(Puppet::FileBucket::File.new(contents))
124
124
 
125
125
  dipper.restore(dest, md5).should == md5
126
- Digest::MD5.hexdigest(Puppet::FileSystem::File.new(dest).binread).should == md5
126
+ Digest::MD5.hexdigest(Puppet::FileSystem.binread(dest)).should == md5
127
127
 
128
128
  request.key.should == "md5/#{md5}"
129
129
  request.server.should == server
@@ -42,12 +42,12 @@ describe Puppet::FileServing::Base do
42
42
  end
43
43
 
44
44
  it "should allow specification of a path" do
45
- Puppet::FileSystem::File.stubs(:exist?).returns(true)
45
+ Puppet::FileSystem.stubs(:exist?).returns(true)
46
46
  Puppet::FileServing::Base.new(path, :path => file).path.should == file
47
47
  end
48
48
 
49
49
  it "should allow specification of a relative path" do
50
- Puppet::FileSystem::File.stubs(:exist?).returns(true)
50
+ Puppet::FileSystem.stubs(:exist?).returns(true)
51
51
  Puppet::FileServing::Base.new(path, :relative_path => "my/file").relative_path.should == "my/file"
52
52
  end
53
53
 
@@ -56,22 +56,19 @@ describe Puppet::FileServing::Base do
56
56
  end
57
57
 
58
58
  it "should correctly indicate if the file is present" do
59
- mock_file = mock(file, :lstat => stub('stat'))
60
- Puppet::FileSystem::File.expects(:new).with(file).returns mock_file
59
+ Puppet::FileSystem.expects(:lstat).with(file).returns stub('stat')
61
60
  Puppet::FileServing::Base.new(file).exist?.should be_true
62
61
  end
63
62
 
64
63
  it "should correctly indicate if the file is absent" do
65
- mock_file = mock(file)
66
- Puppet::FileSystem::File.expects(:new).with(file).returns mock_file
67
- mock_file.expects(:lstat).raises RuntimeError
64
+ Puppet::FileSystem.expects(:lstat).with(file).raises RuntimeError
68
65
  Puppet::FileServing::Base.new(file).exist?.should be_false
69
66
  end
70
67
 
71
68
  describe "when setting the relative path" do
72
69
  it "should require that the relative path be unqualified" do
73
70
  @file = Puppet::FileServing::Base.new(path)
74
- Puppet::FileSystem::File.stubs(:exist?).returns(true)
71
+ Puppet::FileSystem.stubs(:exist?).returns(true)
75
72
  proc { @file.relative_path = File.expand_path("/qualified/file") }.should raise_error(ArgumentError)
76
73
  end
77
74
  end
@@ -129,23 +126,22 @@ describe Puppet::FileServing::Base do
129
126
  let(:stubbed_file) { stub(path, :stat => stat, :lstat => stat)}
130
127
 
131
128
  it "should stat the file's full path" do
132
- Puppet::FileSystem::File.expects(:new).with(path).returns stubbed_file
129
+ Puppet::FileSystem.expects(:lstat).with(path).returns stat
133
130
  file.stat
134
131
  end
135
132
 
136
133
  it "should fail if the file does not exist" do
137
- Puppet::FileSystem::File.expects(:new).with(path).returns stubbed_file
138
- stubbed_file.expects(:lstat).raises(Errno::ENOENT)
134
+ Puppet::FileSystem.expects(:lstat).with(path).raises(Errno::ENOENT)
139
135
  proc { file.stat }.should raise_error(Errno::ENOENT)
140
136
  end
141
137
 
142
138
  it "should use :lstat if :links is set to :manage" do
143
- Puppet::FileSystem::File.expects(:new).with(path).returns stubbed_file
139
+ Puppet::FileSystem.expects(:lstat).with(path).returns stubbed_file
144
140
  file.stat
145
141
  end
146
142
 
147
143
  it "should use :stat if :links is set to :follow" do
148
- Puppet::FileSystem::File.expects(:new).with(path).returns stubbed_file
144
+ Puppet::FileSystem.expects(:stat).with(path).returns stubbed_file
149
145
  file.links = :follow
150
146
  file.stat
151
147
  end
@@ -84,6 +84,12 @@ describe Puppet::FileServing::Configuration::Parser do
84
84
 
85
85
  lambda { @parser.parse }.should raise_error(RuntimeError)
86
86
  end
87
+
88
+ it "should return comprehensible error message, if invalid line detected" do
89
+ write_config_file "[one]\n\n\x01path /etc/puppet/files\n\x01allow *\n"
90
+
91
+ proc { @parser.parse }.should raise_error(ArgumentError, /Invalid line.*in.*, line 3/)
92
+ end
87
93
  end
88
94
 
89
95
  describe Puppet::FileServing::Configuration::Parser, " when parsing mount attributes" do
@@ -126,10 +132,10 @@ describe Puppet::FileServing::Configuration::Parser do
126
132
  @parser.parse
127
133
  end
128
134
 
129
- it "should fail on any attributes other than path, allow, and deny" do
135
+ it "should return comprehensible error message, if failed on invalid attribute" do
130
136
  write_config_file "[one]\ndo something\n"
131
137
 
132
- proc { @parser.parse }.should raise_error(ArgumentError)
138
+ proc { @parser.parse }.should raise_error(ArgumentError, /Invalid argument 'do' in .*, line 2/)
133
139
  end
134
140
  end
135
141
 
@@ -27,12 +27,12 @@ describe Puppet::FileServing::Configuration do
27
27
  describe "when initializing" do
28
28
 
29
29
  it "should work without a configuration file" do
30
- Puppet::FileSystem::File.stubs(:exist?).with(@path).returns(false)
30
+ Puppet::FileSystem.stubs(:exist?).with(@path).returns(false)
31
31
  expect { Puppet::FileServing::Configuration.configuration }.to_not raise_error
32
32
  end
33
33
 
34
34
  it "should parse the configuration file if present" do
35
- Puppet::FileSystem::File.stubs(:exist?).with(@path).returns(true)
35
+ Puppet::FileSystem.stubs(:exist?).with(@path).returns(true)
36
36
  @parser = mock 'parser'
37
37
  @parser.expects(:parse).returns({})
38
38
  Puppet::FileServing::Configuration::Parser.stubs(:new).returns(@parser)
@@ -47,7 +47,7 @@ describe Puppet::FileServing::Configuration do
47
47
  describe "when parsing the configuration file" do
48
48
 
49
49
  before do
50
- Puppet::FileSystem::File.stubs(:exist?).with(@path).returns(true)
50
+ Puppet::FileSystem.stubs(:exist?).with(@path).returns(true)
51
51
  @parser = mock 'parser'
52
52
  Puppet::FileServing::Configuration::Parser.stubs(:new).returns(@parser)
53
53
  end
@@ -84,14 +84,14 @@ describe Puppet::FileServing::Configuration do
84
84
  end
85
85
 
86
86
  it "should add modules and plugins mounts even if the file does not exist" do
87
- Puppet::FileSystem::File.expects(:exist?).returns false # the file doesn't exist
87
+ Puppet::FileSystem.expects(:exist?).returns false # the file doesn't exist
88
88
  config = Puppet::FileServing::Configuration.configuration
89
89
  config.mounted?("modules").should be_true
90
90
  config.mounted?("plugins").should be_true
91
91
  end
92
92
 
93
93
  it "should allow all access to modules and plugins if no fileserver.conf exists" do
94
- Puppet::FileSystem::File.expects(:exist?).returns false # the file doesn't exist
94
+ Puppet::FileSystem.expects(:exist?).returns false # the file doesn't exist
95
95
  modules = stub 'modules', :empty? => true
96
96
  Puppet::FileServing::Mount::Modules.stubs(:new).returns(modules)
97
97
  modules.expects(:allow).with('*')
@@ -104,7 +104,7 @@ describe Puppet::FileServing::Configuration do
104
104
  end
105
105
 
106
106
  it "should not allow access from all to modules and plugins if the fileserver.conf provided some rules" do
107
- Puppet::FileSystem::File.expects(:exist?).returns false # the file doesn't exist
107
+ Puppet::FileSystem.expects(:exist?).returns false # the file doesn't exist
108
108
 
109
109
  modules = stub 'modules', :empty? => false
110
110
  Puppet::FileServing::Mount::Modules.stubs(:new).returns(modules)
@@ -119,7 +119,7 @@ describe Puppet::FileServing::Configuration do
119
119
 
120
120
  it "should add modules and plugins mounts even if they are not returned by the parser" do
121
121
  @parser.expects(:parse).returns("one" => mock("mount"))
122
- Puppet::FileSystem::File.expects(:exist?).returns true # the file doesn't exist
122
+ Puppet::FileSystem.expects(:exist?).returns true # the file doesn't exist
123
123
  config = Puppet::FileServing::Configuration.configuration
124
124
  config.mounted?("modules").should be_true
125
125
  config.mounted?("plugins").should be_true
@@ -26,8 +26,7 @@ describe Puppet::FileServing::Content do
26
26
  content = Puppet::FileServing::Content.new(path)
27
27
 
28
28
  result = "foo"
29
- stub_file = stub(path, :lstat => stub('stat', :ftype => "file"))
30
- Puppet::FileSystem::File.expects(:new).with(path).returns stub_file
29
+ Puppet::FileSystem.expects(:lstat).with(path).returns stub('stat', :ftype => "file")
31
30
  File.expects(:read).with(path).never
32
31
  content.collect
33
32
 
@@ -38,8 +37,7 @@ describe Puppet::FileServing::Content do
38
37
  content = Puppet::FileServing::Content.new(path)
39
38
 
40
39
  result = "foo"
41
- stub_file = stub(path, :lstat => stub('stat', :ftype => "directory"))
42
- Puppet::FileSystem::File.expects(:new).with(path).returns stub_file
40
+ Puppet::FileSystem.expects(:lstat).with(path).returns stub('stat', :ftype => "directory")
43
41
  File.expects(:read).with(path).never
44
42
  content.collect
45
43
 
@@ -85,8 +83,7 @@ describe Puppet::FileServing::Content, "when returning the contents" do
85
83
 
86
84
  it "should fail if the file is a symlink and links are set to :manage" do
87
85
  content.links = :manage
88
- stub_file = stub(path, :lstat => stub("stat", :ftype => "symlink"))
89
- Puppet::FileSystem::File.expects(:new).with(path).returns stub_file
86
+ Puppet::FileSystem.expects(:lstat).with(path).returns stub("stat", :ftype => "symlink")
90
87
  proc { content.content }.should raise_error(ArgumentError)
91
88
  end
92
89
 
@@ -100,16 +97,14 @@ describe Puppet::FileServing::Content, "when returning the contents" do
100
97
  end
101
98
 
102
99
  it "should return the contents of the path if the file exists" do
103
- mocked_file = mock(path, :stat => stub('stat', :ftype => 'file'))
104
- Puppet::FileSystem::File.expects(:new).with(path).twice.returns(mocked_file)
105
- mocked_file.expects(:binread).returns(:mycontent)
100
+ Puppet::FileSystem.expects(:stat).with(path).returns(stub('stat', :ftype => 'file'))
101
+ Puppet::FileSystem.expects(:binread).with(path).returns(:mycontent)
106
102
  content.content.should == :mycontent
107
103
  end
108
104
 
109
105
  it "should cache the returned contents" do
110
- mocked_file = mock(path, :stat => stub('stat', :ftype => 'file'))
111
- Puppet::FileSystem::File.expects(:new).with(path).twice.returns(mocked_file)
112
- mocked_file.expects(:binread).returns(:mycontent)
106
+ Puppet::FileSystem.expects(:stat).with(path).returns(stub('stat', :ftype => 'file'))
107
+ Puppet::FileSystem.expects(:binread).with(path).returns(:mycontent)
113
108
  content.content
114
109
  # The second run would throw a failure if the content weren't being cached.
115
110
  content.content
@@ -18,58 +18,49 @@ describe Puppet::FileServing::Fileset do
18
18
 
19
19
  it "removes a trailing file path separator" do
20
20
  path_with_separator = "#{somefile}#{File::SEPARATOR}"
21
- stub_file = stub(somefile, :lstat => stub('stat'))
22
- Puppet::FileSystem::File.expects(:new).with(somefile).returns stub_file
21
+ Puppet::FileSystem.expects(:lstat).with(somefile).returns stub('stat')
23
22
  fileset = Puppet::FileServing::Fileset.new(path_with_separator)
24
23
  fileset.path.should == somefile
25
24
  end
26
25
 
27
26
  it "can be created from the root directory" do
28
27
  path = File.expand_path(File::SEPARATOR)
29
- stub_file = stub(path, :lstat => stub('stat'))
30
- Puppet::FileSystem::File.expects(:new).with(path).returns stub_file
28
+ Puppet::FileSystem.expects(:lstat).with(path).returns stub('stat')
31
29
  fileset = Puppet::FileServing::Fileset.new(path)
32
30
  fileset.path.should == path
33
31
  end
34
32
 
35
33
  it "fails if its path does not exist" do
36
- mock_file = mock(somefile)
37
- Puppet::FileSystem::File.expects(:new).with(somefile).returns mock_file
38
- mock_file.expects(:lstat).raises(Errno::ENOENT)
34
+ Puppet::FileSystem.expects(:lstat).with(somefile).raises(Errno::ENOENT)
39
35
  expect { Puppet::FileServing::Fileset.new(somefile) }.to raise_error(ArgumentError, "Fileset paths must exist")
40
36
  end
41
37
 
42
38
  it "accepts a 'recurse' option" do
43
- stub_file = stub(somefile, :lstat => stub('stat'))
44
- Puppet::FileSystem::File.expects(:new).with(somefile).returns stub_file
39
+ Puppet::FileSystem.expects(:lstat).with(somefile).returns stub('stat')
45
40
  set = Puppet::FileServing::Fileset.new(somefile, :recurse => true)
46
41
  set.recurse.should be_true
47
42
  end
48
43
 
49
44
  it "accepts a 'recurselimit' option" do
50
- stub_file = stub(somefile, :lstat => stub('stat'))
51
- Puppet::FileSystem::File.expects(:new).with(somefile).returns stub_file
45
+ Puppet::FileSystem.expects(:lstat).with(somefile).returns stub('stat')
52
46
  set = Puppet::FileServing::Fileset.new(somefile, :recurselimit => 3)
53
47
  set.recurselimit.should == 3
54
48
  end
55
49
 
56
50
  it "accepts an 'ignore' option" do
57
- stub_file = stub(somefile, :lstat => stub('stat'))
58
- Puppet::FileSystem::File.expects(:new).with(somefile).returns stub_file
51
+ Puppet::FileSystem.expects(:lstat).with(somefile).returns stub('stat')
59
52
  set = Puppet::FileServing::Fileset.new(somefile, :ignore => ".svn")
60
53
  set.ignore.should == [".svn"]
61
54
  end
62
55
 
63
56
  it "accepts a 'links' option" do
64
- stub_file = stub(somefile, :lstat => stub('stat'))
65
- Puppet::FileSystem::File.expects(:new).with(somefile).returns stub_file
57
+ Puppet::FileSystem.expects(:lstat).with(somefile).returns stub('stat')
66
58
  set = Puppet::FileServing::Fileset.new(somefile, :links => :manage)
67
59
  set.links.should == :manage
68
60
  end
69
61
 
70
62
  it "accepts a 'checksum_type' option" do
71
- stub_file = stub(somefile, :lstat => stub('stat'))
72
- Puppet::FileSystem::File.expects(:new).with(somefile).returns stub_file
63
+ Puppet::FileSystem.expects(:lstat).with(somefile).returns stub('stat')
73
64
  set = Puppet::FileServing::Fileset.new(somefile, :checksum_type => :test)
74
65
  set.checksum_type.should == :test
75
66
  end
@@ -79,26 +70,22 @@ describe Puppet::FileServing::Fileset do
79
70
  end
80
71
 
81
72
  it "defaults to 'false' for recurse" do
82
- stub_file = stub(somefile, :lstat => stub('stat'))
83
- Puppet::FileSystem::File.expects(:new).with(somefile).returns stub_file
73
+ Puppet::FileSystem.expects(:lstat).with(somefile).returns stub('stat')
84
74
  Puppet::FileServing::Fileset.new(somefile).recurse.should == false
85
75
  end
86
76
 
87
77
  it "defaults to :infinite for recurselimit" do
88
- stub_file = stub(somefile, :lstat => stub('stat'))
89
- Puppet::FileSystem::File.expects(:new).with(somefile).returns stub_file
78
+ Puppet::FileSystem.expects(:lstat).with(somefile).returns stub('stat')
90
79
  Puppet::FileServing::Fileset.new(somefile).recurselimit.should == :infinite
91
80
  end
92
81
 
93
82
  it "defaults to an empty ignore list" do
94
- stub_file = stub(somefile, :lstat => stub('stat'))
95
- Puppet::FileSystem::File.expects(:new).with(somefile).returns stub_file
83
+ Puppet::FileSystem.expects(:lstat).with(somefile).returns stub('stat')
96
84
  Puppet::FileServing::Fileset.new(somefile).ignore.should == []
97
85
  end
98
86
 
99
87
  it "defaults to :manage for links" do
100
- stub_file = stub(somefile, :lstat => stub('stat'))
101
- Puppet::FileSystem::File.expects(:new).with(somefile).returns stub_file
88
+ Puppet::FileSystem.expects(:lstat).with(somefile).returns stub('stat')
102
89
  Puppet::FileServing::Fileset.new(somefile).links.should == :manage
103
90
  end
104
91
 
@@ -107,7 +94,7 @@ describe Puppet::FileServing::Fileset do
107
94
  let(:stub_file) { stub(somefile, :lstat => stub('stat')) }
108
95
 
109
96
  before :each do
110
- Puppet::FileSystem::File.expects(:new).with(somefile).returns stub_file
97
+ Puppet::FileSystem.expects(:lstat).with(somefile).returns stub('stat')
111
98
  end
112
99
 
113
100
  [:recurse, :recurselimit, :ignore, :links].each do |option|
@@ -144,8 +131,8 @@ describe Puppet::FileServing::Fileset do
144
131
  context "when recursing" do
145
132
  before do
146
133
  @path = make_absolute("/my/path")
147
- @stub_file = stub(@path, :lstat => stub('stat', :directory? => true))
148
- Puppet::FileSystem::File.stubs(:new).with(@path).returns @stub_file
134
+ Puppet::FileSystem.stubs(:lstat).with(@path).returns stub('stat', :directory? => true)
135
+
149
136
  @fileset = Puppet::FileServing::Fileset.new(@path)
150
137
 
151
138
  @dirstat = stub 'dirstat', :directory? => true
@@ -153,23 +140,24 @@ describe Puppet::FileServing::Fileset do
153
140
  end
154
141
 
155
142
  def mock_dir_structure(path, stat_method = :lstat)
156
- @stub_file.stubs(stat_method).returns(@dirstat)
157
- Dir.stubs(:entries).with(path).returns(%w{one two .svn CVS})
143
+ Puppet::FileSystem.stubs(stat_method).with(path).returns @dirstat
158
144
 
159
145
  # Keep track of the files we're stubbing.
160
146
  @files = %w{.}
161
147
 
162
- %w{one two .svn CVS}.each do |subdir|
148
+ top_names = %w{one two .svn CVS}
149
+ sub_names = %w{file1 file2 .svn CVS 0 false}
150
+
151
+ Dir.stubs(:entries).with(path).returns(top_names)
152
+ top_names.each do |subdir|
163
153
  @files << subdir # relative path
164
154
  subpath = File.join(path, subdir)
165
- stub_subpath = stub(subpath, stat_method => @dirstat)
166
- Puppet::FileSystem::File.stubs(:new).with(subpath).returns stub_subpath
167
- Dir.stubs(:entries).with(subpath).returns(%w{.svn CVS file1 file2})
168
- %w{file1 file2 .svn CVS}.each do |file|
155
+ Puppet::FileSystem.stubs(stat_method).with(subpath).returns @dirstat
156
+ Dir.stubs(:entries).with(subpath).returns(sub_names)
157
+ sub_names.each do |file|
169
158
  @files << File.join(subdir, file) # relative path
170
159
  subfile_path = File.join(subpath, file)
171
- stub_subfile_path = stub(subfile_path, stat_method => @filestat)
172
- Puppet::FileSystem::File.stubs(:new).with(subfile_path).returns stub_subfile_path
160
+ Puppet::FileSystem.stubs(stat_method).with(subfile_path).returns(@filestat)
173
161
  end
174
162
  end
175
163
  end
@@ -185,8 +173,7 @@ describe Puppet::FileServing::Fileset do
185
173
  def mock(base_path)
186
174
  extend Mocha::API
187
175
  path = File.join(base_path, name)
188
- stub_dir = stub(path, :lstat => MockStat.new(path, true))
189
- Puppet::FileSystem::File.stubs(:new).with(path).returns stub_dir
176
+ Puppet::FileSystem.stubs(:lstat).with(path).returns MockStat.new(path, true)
190
177
  Dir.stubs(:entries).with(path).returns(['.', '..'] + entries.map(&:name))
191
178
  entries.each do |entry|
192
179
  entry.mock(path)
@@ -198,8 +185,7 @@ describe Puppet::FileServing::Fileset do
198
185
  def mock(base_path)
199
186
  extend Mocha::API
200
187
  path = File.join(base_path, name)
201
- stub_file = stub(path, :lstat => MockStat.new(path, false))
202
- Puppet::FileSystem::File.stubs(:new).with(path).returns stub_file
188
+ Puppet::FileSystem.stubs(:lstat).with(path).returns MockStat.new(path, false)
203
189
  end
204
190
  end
205
191
 
@@ -261,14 +247,28 @@ describe Puppet::FileServing::Fileset do
261
247
  @fileset.files.find { |file| file.include?(".svn") or file.include?("CVS") }.should be_nil
262
248
  end
263
249
 
264
- it "uses Puppet::FileSystem::File#stat if :links is set to :follow" do
250
+ it "ignores files that match a pattern given as a number" do
251
+ mock_dir_structure(@path)
252
+ @fileset.recurse = true
253
+ @fileset.ignore = [0]
254
+ @fileset.files.find { |file| file.include?("0") }.should be_nil
255
+ end
256
+
257
+ it "ignores files that match a pattern given as a boolean" do
258
+ mock_dir_structure(@path)
259
+ @fileset.recurse = true
260
+ @fileset.ignore = [false]
261
+ @fileset.files.find { |file| file.include?("false") }.should be_nil
262
+ end
263
+
264
+ it "uses Puppet::FileSystem#stat if :links is set to :follow" do
265
265
  mock_dir_structure(@path, :stat)
266
266
  @fileset.recurse = true
267
267
  @fileset.links = :follow
268
268
  @fileset.files.sort.should == @files.sort
269
269
  end
270
270
 
271
- it "uses Puppet::FileSystem::File#lstat if :links is set to :manage" do
271
+ it "uses Puppet::FileSystem#lstat if :links is set to :manage" do
272
272
  mock_dir_structure(@path, :lstat)
273
273
  @fileset.recurse = true
274
274
  @fileset.links = :manage
@@ -279,7 +279,7 @@ describe Puppet::FileServing::Fileset do
279
279
  @path = make_absolute("/my/path/rV1x2DafFr0R6tGG+1bbk++++TM")
280
280
  stat = stub('dir_stat', :directory? => true)
281
281
  stub_file = stub(@path, :stat => stat, :lstat => stat)
282
- Puppet::FileSystem::File.expects(:new).with(@path).twice.returns stub_file
282
+ Puppet::FileSystem.expects(:lstat).with(@path).returns stub(@path, :stat => stat, :lstat => stat)
283
283
  @fileset = Puppet::FileServing::Fileset.new(@path)
284
284
  mock_dir_structure(@path)
285
285
  @fileset.recurse = true
@@ -291,13 +291,11 @@ describe Puppet::FileServing::Fileset do
291
291
  path = make_absolute("/my/path")
292
292
  stat = stub 'stat', :directory? => true
293
293
 
294
- mock_file = mock(path, :lstat => stat, :stat => stat)
295
- Puppet::FileSystem::File.expects(:new).with(path).twice.returns mock_file
294
+ Puppet::FileSystem.expects(:stat).with(path).returns stat
295
+ Puppet::FileSystem.expects(:lstat).with(path).returns stat
296
296
 
297
297
  link_path = File.join(path, "mylink")
298
- mock_link = mock(link_path)
299
- Puppet::FileSystem::File.expects(:new).with(link_path).returns mock_link
300
- mock_link.expects(:stat).raises(Errno::ENOENT)
298
+ Puppet::FileSystem.expects(:stat).with(link_path).raises(Errno::ENOENT)
301
299
 
302
300
  Dir.stubs(:entries).with(path).returns(["mylink"])
303
301
 
@@ -312,12 +310,10 @@ describe Puppet::FileServing::Fileset do
312
310
  context "when merging other filesets" do
313
311
  before do
314
312
  @paths = [make_absolute("/first/path"), make_absolute("/second/path"), make_absolute("/third/path")]
315
- stub_file = stub(:lstat => stub('stat', :directory? => false))
316
- Puppet::FileSystem::File.stubs(:new).returns stub_file
313
+ Puppet::FileSystem.stubs(:lstat).returns stub('stat', :directory? => false)
317
314
 
318
315
  @filesets = @paths.collect do |path|
319
- stub_dir = stub(path, :lstat => stub('stat', :directory? => true))
320
- Puppet::FileSystem::File.stubs(:new).with(path).returns stub_dir
316
+ Puppet::FileSystem.stubs(:lstat).with(path).returns stub('stat', :directory? => true)
321
317
  Puppet::FileServing::Fileset.new(path, :recurse => true)
322
318
  end
323
319