puppet 3.3.2 → 3.4.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 (589) hide show
  1. data/CONTRIBUTING.md +22 -0
  2. data/Gemfile +11 -2
  3. data/README.md +13 -17
  4. data/README_DEVELOPER.md +1 -1
  5. data/Rakefile +1 -1
  6. data/examples/hiera/README.md +4 -4
  7. data/ext/debian/puppetmaster.init +1 -0
  8. data/ext/debian/rules +2 -5
  9. data/ext/nagios/check_puppet.rb +7 -7
  10. data/ext/osx/file_mapping.yaml +1 -1
  11. data/ext/osx/preflight.erb +34 -19
  12. data/ext/rack/{files/config.ru → config.ru} +0 -0
  13. data/ext/rack/{files/apache2.conf → example-passenger-vhost.conf} +6 -0
  14. data/ext/redhat/puppet.spec.erb +20 -2
  15. data/ext/systemd/{puppetagent.service → puppet.service} +0 -0
  16. data/lib/hiera_puppet.rb +2 -2
  17. data/lib/puppet/agent.rb +1 -6
  18. data/lib/puppet/application.rb +15 -2
  19. data/lib/puppet/application/agent.rb +2 -7
  20. data/lib/puppet/application/apply.rb +8 -13
  21. data/lib/puppet/application/cert.rb +47 -7
  22. data/lib/puppet/application/device.rb +1 -6
  23. data/lib/puppet/application/face_base.rb +1 -1
  24. data/lib/puppet/application/filebucket.rb +1 -1
  25. data/lib/puppet/application/inspect.rb +3 -12
  26. data/lib/puppet/application/master.rb +1 -6
  27. data/lib/puppet/application/queue.rb +1 -6
  28. data/lib/puppet/application/resource.rb +2 -6
  29. data/lib/puppet/coercion.rb +11 -0
  30. data/lib/puppet/configurer.rb +5 -3
  31. data/lib/puppet/configurer/downloader.rb +3 -1
  32. data/lib/puppet/configurer/plugin_handler.rb +10 -0
  33. data/lib/puppet/confine.rb +80 -0
  34. data/lib/puppet/{provider/confine → confine}/exists.rb +3 -3
  35. data/lib/puppet/{provider/confine → confine}/false.rb +2 -2
  36. data/lib/puppet/{provider/confine → confine}/feature.rb +2 -2
  37. data/lib/puppet/{provider/confine → confine}/true.rb +2 -2
  38. data/lib/puppet/{provider/confine → confine}/variable.rb +2 -2
  39. data/lib/puppet/{provider/confine_collection.rb → confine_collection.rb} +4 -4
  40. data/lib/puppet/{provider/confiner.rb → confiner.rb} +4 -4
  41. data/lib/puppet/daemon.rb +2 -6
  42. data/lib/puppet/data_binding.rb +2 -30
  43. data/lib/puppet/defaults.rb +283 -174
  44. data/lib/puppet/error.rb +1 -0
  45. data/lib/puppet/external/nagios.rb +0 -2
  46. data/lib/puppet/external/nagios/base.rb +4 -3
  47. data/lib/puppet/external/nagios/grammar.ry +173 -112
  48. data/lib/puppet/external/nagios/parser.rb +233 -184
  49. data/lib/puppet/face/file/store.rb +1 -1
  50. data/lib/puppet/face/module/generate.rb +5 -7
  51. data/lib/puppet/face/parser.rb +12 -2
  52. data/lib/puppet/face/plugin.rb +6 -0
  53. data/lib/puppet/feature/base.rb +16 -0
  54. data/lib/puppet/feature/external_facts.rb +5 -0
  55. data/lib/puppet/feature/libuser.rb +1 -1
  56. data/lib/puppet/feature/msgpack.rb +1 -0
  57. data/lib/puppet/feature/rails.rb +2 -2
  58. data/lib/puppet/file_bucket/dipper.rb +8 -6
  59. data/lib/puppet/file_bucket/file.rb +17 -1
  60. data/lib/puppet/file_serving/base.rb +21 -10
  61. data/lib/puppet/file_serving/configuration.rb +5 -7
  62. data/lib/puppet/file_serving/configuration/parser.rb +1 -1
  63. data/lib/puppet/file_serving/content.rb +1 -1
  64. data/lib/puppet/file_serving/fileset.rb +3 -3
  65. data/lib/puppet/file_serving/metadata.rb +22 -18
  66. data/lib/puppet/file_serving/mount/file.rb +1 -1
  67. data/lib/puppet/file_serving/mount/pluginfacts.rb +35 -0
  68. data/lib/puppet/file_system.rb +3 -0
  69. data/lib/puppet/file_system/file.rb +261 -0
  70. data/lib/puppet/file_system/file18.rb +5 -0
  71. data/lib/puppet/file_system/file19.rb +5 -0
  72. data/lib/puppet/file_system/file19windows.rb +113 -0
  73. data/lib/puppet/file_system/memory_file.rb +31 -0
  74. data/lib/puppet/file_system/tempfile.rb +20 -0
  75. data/lib/puppet/indirector/active_record.rb +1 -0
  76. data/lib/puppet/indirector/catalog/compiler.rb +28 -0
  77. data/lib/puppet/indirector/certificate_request/memory.rb +6 -0
  78. data/lib/puppet/indirector/data_binding/hiera.rb +46 -2
  79. data/lib/puppet/indirector/direct_file_server.rb +2 -2
  80. data/lib/puppet/indirector/facts/facter.rb +25 -0
  81. data/lib/puppet/indirector/file_bucket_file/file.rb +60 -74
  82. data/lib/puppet/indirector/indirection.rb +5 -1
  83. data/lib/puppet/indirector/json.rb +1 -1
  84. data/lib/puppet/indirector/key/ca.rb +4 -0
  85. data/lib/puppet/indirector/key/file.rb +7 -3
  86. data/lib/puppet/indirector/key/memory.rb +6 -0
  87. data/lib/puppet/indirector/node/write_only_yaml.rb +2 -2
  88. data/lib/puppet/indirector/request.rb +17 -11
  89. data/lib/puppet/indirector/resource/ral.rb +5 -0
  90. data/lib/puppet/indirector/resource/rest.rb +1 -0
  91. data/lib/puppet/indirector/resource/store_configs.rb +4 -0
  92. data/lib/puppet/indirector/rest.rb +2 -1
  93. data/lib/puppet/indirector/ssl_file.rb +7 -7
  94. data/lib/puppet/indirector/terminus.rb +4 -0
  95. data/lib/puppet/indirector/yaml.rb +3 -3
  96. data/lib/puppet/interface/documentation.rb +4 -11
  97. data/lib/puppet/module.rb +19 -6
  98. data/lib/puppet/module_tool/applications/builder.rb +1 -1
  99. data/lib/puppet/module_tool/applications/installer.rb +1 -1
  100. data/lib/puppet/module_tool/checksums.rb +1 -1
  101. data/lib/puppet/module_tool/dependency.rb +7 -3
  102. data/lib/puppet/module_tool/metadata.rb +6 -2
  103. data/lib/puppet/module_tool/tar.rb +2 -1
  104. data/lib/puppet/module_tool/tar/gnu.rb +6 -2
  105. data/lib/puppet/module_tool/tar/mini.rb +2 -0
  106. data/lib/puppet/module_tool/tar/solaris.rb +2 -5
  107. data/lib/puppet/network/authconfig.rb +0 -2
  108. data/lib/puppet/network/authentication.rb +1 -1
  109. data/lib/puppet/network/authstore.rb +6 -7
  110. data/lib/puppet/network/format.rb +2 -3
  111. data/lib/puppet/network/format_handler.rb +16 -11
  112. data/lib/puppet/network/format_support.rb +14 -0
  113. data/lib/puppet/network/formats.rb +26 -0
  114. data/lib/puppet/network/http/connection.rb +8 -41
  115. data/lib/puppet/network/http/handler.rb +28 -32
  116. data/lib/puppet/network/http/webrick.rb +15 -22
  117. data/lib/puppet/network/http_pool.rb +43 -9
  118. data/lib/puppet/network/rights.rb +0 -0
  119. data/lib/puppet/node.rb +24 -8
  120. data/lib/puppet/node/environment.rb +18 -20
  121. data/lib/puppet/node/facts.rb +23 -6
  122. data/lib/puppet/parameter.rb +15 -2
  123. data/lib/puppet/parameter/boolean.rb +5 -0
  124. data/lib/puppet/parameter/value_collection.rb +6 -4
  125. data/lib/puppet/parser/ast/resourceparam.rb +2 -1
  126. data/lib/puppet/parser/compiler.rb +25 -9
  127. data/lib/puppet/parser/files.rb +1 -1
  128. data/lib/puppet/parser/functions.rb +12 -21
  129. data/lib/puppet/parser/functions/collect.rb +6 -35
  130. data/lib/puppet/parser/functions/contain.rb +26 -0
  131. data/lib/puppet/parser/functions/create_resources.rb +5 -0
  132. data/lib/puppet/parser/functions/extlookup.rb +2 -2
  133. data/lib/puppet/parser/functions/file.rb +1 -1
  134. data/lib/puppet/parser/functions/{reject.rb → filter.rb} +13 -12
  135. data/lib/puppet/parser/functions/fqdn_rand.rb +13 -5
  136. data/lib/puppet/parser/functions/include.rb +18 -1
  137. data/lib/puppet/parser/functions/map.rb +44 -0
  138. data/lib/puppet/parser/functions/select.rb +6 -38
  139. data/lib/puppet/parser/lexer.rb +1 -1
  140. data/lib/puppet/parser/parser_support.rb +1 -1
  141. data/lib/puppet/parser/resource.rb +6 -45
  142. data/lib/puppet/parser/scope.rb +33 -2
  143. data/lib/puppet/parser/type_loader.rb +4 -60
  144. data/lib/puppet/pops/binder/bindings_loader.rb +1 -1
  145. data/lib/puppet/pops/binder/config/binder_config.rb +3 -3
  146. data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +1 -1
  147. data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +1 -1
  148. data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +2 -2
  149. data/lib/puppet/pops/issues.rb +4 -0
  150. data/lib/puppet/pops/model/ast_transformer.rb +4 -1
  151. data/lib/puppet/pops/model/model_label_provider.rb +1 -1
  152. data/lib/puppet/pops/parser/egrammar.ra +5 -24
  153. data/lib/puppet/pops/parser/eparser.rb +859 -902
  154. data/lib/puppet/pops/parser/lexer.rb +48 -30
  155. data/lib/puppet/pops/parser/parser_support.rb +1 -1
  156. data/lib/puppet/pops/patterns.rb +4 -4
  157. data/lib/puppet/pops/utils.rb +1 -1
  158. data/lib/puppet/pops/validation/checker3_1.rb +25 -20
  159. data/lib/puppet/provider.rb +23 -6
  160. data/lib/puppet/provider/aixobject.rb +0 -0
  161. data/lib/puppet/provider/augeas/augeas.rb +21 -5
  162. data/lib/puppet/provider/confine.rb +5 -79
  163. data/lib/puppet/provider/cron/crontab.rb +0 -0
  164. data/lib/puppet/provider/exec.rb +9 -7
  165. data/lib/puppet/provider/exec/posix.rb +10 -1
  166. data/lib/puppet/provider/exec/windows.rb +1 -1
  167. data/lib/puppet/provider/file/posix.rb +1 -0
  168. data/lib/puppet/provider/file/windows.rb +16 -5
  169. data/lib/puppet/provider/group/aix.rb +0 -0
  170. data/lib/puppet/provider/group/windows_adsi.rb +33 -1
  171. data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
  172. data/lib/puppet/provider/mailalias/aliases.rb +0 -0
  173. data/lib/puppet/provider/maillist/mailman.rb +0 -0
  174. data/lib/puppet/provider/mount/parsed.rb +0 -0
  175. data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
  176. data/lib/puppet/provider/package/appdmg.rb +1 -1
  177. data/lib/puppet/provider/package/apple.rb +1 -1
  178. data/lib/puppet/provider/package/apt.rb +1 -1
  179. data/lib/puppet/provider/package/aptitude.rb +0 -0
  180. data/lib/puppet/provider/package/blastwave.rb +1 -1
  181. data/lib/puppet/provider/package/dpkg.rb +1 -1
  182. data/lib/puppet/provider/package/fink.rb +1 -1
  183. data/lib/puppet/provider/package/freebsd.rb +0 -0
  184. data/lib/puppet/provider/package/gem.rb +0 -0
  185. data/lib/puppet/provider/package/macports.rb +0 -0
  186. data/lib/puppet/provider/package/msi.rb +4 -10
  187. data/lib/puppet/provider/package/nim.rb +8 -8
  188. data/lib/puppet/provider/package/openbsd.rb +1 -1
  189. data/lib/puppet/provider/package/opkg.rb +0 -0
  190. data/lib/puppet/provider/package/pacman.rb +2 -2
  191. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  192. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  193. data/lib/puppet/provider/package/ports.rb +0 -0
  194. data/lib/puppet/provider/package/rpm.rb +39 -3
  195. data/lib/puppet/provider/package/sun.rb +3 -3
  196. data/lib/puppet/provider/package/sunfreeware.rb +0 -0
  197. data/lib/puppet/provider/package/windows.rb +12 -19
  198. data/lib/puppet/provider/package/windows/package.rb +1 -1
  199. data/lib/puppet/provider/package/yum.rb +2 -2
  200. data/lib/puppet/provider/parsedfile.rb +0 -0
  201. data/lib/puppet/provider/port/parsed.rb +0 -0
  202. data/lib/puppet/provider/service/base.rb +0 -0
  203. data/lib/puppet/provider/service/bsd.rb +3 -3
  204. data/lib/puppet/provider/service/daemontools.rb +8 -8
  205. data/lib/puppet/provider/service/debian.rb +0 -0
  206. data/lib/puppet/provider/service/freebsd.rb +3 -3
  207. data/lib/puppet/provider/service/init.rb +5 -4
  208. data/lib/puppet/provider/service/launchd.rb +35 -24
  209. data/lib/puppet/provider/service/openbsd.rb +23 -0
  210. data/lib/puppet/provider/service/redhat.rb +0 -0
  211. data/lib/puppet/provider/service/runit.rb +3 -3
  212. data/lib/puppet/provider/service/smf.rb +0 -0
  213. data/lib/puppet/provider/service/src.rb +0 -0
  214. data/lib/puppet/provider/service/systemd.rb +0 -0
  215. data/lib/puppet/provider/service/upstart.rb +3 -3
  216. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +2 -2
  217. data/lib/puppet/provider/sshkey/parsed.rb +0 -0
  218. data/lib/puppet/provider/user/aix.rb +0 -0
  219. data/lib/puppet/provider/user/directoryservice.rb +1 -1
  220. data/lib/puppet/provider/user/useradd.rb +1 -1
  221. data/lib/puppet/provider/zone/solaris.rb +1 -1
  222. data/lib/puppet/rails/benchmark.rb +1 -1
  223. data/lib/puppet/reference/configuration.rb +1 -2
  224. data/lib/puppet/reference/indirection.rb +12 -14
  225. data/lib/puppet/relationship.rb +7 -4
  226. data/lib/puppet/reports.rb +2 -2
  227. data/lib/puppet/reports/rrdgraph.rb +1 -1
  228. data/lib/puppet/reports/store.rb +3 -3
  229. data/lib/puppet/reports/tagmail.rb +2 -2
  230. data/lib/puppet/resource.rb +66 -8
  231. data/lib/puppet/resource/catalog.rb +18 -25
  232. data/lib/puppet/resource/status.rb +10 -4
  233. data/lib/puppet/run.rb +6 -2
  234. data/lib/puppet/settings.rb +39 -119
  235. data/lib/puppet/settings/base_setting.rb +8 -9
  236. data/lib/puppet/settings/directory_setting.rb +8 -0
  237. data/lib/puppet/settings/file_setting.rb +35 -1
  238. data/lib/puppet/settings/priority_setting.rb +42 -0
  239. data/lib/puppet/ssl.rb +4 -0
  240. data/lib/puppet/ssl/certificate.rb +18 -0
  241. data/lib/puppet/ssl/certificate_authority.rb +101 -72
  242. data/lib/puppet/ssl/certificate_authority/autosign_command.rb +44 -0
  243. data/lib/puppet/ssl/certificate_authority/interface.rb +21 -17
  244. data/lib/puppet/ssl/certificate_factory.rb +38 -12
  245. data/lib/puppet/ssl/certificate_request.rb +201 -47
  246. data/lib/puppet/ssl/certificate_request_attributes.rb +34 -0
  247. data/lib/puppet/ssl/certificate_revocation_list.rb +2 -2
  248. data/lib/puppet/ssl/host.rb +21 -10
  249. data/lib/puppet/ssl/inventory.rb +6 -10
  250. data/lib/puppet/ssl/key.rb +1 -1
  251. data/lib/puppet/ssl/oids.rb +78 -0
  252. data/lib/puppet/ssl/validator.rb +41 -97
  253. data/lib/puppet/ssl/validator/default_validator.rb +153 -0
  254. data/lib/puppet/ssl/validator/no_validator.rb +17 -0
  255. data/lib/puppet/status.rb +4 -0
  256. data/lib/puppet/test/test_helper.rb +5 -0
  257. data/lib/puppet/transaction.rb +13 -0
  258. data/lib/puppet/transaction/event.rb +8 -3
  259. data/lib/puppet/transaction/report.rb +6 -2
  260. data/lib/puppet/transaction/resource_harness.rb +173 -115
  261. data/lib/puppet/type.rb +30 -13
  262. data/lib/puppet/type/augeas.rb +12 -46
  263. data/lib/puppet/type/component.rb +1 -7
  264. data/lib/puppet/type/cron.rb +0 -0
  265. data/lib/puppet/type/exec.rb +13 -1
  266. data/lib/puppet/type/file.rb +19 -10
  267. data/lib/puppet/type/file/checksum.rb +0 -0
  268. data/lib/puppet/type/file/content.rb +3 -0
  269. data/lib/puppet/type/file/ensure.rb +33 -15
  270. data/lib/puppet/type/file/group.rb +0 -0
  271. data/lib/puppet/type/file/mode.rb +6 -2
  272. data/lib/puppet/type/file/owner.rb +0 -0
  273. data/lib/puppet/type/file/source.rb +65 -14
  274. data/lib/puppet/type/file/target.rb +6 -6
  275. data/lib/puppet/type/file/type.rb +0 -0
  276. data/lib/puppet/type/filebucket.rb +0 -0
  277. data/lib/puppet/type/group.rb +18 -0
  278. data/lib/puppet/type/host.rb +0 -0
  279. data/lib/puppet/type/k5login.rb +4 -4
  280. data/lib/puppet/type/mailalias.rb +0 -0
  281. data/lib/puppet/type/maillist.rb +0 -0
  282. data/lib/puppet/type/mount.rb +15 -1
  283. data/lib/puppet/type/package.rb +7 -1
  284. data/lib/puppet/type/port.rb +0 -0
  285. data/lib/puppet/type/schedule.rb +9 -4
  286. data/lib/puppet/type/service.rb +1 -1
  287. data/lib/puppet/type/sshkey.rb +0 -0
  288. data/lib/puppet/type/tidy.rb +1 -1
  289. data/lib/puppet/type/user.rb +3 -0
  290. data/lib/puppet/type/yumrepo.rb +8 -6
  291. data/lib/puppet/type/zpool.rb +0 -0
  292. data/lib/puppet/util.rb +4 -31
  293. data/lib/puppet/util/adsi.rb +73 -17
  294. data/lib/puppet/util/autoload.rb +3 -3
  295. data/lib/puppet/util/backups.rb +4 -4
  296. data/lib/puppet/util/cacher.rb +7 -13
  297. data/lib/puppet/util/checksums.rb +2 -2
  298. data/lib/puppet/util/classgen.rb +3 -1
  299. data/lib/puppet/util/colors.rb +1 -0
  300. data/lib/puppet/util/command_line.rb +5 -0
  301. data/lib/puppet/util/docs.rb +33 -27
  302. data/lib/puppet/util/execution.rb +42 -18
  303. data/lib/puppet/util/filetype.rb +3 -3
  304. data/lib/puppet/util/instance_loader.rb +2 -2
  305. data/lib/puppet/util/instrumentation.rb +23 -42
  306. data/lib/puppet/util/instrumentation/data.rb +11 -4
  307. data/lib/puppet/util/instrumentation/indirection_probe.rb +11 -4
  308. data/lib/puppet/util/instrumentation/instrumentable.rb +7 -14
  309. data/lib/puppet/util/instrumentation/listener.rb +15 -8
  310. data/lib/puppet/util/instrumentation/listeners/log.rb +4 -10
  311. data/lib/puppet/util/instrumentation/listeners/performance.rb +8 -14
  312. data/lib/puppet/util/limits.rb +12 -0
  313. data/lib/puppet/util/lockfile.rb +2 -2
  314. data/lib/puppet/util/log.rb +14 -6
  315. data/lib/puppet/util/log/destinations.rb +23 -1
  316. data/lib/puppet/util/metric.rb +9 -3
  317. data/lib/puppet/util/monkey_patches.rb +7 -2
  318. data/lib/puppet/util/network_device/config.rb +1 -1
  319. data/lib/puppet/util/plugins.rb +1 -1
  320. data/lib/puppet/util/posix.rb +0 -0
  321. data/lib/puppet/util/profiler.rb +7 -2
  322. data/lib/puppet/util/provider_features.rb +2 -2
  323. data/lib/puppet/util/rdoc.rb +28 -30
  324. data/lib/puppet/util/rdoc/code_objects.rb +75 -25
  325. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
  326. data/lib/puppet/util/rdoc/parser.rb +12 -487
  327. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +477 -0
  328. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc1.rb +19 -0
  329. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +14 -0
  330. data/lib/puppet/util/reference.rb +1 -1
  331. data/lib/puppet/util/resource_template.rb +1 -1
  332. data/lib/puppet/util/selinux.rb +1 -1
  333. data/lib/puppet/util/storage.rb +2 -2
  334. data/lib/puppet/util/suidmanager.rb +1 -1
  335. data/lib/puppet/util/tag_set.rb +29 -0
  336. data/lib/puppet/util/tagging.rb +8 -24
  337. data/lib/puppet/util/watched_file.rb +1 -1
  338. data/lib/puppet/util/watcher.rb +1 -1
  339. data/lib/puppet/util/windows.rb +3 -0
  340. data/lib/puppet/util/windows/access_control_entry.rb +84 -0
  341. data/lib/puppet/util/windows/access_control_list.rb +106 -0
  342. data/lib/puppet/util/windows/file.rb +213 -0
  343. data/lib/puppet/util/windows/process.rb +199 -0
  344. data/lib/puppet/util/windows/root_certs.rb +52 -37
  345. data/lib/puppet/util/windows/security.rb +270 -245
  346. data/lib/puppet/util/windows/security_descriptor.rb +62 -0
  347. data/lib/puppet/util/windows/sid.rb +26 -4
  348. data/lib/puppet/version.rb +2 -2
  349. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +1 -1
  350. data/spec/fixtures/unit/indirector/{hiera → data_binding/hiera}/global.yaml +0 -0
  351. data/spec/fixtures/unit/indirector/data_binding/hiera/invalid.yaml +1 -0
  352. data/spec/fixtures/unit/module/trailing-comma.json +24 -0
  353. data/spec/fixtures/unit/util/monkey_patches/x509.pem +32 -0
  354. data/spec/integration/application/apply_spec.rb +1 -1
  355. data/spec/integration/application/doc_spec.rb +1 -1
  356. data/spec/integration/configurer_spec.rb +4 -2
  357. data/spec/integration/data_binding.rb +100 -0
  358. data/spec/integration/indirector/catalog/compiler_spec.rb +16 -13
  359. data/spec/integration/indirector/direct_file_server_spec.rb +3 -5
  360. data/spec/integration/indirector/file_content/file_server_spec.rb +2 -2
  361. data/spec/integration/node/facts_spec.rb +1 -1
  362. data/spec/integration/node_spec.rb +1 -1
  363. data/spec/integration/parser/compiler_spec.rb +90 -0
  364. data/spec/integration/parser/parser_spec.rb +2 -2
  365. data/spec/integration/provider/cron/crontab_spec.rb +3 -5
  366. data/spec/integration/resource/catalog_spec.rb +1 -1
  367. data/spec/integration/ssl/autosign_spec.rb +90 -0
  368. data/spec/integration/ssl/certificate_authority_spec.rb +62 -69
  369. data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
  370. data/spec/integration/ssl/host_spec.rb +1 -1
  371. data/spec/integration/transaction_spec.rb +13 -13
  372. data/spec/integration/type/exec_spec.rb +2 -2
  373. data/spec/integration/type/file_spec.rb +287 -45
  374. data/spec/integration/type/tidy_spec.rb +3 -3
  375. data/spec/integration/util/rdoc/parser_spec.rb +236 -35
  376. data/spec/integration/util/settings_spec.rb +1 -1
  377. data/spec/integration/util/windows/process_spec.rb +22 -0
  378. data/spec/integration/util/windows/security_spec.rb +316 -106
  379. data/spec/lib/matchers/containment_matchers.rb +52 -0
  380. data/spec/lib/puppet_spec/compiler.rb +6 -0
  381. data/spec/lib/puppet_spec/files.rb +20 -21
  382. data/spec/shared_behaviours/documentation_on_faces.rb +3 -3
  383. data/spec/shared_behaviours/file_server_terminus.rb +2 -2
  384. data/spec/shared_contexts/platform.rb +1 -0
  385. data/spec/spec_helper.rb +13 -1
  386. data/spec/unit/agent_spec.rb +0 -12
  387. data/spec/unit/application/agent_spec.rb +4 -4
  388. data/spec/unit/application/apply_spec.rb +18 -2
  389. data/spec/unit/application/cert_spec.rb +8 -6
  390. data/spec/unit/application/device_spec.rb +1 -1
  391. data/spec/unit/application/filebucket_spec.rb +1 -1
  392. data/spec/unit/application/inspect_spec.rb +1 -1
  393. data/spec/unit/application_spec.rb +24 -0
  394. data/spec/unit/configurer/downloader_spec.rb +8 -7
  395. data/spec/unit/configurer/fact_handler_spec.rb +23 -0
  396. data/spec/unit/configurer/plugin_handler_spec.rb +7 -2
  397. data/spec/unit/configurer_spec.rb +15 -5
  398. data/spec/unit/{provider/confine → confine}/exists_spec.rb +12 -12
  399. data/spec/unit/{provider/confine → confine}/false_spec.rb +9 -9
  400. data/spec/unit/{provider/confine → confine}/feature_spec.rb +10 -10
  401. data/spec/unit/{provider/confine → confine}/true_spec.rb +7 -7
  402. data/spec/unit/{provider/confine → confine}/variable_spec.rb +16 -16
  403. data/spec/unit/{provider/confine_collection_spec.rb → confine_collection_spec.rb} +30 -30
  404. data/spec/unit/{provider/confine_spec.rb → confine_spec.rb} +11 -11
  405. data/spec/unit/{provider/confiner_spec.rb → confiner_spec.rb} +4 -4
  406. data/spec/unit/face/parser_spec.rb +54 -0
  407. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  408. data/spec/unit/file_serving/base_spec.rb +32 -9
  409. data/spec/unit/file_serving/configuration_spec.rb +7 -7
  410. data/spec/unit/file_serving/content_spec.rb +12 -7
  411. data/spec/unit/file_serving/fileset_spec.rb +57 -27
  412. data/spec/unit/file_serving/metadata_spec.rb +74 -12
  413. data/spec/unit/file_serving/mount/file_spec.rb +10 -10
  414. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +73 -0
  415. data/spec/unit/file_system/file_spec.rb +486 -0
  416. data/spec/unit/file_system/tempfile_spec.rb +48 -0
  417. data/spec/unit/graph/relationship_graph_spec.rb +0 -6
  418. data/spec/unit/hiera_puppet_spec.rb +2 -2
  419. data/spec/unit/indirector/catalog/compiler_spec.rb +15 -19
  420. data/spec/unit/indirector/certificate_status/file_spec.rb +30 -40
  421. data/spec/unit/indirector/data_binding/hiera_spec.rb +95 -2
  422. data/spec/unit/indirector/direct_file_server_spec.rb +6 -6
  423. data/spec/unit/indirector/facts/facter_spec.rb +33 -0
  424. data/spec/unit/indirector/file_bucket_file/file_spec.rb +61 -52
  425. data/spec/unit/indirector/file_metadata/file_spec.rb +2 -2
  426. data/spec/unit/indirector/file_server_spec.rb +4 -4
  427. data/spec/unit/indirector/json_spec.rb +4 -4
  428. data/spec/unit/indirector/key/file_spec.rb +13 -14
  429. data/spec/unit/indirector/resource/ral_spec.rb +7 -0
  430. data/spec/unit/indirector/resource/store_configs_spec.rb +11 -0
  431. data/spec/unit/indirector/rest_spec.rb +7 -3
  432. data/spec/unit/indirector/ssl_file_spec.rb +14 -17
  433. data/spec/unit/indirector/yaml_spec.rb +4 -4
  434. data/spec/unit/module_spec.rb +43 -15
  435. data/spec/unit/module_tool/tar/gnu_spec.rb +2 -2
  436. data/spec/unit/module_tool/tar/solaris_spec.rb +2 -2
  437. data/spec/unit/module_tool/tar_spec.rb +45 -0
  438. data/spec/unit/network/authconfig_spec.rb +2 -1
  439. data/spec/unit/network/authentication_spec.rb +2 -2
  440. data/spec/unit/network/format_handler_spec.rb +2 -2
  441. data/spec/unit/network/formats_spec.rb +24 -0
  442. data/spec/unit/network/http/connection_spec.rb +76 -199
  443. data/spec/unit/network/http/handler_spec.rb +33 -34
  444. data/spec/unit/network/http_pool_spec.rb +8 -5
  445. data/spec/unit/node/environment_spec.rb +76 -90
  446. data/spec/unit/node/facts_spec.rb +20 -3
  447. data/spec/unit/node_spec.rb +43 -0
  448. data/spec/unit/parameter/boolean_spec.rb +22 -12
  449. data/spec/unit/parser/ast/resourceparam_spec.rb +51 -0
  450. data/spec/unit/parser/compiler_spec.rb +103 -35
  451. data/spec/unit/parser/eparser_adapter_spec.rb +12 -12
  452. data/spec/unit/parser/files_spec.rb +11 -11
  453. data/spec/unit/parser/functions/contain_spec.rb +185 -0
  454. data/spec/unit/parser/functions/create_resources_spec.rb +13 -5
  455. data/spec/unit/parser/functions/generate_spec.rb +1 -1
  456. data/spec/unit/parser/functions_spec.rb +2 -2
  457. data/spec/unit/parser/lexer_spec.rb +1 -1
  458. data/spec/unit/parser/methods/each_spec.rb +1 -1
  459. data/spec/unit/parser/methods/{select_spec.rb → filter_spec.rb} +11 -11
  460. data/spec/unit/parser/methods/map_spec.rb +95 -0
  461. data/spec/unit/parser/methods/reduce_spec.rb +12 -11
  462. data/spec/unit/parser/methods/shared.rb +5 -5
  463. data/spec/unit/parser/methods/slice_spec.rb +13 -13
  464. data/spec/unit/parser/parser_spec.rb +1 -1
  465. data/spec/unit/parser/resource/param_spec.rb +44 -0
  466. data/spec/unit/parser/resource_spec.rb +16 -15
  467. data/spec/unit/pops/model/ast_transformer_spec.rb +18 -4
  468. data/spec/unit/pops/parser/lexer_spec.rb +22 -5
  469. data/spec/unit/pops/parser/parse_calls_spec.rb +5 -5
  470. data/spec/unit/pops/transformer/transform_calls_spec.rb +6 -6
  471. data/spec/unit/pops/transformer/transform_containers_spec.rb +2 -2
  472. data/spec/unit/pops/validator/validator_spec.rb +31 -0
  473. data/spec/unit/provider/augeas/augeas_spec.rb +57 -2
  474. data/spec/unit/provider/exec/posix_spec.rb +8 -3
  475. data/spec/unit/provider/file/posix_spec.rb +2 -2
  476. data/spec/unit/provider/group/windows_adsi_spec.rb +70 -3
  477. data/spec/unit/provider/nameservice/directoryservice_spec.rb +3 -3
  478. data/spec/unit/provider/package/apt_spec.rb +1 -1
  479. data/spec/unit/provider/package/msi_spec.rb +15 -42
  480. data/spec/unit/provider/package/openbsd_spec.rb +3 -3
  481. data/spec/unit/provider/package/rpm_spec.rb +56 -13
  482. data/spec/unit/provider/package/windows_spec.rb +15 -19
  483. data/spec/unit/provider/service/base_spec.rb +1 -1
  484. data/spec/unit/provider/service/daemontools_spec.rb +18 -8
  485. data/spec/unit/provider/service/freebsd_spec.rb +3 -3
  486. data/spec/unit/provider/service/gentoo_spec.rb +5 -2
  487. data/spec/unit/provider/service/init_spec.rb +17 -17
  488. data/spec/unit/provider/service/launchd_spec.rb +76 -23
  489. data/spec/unit/provider/service/openbsd_spec.rb +125 -0
  490. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  491. data/spec/unit/provider/service/runit_spec.rb +12 -5
  492. data/spec/unit/provider/service/upstart_spec.rb +4 -4
  493. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +5 -5
  494. data/spec/unit/provider/user/directoryservice_spec.rb +4 -4
  495. data/spec/unit/provider/zone/solaris_spec.rb +1 -1
  496. data/spec/unit/provider_spec.rb +2 -2
  497. data/spec/unit/reports/http_spec.rb +19 -34
  498. data/spec/unit/reports/store_spec.rb +2 -2
  499. data/spec/unit/resource/catalog_spec.rb +81 -11
  500. data/spec/unit/resource/status_spec.rb +11 -1
  501. data/spec/unit/resource/type_spec.rb +30 -1
  502. data/spec/unit/resource_spec.rb +40 -4
  503. data/spec/unit/settings/file_setting_spec.rb +2 -2
  504. data/spec/unit/settings/path_setting_spec.rb +2 -2
  505. data/spec/unit/settings/priority_setting_spec.rb +66 -0
  506. data/spec/unit/settings_spec.rb +16 -31
  507. data/spec/unit/ssl/certificate_authority/autosign_command_spec.rb +30 -0
  508. data/spec/unit/ssl/certificate_authority_spec.rb +129 -134
  509. data/spec/unit/ssl/certificate_factory_spec.rb +18 -0
  510. data/spec/unit/ssl/certificate_request_attributes_spec.rb +61 -0
  511. data/spec/unit/ssl/certificate_request_spec.rb +103 -0
  512. data/spec/unit/ssl/certificate_spec.rb +31 -18
  513. data/spec/unit/ssl/host_spec.rb +34 -8
  514. data/spec/unit/ssl/inventory_spec.rb +27 -62
  515. data/spec/unit/ssl/key_spec.rb +4 -4
  516. data/spec/unit/ssl/oids_spec.rb +48 -0
  517. data/spec/unit/ssl/validator_spec.rb +49 -6
  518. data/spec/unit/status_spec.rb +9 -0
  519. data/spec/unit/transaction/event_spec.rb +1 -9
  520. data/spec/unit/transaction/report_spec.rb +20 -1
  521. data/spec/unit/transaction/resource_harness_spec.rb +60 -210
  522. data/spec/unit/transaction_spec.rb +54 -8
  523. data/spec/unit/type/component_spec.rb +2 -2
  524. data/spec/unit/type/exec_spec.rb +14 -7
  525. data/spec/unit/type/file/content_spec.rb +13 -2
  526. data/spec/unit/type/file/ctime_spec.rb +1 -1
  527. data/spec/unit/type/file/mode_spec.rb +48 -2
  528. data/spec/unit/type/file/mtime_spec.rb +1 -1
  529. data/spec/unit/type/file/source_spec.rb +177 -7
  530. data/spec/unit/type/file_spec.rb +63 -71
  531. data/spec/unit/type/group_spec.rb +20 -0
  532. data/spec/unit/type/k5login_spec.rb +3 -3
  533. data/spec/unit/type/mount_spec.rb +53 -0
  534. data/spec/unit/type/nagios_spec.rb +216 -0
  535. data/spec/unit/type/package_spec.rb +7 -1
  536. data/spec/unit/type/schedule_spec.rb +6 -0
  537. data/spec/unit/type/service_spec.rb +3 -3
  538. data/spec/unit/type/tidy_spec.rb +14 -14
  539. data/spec/unit/type/user_spec.rb +9 -0
  540. data/spec/unit/type_spec.rb +86 -4
  541. data/spec/unit/util/adsi_spec.rb +120 -12
  542. data/spec/unit/util/autoload_spec.rb +14 -14
  543. data/spec/unit/util/backups_spec.rb +29 -21
  544. data/spec/unit/util/checksums_spec.rb +2 -1
  545. data/spec/unit/util/command_line_spec.rb +41 -0
  546. data/spec/unit/util/docs_spec.rb +91 -0
  547. data/spec/unit/util/execution_spec.rb +26 -2
  548. data/spec/unit/util/filetype_spec.rb +7 -7
  549. data/spec/unit/util/lockfile_spec.rb +2 -2
  550. data/spec/unit/util/log/destinations_spec.rb +32 -0
  551. data/spec/unit/util/monkey_patches_spec.rb +41 -0
  552. data/spec/unit/util/pidlock_spec.rb +6 -6
  553. data/spec/unit/util/rdoc/parser_spec.rb +15 -13
  554. data/spec/unit/util/rdoc_spec.rb +18 -24
  555. data/spec/unit/util/resource_template_spec.rb +3 -3
  556. data/spec/unit/util/selinux_spec.rb +4 -2
  557. data/spec/unit/util/storage_spec.rb +4 -4
  558. data/spec/unit/util/suidmanager_spec.rb +7 -0
  559. data/spec/unit/util/tag_set_spec.rb +46 -0
  560. data/spec/unit/util/tagging_spec.rb +82 -45
  561. data/spec/unit/util/watcher_spec.rb +4 -1
  562. data/spec/unit/util/windows/access_control_entry_spec.rb +67 -0
  563. data/spec/unit/util/windows/access_control_list_spec.rb +133 -0
  564. data/spec/unit/util/windows/root_certs_spec.rb +10 -8
  565. data/spec/unit/util/windows/security_descriptor_spec.rb +117 -0
  566. data/spec/unit/util/windows/sid_spec.rb +69 -0
  567. data/spec/unit/util_spec.rb +7 -7
  568. data/tasks/ci.rake +17 -36
  569. metadata +2811 -2746
  570. checksums.yaml +0 -7
  571. data/examples/mac_automount.pp +0 -16
  572. data/examples/mcx_dock_absent.pp +0 -4
  573. data/examples/mcx_dock_default.pp +0 -118
  574. data/examples/mcx_dock_full.pp +0 -125
  575. data/examples/mcx_dock_invalid.pp +0 -9
  576. data/examples/mcx_nogroup.pp +0 -118
  577. data/examples/mcx_notexists_absent.pp +0 -4
  578. data/ext/rack/README +0 -58
  579. data/ext/rack/manifest.pp +0 -59
  580. data/lib/puppet/external/lock.rb +0 -63
  581. data/lib/puppet/indirector/hiera.rb +0 -39
  582. data/lib/puppet/parser/functions/foreach.rb +0 -95
  583. data/spec/integration/network/server/webrick_spec.rb +0 -76
  584. data/spec/integration/parser/functions_spec.rb +0 -16
  585. data/spec/unit/indirector/hiera_spec.rb +0 -154
  586. data/spec/unit/parser/methods/collect_spec.rb +0 -153
  587. data/spec/unit/parser/methods/foreach_spec.rb +0 -91
  588. data/spec/unit/parser/methods/reject_spec.rb +0 -73
  589. data/spec/unit/resource/resource_type.json +0 -34
@@ -71,7 +71,7 @@ describe Puppet::Util::Autoload do
71
71
 
72
72
  [RuntimeError, LoadError, SyntaxError].each do |error|
73
73
  it "should die with Puppet::Error if a #{error.to_s} exception is thrown" do
74
- File.stubs(:exist?).returns true
74
+ Puppet::FileSystem::File.stubs(:exist?).returns true
75
75
 
76
76
  Kernel.expects(:load).raises error
77
77
 
@@ -84,7 +84,7 @@ describe Puppet::Util::Autoload do
84
84
  end
85
85
 
86
86
  it "should register loaded files with the autoloader" do
87
- File.stubs(:exist?).returns true
87
+ Puppet::FileSystem::File.stubs(:exist?).returns true
88
88
  Kernel.stubs(:load)
89
89
  @autoload.load("myfile")
90
90
 
@@ -94,7 +94,7 @@ describe Puppet::Util::Autoload do
94
94
  end
95
95
 
96
96
  it "should be seen by loaded? on the instance using the short name" do
97
- File.stubs(:exist?).returns true
97
+ Puppet::FileSystem::File.stubs(:exist?).returns true
98
98
  Kernel.stubs(:load)
99
99
  @autoload.load("myfile")
100
100
 
@@ -104,7 +104,7 @@ describe Puppet::Util::Autoload do
104
104
  end
105
105
 
106
106
  it "should register loaded files with the main loaded file list so they are not reloaded by ruby" do
107
- File.stubs(:exist?).returns true
107
+ Puppet::FileSystem::File.stubs(:exist?).returns true
108
108
  Kernel.stubs(:load)
109
109
 
110
110
  @autoload.load("myfile")
@@ -117,7 +117,7 @@ describe Puppet::Util::Autoload do
117
117
  it "should load the first file in the searchpath" do
118
118
  @autoload.stubs(:search_directories).returns [make_absolute("/a"), make_absolute("/b")]
119
119
  FileTest.stubs(:directory?).returns true
120
- File.stubs(:exist?).returns true
120
+ Puppet::FileSystem::File.stubs(:exist?).returns true
121
121
  Kernel.expects(:load).with(make_absolute("/a/tmp/myfile.rb"), optionally(anything))
122
122
 
123
123
  @autoload.load("myfile")
@@ -126,7 +126,7 @@ describe Puppet::Util::Autoload do
126
126
  end
127
127
 
128
128
  it "should treat equivalent paths to a loaded file as loaded" do
129
- File.stubs(:exist?).returns true
129
+ Puppet::FileSystem::File.stubs(:exist?).returns true
130
130
  Kernel.stubs(:load)
131
131
  @autoload.load("myfile")
132
132
 
@@ -144,7 +144,7 @@ describe Puppet::Util::Autoload do
144
144
  @autoload.class.stubs(:search_directories).returns [make_absolute("/a")]
145
145
  FileTest.stubs(:directory?).returns true
146
146
  Dir.stubs(:glob).returns [make_absolute("/a/foo/file.rb")]
147
- File.stubs(:exist?).returns true
147
+ Puppet::FileSystem::File.stubs(:exist?).returns true
148
148
  @time_a = Time.utc(2010, 'jan', 1, 6, 30)
149
149
  File.stubs(:mtime).returns @time_a
150
150
 
@@ -185,7 +185,7 @@ describe Puppet::Util::Autoload do
185
185
 
186
186
  it "changes should be seen by changed? on the instance using the short name" do
187
187
  File.stubs(:mtime).returns(@first_time)
188
- File.stubs(:exist?).returns true
188
+ Puppet::FileSystem::File.stubs(:exist?).returns true
189
189
  Kernel.stubs(:load)
190
190
  @autoload.load("myfile")
191
191
  @autoload.loaded?("myfile").should be
@@ -206,14 +206,14 @@ describe Puppet::Util::Autoload do
206
206
 
207
207
  it "should reload if mtime changes" do
208
208
  File.stubs(:mtime).with(@file_a).returns(@first_time + 60)
209
- File.stubs(:exist?).with(@file_a).returns true
209
+ Puppet::FileSystem::File.stubs(:exist?).with(@file_a).returns true
210
210
  Kernel.expects(:load).with(@file_a, optionally(anything))
211
211
  @autoload.class.reload_changed
212
212
  end
213
213
 
214
214
  it "should do nothing if the file is deleted" do
215
215
  File.stubs(:mtime).with(@file_a).raises(Errno::ENOENT)
216
- File.stubs(:exist?).with(@file_a).returns false
216
+ Puppet::FileSystem::File.stubs(:exist?).with(@file_a).returns false
217
217
  Kernel.expects(:load).never
218
218
  @autoload.class.reload_changed
219
219
  end
@@ -228,8 +228,8 @@ describe Puppet::Util::Autoload do
228
228
  File.expects(:mtime).with(@file_a).returns(@first_time)
229
229
  @autoload.class.mark_loaded("file", @file_a)
230
230
  File.stubs(:mtime).with(@file_a).raises(Errno::ENOENT)
231
- File.stubs(:exist?).with(@file_a).returns false
232
- File.stubs(:exist?).with(@file_b).returns true
231
+ Puppet::FileSystem::File.stubs(:exist?).with(@file_a).returns false
232
+ Puppet::FileSystem::File.stubs(:exist?).with(@file_b).returns true
233
233
  File.stubs(:mtime).with(@file_b).returns @first_time
234
234
  Kernel.expects(:load).with(@file_b, optionally(anything))
235
235
  @autoload.class.reload_changed
@@ -238,11 +238,11 @@ describe Puppet::Util::Autoload do
238
238
 
239
239
  it "should load a/file when b/file is loaded and a/file is created" do
240
240
  File.stubs(:mtime).with(@file_b).returns @first_time
241
- File.stubs(:exist?).with(@file_b).returns true
241
+ Puppet::FileSystem::File.stubs(:exist?).with(@file_b).returns true
242
242
  @autoload.class.mark_loaded("file", @file_b)
243
243
 
244
244
  File.stubs(:mtime).with(@file_a).returns @first_time
245
- File.stubs(:exist?).with(@file_a).returns true
245
+ Puppet::FileSystem::File.stubs(:exist?).with(@file_a).returns true
246
246
  Kernel.expects(:load).with(@file_a, optionally(anything))
247
247
  @autoload.class.reload_changed
248
248
  @autoload.class.send(:loaded)["file"].should == [@file_a, @first_time]
@@ -20,7 +20,7 @@ describe Puppet::Util::Backups do
20
20
  file = Puppet::Type.type(:file).new(:name => path)
21
21
 
22
22
  file.expects(:bucket).never
23
- FileTest.expects(:exists?).with(path).returns false
23
+ Puppet::FileSystem::File.expects(:exist?).with(path).returns false
24
24
 
25
25
  file.perform_backup
26
26
  end
@@ -29,23 +29,25 @@ describe Puppet::Util::Backups do
29
29
  file = Puppet::Type.type(:file).new(:name => path, :backup => false)
30
30
 
31
31
  file.expects(:bucket).never
32
- FileTest.expects(:exists?).never
32
+ Puppet::FileSystem::File.expects(:exist?).never
33
33
 
34
34
  file.perform_backup
35
35
  end
36
36
 
37
37
  it "a bucket should be used when provided" do
38
- File.stubs(:lstat).with(path).returns(mock('lstat', :ftype => 'file'))
38
+ stub_file = stub(path, :lstat => mock('lstat', :ftype => 'file'))
39
+ Puppet::FileSystem::File.expects(:new).with(path).returns stub_file
39
40
  bucket.expects(:backup).with(path).returns("mysum")
40
- FileTest.expects(:exists?).with(path).returns(true)
41
+ Puppet::FileSystem::File.expects(:exist?).with(path).returns(true)
41
42
 
42
43
  file.perform_backup
43
44
  end
44
45
 
45
46
  it "should propagate any exceptions encountered when backing up to a filebucket" do
46
- File.stubs(:lstat).with(path).returns(mock('lstat', :ftype => 'file'))
47
+ stub_file = stub(path, :lstat => mock('lstat', :ftype => 'file'))
48
+ Puppet::FileSystem::File.expects(:new).with(path).returns stub_file
47
49
  bucket.expects(:backup).raises ArgumentError
48
- FileTest.expects(:exists?).with(path).returns(true)
50
+ Puppet::FileSystem::File.expects(:exist?).with(path).returns(true)
49
51
 
50
52
  lambda { file.perform_backup }.should raise_error(ArgumentError)
51
53
  end
@@ -56,35 +58,39 @@ describe Puppet::Util::Backups do
56
58
  let(:file) { Puppet::Type.type(:file).new(:name => path, :backup => '.'+ext) }
57
59
 
58
60
  it "should remove any local backup if one exists" do
59
- File.expects(:lstat).with(backup).returns stub("stat", :ftype => "file")
60
- File.expects(:unlink).with(backup)
61
+ stub_file = stub(backup, :lstat => stub('stat', :ftype => 'file'))
62
+ Puppet::FileSystem::File.expects(:new).with(backup).returns stub_file
63
+ Puppet::FileSystem::File.expects(:unlink).with(backup)
61
64
  FileUtils.stubs(:cp_r)
62
- FileTest.expects(:exists?).with(path).returns(true)
65
+ Puppet::FileSystem::File.expects(:exist?).with(path).returns(true)
63
66
 
64
67
  file.perform_backup
65
68
  end
66
69
 
67
70
  it "should fail when the old backup can't be removed" do
68
- File.expects(:lstat).with(backup).returns stub("stat", :ftype => "file")
69
- File.expects(:unlink).with(backup).raises ArgumentError
71
+ stub_file = stub(backup, :lstat => stub('stat', :ftype => 'file'))
72
+ Puppet::FileSystem::File.expects(:new).with(backup).returns stub_file
73
+ Puppet::FileSystem::File.expects(:unlink).with(backup).raises ArgumentError
70
74
  FileUtils.expects(:cp_r).never
71
- FileTest.expects(:exists?).with(path).returns(true)
75
+ Puppet::FileSystem::File.expects(:exist?).with(path).returns(true)
72
76
 
73
77
  lambda { file.perform_backup }.should raise_error(Puppet::Error)
74
78
  end
75
79
 
76
80
  it "should not try to remove backups that don't exist" do
77
- File.expects(:lstat).with(backup).raises(Errno::ENOENT)
78
- File.expects(:unlink).with(backup).never
81
+ stub_file = stub(backup)
82
+ Puppet::FileSystem::File.expects(:new).with(backup).returns stub_file
83
+ stub_file.expects(:lstat).raises(Errno::ENOENT)
84
+ Puppet::FileSystem::File.expects(:unlink).with(backup).never
79
85
  FileUtils.stubs(:cp_r)
80
- FileTest.expects(:exists?).with(path).returns(true)
86
+ Puppet::FileSystem::File.expects(:exist?).with(path).returns(true)
81
87
 
82
88
  file.perform_backup
83
89
  end
84
90
 
85
91
  it "a copy should be created in the local directory" do
86
92
  FileUtils.expects(:cp_r).with(path, backup, :preserve => true)
87
- FileTest.stubs(:exists?).with(path).returns(true)
93
+ Puppet::FileSystem::File.stubs(:exist?).with(path).returns(true)
88
94
 
89
95
  file.perform_backup.should be_true
90
96
  end
@@ -92,7 +98,7 @@ describe Puppet::Util::Backups do
92
98
  it "should propagate exceptions if no backup can be created" do
93
99
  FileUtils.expects(:cp_r).raises ArgumentError
94
100
 
95
- FileTest.stubs(:exists?).with(path).returns(true)
101
+ Puppet::FileSystem::File.stubs(:exist?).with(path).returns(true)
96
102
  lambda { file.perform_backup }.should raise_error(Puppet::Error)
97
103
  end
98
104
  end
@@ -108,10 +114,11 @@ describe Puppet::Util::Backups do
108
114
 
109
115
  bucket.expects(:backup).with(filename).returns true
110
116
 
111
- File.stubs(:lstat).with(path).returns(stub('lstat', :ftype => 'directory'))
117
+ stub_file = stub(path, :lstat => stub('stat', :ftype => 'directory'))
118
+ Puppet::FileSystem::File.expects(:new).with(path).returns stub_file
112
119
 
113
- FileTest.stubs(:exists?).with(path).returns(true)
114
- FileTest.stubs(:exists?).with(filename).returns(true)
120
+ Puppet::FileSystem::File.stubs(:exist?).with(path).returns(true)
121
+ Puppet::FileSystem::File.stubs(:exist?).with(filename).returns(true)
115
122
 
116
123
  file.perform_backup
117
124
  end
@@ -120,7 +127,8 @@ describe Puppet::Util::Backups do
120
127
  file = Puppet::Type.type(:file).new(:name => path, :backup => 'foo', :recurse => true)
121
128
 
122
129
  bucket.expects(:backup).never
123
- File.stubs(:stat).with(path).returns(stub('stat', :ftype => 'directory'))
130
+ stub_file = stub('file', :stat => stub('stat', :ftype => 'directory'))
131
+ Puppet::FileSystem::File.stubs(:new).with(path).returns stub_file
124
132
  Find.expects(:find).never
125
133
 
126
134
  file.perform_backup
@@ -132,7 +132,8 @@ describe Puppet::Util::Checksums do
132
132
  file = "/my/file"
133
133
  stat = mock 'stat', sum => "mysum"
134
134
 
135
- File.expects(:stat).with(file).returns(stat)
135
+ stub_file = stub(file, :stat => stat)
136
+ Puppet::FileSystem::File.expects(:new).with(file).returns stub_file
136
137
 
137
138
  @summer.send(sum.to_s + "_file", file).should == "mysum"
138
139
  end
@@ -143,5 +143,46 @@ describe Puppet::Util::CommandLine do
143
143
  Puppet::Util::CommandLine.available_subcommands
144
144
  end
145
145
  end
146
+
147
+ describe 'when setting process priority' do
148
+ let(:command_line) do
149
+ Puppet::Util::CommandLine.new("puppet", %w{ agent })
150
+ end
151
+
152
+ before :each do
153
+ Puppet::Util::CommandLine::ApplicationSubcommand.any_instance.stubs(:run)
154
+ end
155
+
156
+ it 'should never set priority by default' do
157
+ Process.expects(:setpriority).never
158
+
159
+ command_line.execute
160
+ end
161
+
162
+ it 'should lower the process priority if one has been specified' do
163
+ Puppet[:priority] = 10
164
+
165
+ Process.expects(:setpriority).with(0, Process.pid, 10)
166
+ command_line.execute
167
+ end
168
+
169
+ it 'should warn if trying to raise priority, but not privileged user' do
170
+ Puppet[:priority] = -10
171
+
172
+ Process.expects(:setpriority).raises(Errno::EACCES, 'Permission denied')
173
+ Puppet.expects(:warning).with("Failed to set process priority to '-10'")
174
+
175
+ command_line.execute
176
+ end
177
+
178
+ it "should warn if the platform doesn't support `Process.setpriority`" do
179
+ Puppet[:priority] = 15
180
+
181
+ Process.expects(:setpriority).raises(NotImplementedError, 'NotImplementedError: setpriority() function is unimplemented on this machine')
182
+ Puppet.expects(:warning).with("Failed to set process priority to '15'")
183
+
184
+ command_line.execute
185
+ end
186
+ end
146
187
  end
147
188
  end
@@ -0,0 +1,91 @@
1
+ require 'spec_helper'
2
+
3
+ describe Puppet::Util::Docs do
4
+
5
+ describe '.scrub' do
6
+ let(:my_cleaned_output) do
7
+ %q{This resource type uses the prescribed native tools for creating
8
+ groups and generally uses POSIX APIs for retrieving information
9
+ about them. It does not directly modify `/etc/passwd` or anything.
10
+
11
+ * Just for fun, we'll add a list.
12
+ * list item two,
13
+ which has some add'l lines included in it.
14
+
15
+ And here's a code block:
16
+
17
+ this is the piece of code
18
+ it does something cool
19
+
20
+ **Autorequires:** I would be listing autorequired resources here.}
21
+ end
22
+
23
+ it "strips the least common indent from multi-line strings, without mangling indentation beyond the least common indent" do
24
+ input = <<EOT
25
+ This resource type uses the prescribed native tools for creating
26
+ groups and generally uses POSIX APIs for retrieving information
27
+ about them. It does not directly modify `/etc/passwd` or anything.
28
+
29
+ * Just for fun, we'll add a list.
30
+ * list item two,
31
+ which has some add'l lines included in it.
32
+
33
+ And here's a code block:
34
+
35
+ this is the piece of code
36
+ it does something cool
37
+
38
+ **Autorequires:** I would be listing autorequired resources here.
39
+ EOT
40
+ output = Puppet::Util::Docs.scrub(input)
41
+ expect(output).to eq my_cleaned_output
42
+ end
43
+
44
+ it "ignores the first line when calculating least common indent" do
45
+ input = "This resource type uses the prescribed native tools for creating
46
+ groups and generally uses POSIX APIs for retrieving information
47
+ about them. It does not directly modify `/etc/passwd` or anything.
48
+
49
+ * Just for fun, we'll add a list.
50
+ * list item two,
51
+ which has some add'l lines included in it.
52
+
53
+ And here's a code block:
54
+
55
+ this is the piece of code
56
+ it does something cool
57
+
58
+ **Autorequires:** I would be listing autorequired resources here."
59
+ output = Puppet::Util::Docs.scrub(input)
60
+ expect(output).to eq my_cleaned_output
61
+ end
62
+
63
+ it "strips trailing whitespace from each line, and strips trailing newlines at end" do
64
+ input = "This resource type uses the prescribed native tools for creating \n groups and generally uses POSIX APIs for retrieving information \n about them. It does not directly modify `/etc/passwd` or anything. \n\n * Just for fun, we'll add a list. \n * list item two,\n which has some add'l lines included in it. \n\n And here's a code block:\n\n this is the piece of code \n it does something cool \n\n **Autorequires:** I would be listing autorequired resources here. \n\n"
65
+ output = Puppet::Util::Docs.scrub(input)
66
+ expect(output).to eq my_cleaned_output
67
+ end
68
+
69
+ it "has no side effects on original input string" do
70
+ input = "First line \n second line \n \n indented line \n \n last line\n\n"
71
+ clean_input = "First line \n second line \n \n indented line \n \n last line\n\n"
72
+ not_used = Puppet::Util::Docs.scrub(input)
73
+ expect(input).to eq clean_input
74
+ end
75
+
76
+ it "does not include whitespace-only lines when calculating least common indent" do
77
+ input = "First line\n second line\n \n indented line\n\n last line"
78
+ expected_output = "First line\nsecond line\n\n indented line\n\nlast line"
79
+ #bogus_output = "First line\nsecond line\n\n indented line\n\nlast line"
80
+ output = Puppet::Util::Docs.scrub(input)
81
+ expect(output).to eq expected_output
82
+ end
83
+
84
+ it "accepts a least common indent of zero, thus not adding errors when input string is already scrubbed" do
85
+ expect(Puppet::Util::Docs.scrub(my_cleaned_output)).to eq my_cleaned_output
86
+ end
87
+
88
+
89
+ end
90
+ end
91
+
@@ -311,6 +311,16 @@ describe Puppet::Util::Execution do
311
311
 
312
312
  expect { Puppet::Util::Execution.execute('test command') }.to raise_error(RuntimeError)
313
313
  end
314
+
315
+ it "should return the correct exit status even when exit status is greater than 256" do
316
+ real_exit_status = 3010
317
+
318
+ Puppet::Util::Execution.stubs(:execute_windows).returns(proc_info_stub)
319
+ stub_process_wait(real_exit_status)
320
+ $CHILD_STATUS.stubs(:exitstatus).returns(real_exit_status % 256) # The exitstatus is changed to be mod 256 so that ruby can fit it into 8 bits.
321
+
322
+ Puppet::Util::Execution.execute('test command', :failonfail => false).exitstatus.should == real_exit_status
323
+ end
314
324
  end
315
325
  end
316
326
 
@@ -509,7 +519,7 @@ describe Puppet::Util::Execution do
509
519
  Tempfile.stubs(:new).returns(stdout)
510
520
  stdout.write("My expected command output")
511
521
 
512
- Puppet::Util::Execution.execute('test command', :squelch => true).should == nil
522
+ Puppet::Util::Execution.execute('test command', :squelch => true).should == ''
513
523
  end
514
524
 
515
525
  it "should delete the file used for output if squelch is false" do
@@ -519,7 +529,7 @@ describe Puppet::Util::Execution do
519
529
 
520
530
  Puppet::Util::Execution.execute('test command')
521
531
 
522
- File.should_not be_exist(path)
532
+ Puppet::FileSystem::File.exist?(path).should be_false
523
533
  end
524
534
 
525
535
  it "should not raise an error if the file is open" do
@@ -591,6 +601,20 @@ describe Puppet::Util::Execution do
591
601
  Puppet::Util::Execution.execpipe('echo hello').should == 'hello'
592
602
  end
593
603
 
604
+ it "should print meaningful debug message for string argument" do
605
+ Puppet::Util::Execution.expects(:debug).with("Executing 'echo hello'")
606
+ Puppet::Util::Execution.expects(:open).with('| echo hello 2>&1').returns('hello')
607
+ $CHILD_STATUS.expects(:==).with(0).returns(true)
608
+ Puppet::Util::Execution.execpipe('echo hello')
609
+ end
610
+
611
+ it "should print meaningful debug message for array argument" do
612
+ Puppet::Util::Execution.expects(:debug).with("Executing 'echo hello'")
613
+ Puppet::Util::Execution.expects(:open).with('| echo hello 2>&1').returns('hello')
614
+ $CHILD_STATUS.expects(:==).with(0).returns(true)
615
+ Puppet::Util::Execution.execpipe(['echo','hello'])
616
+ end
617
+
594
618
  it "should execute an array by pasting together with spaces" do
595
619
  Puppet::Util::Execution.expects(:open).with('| echo hello 2>&1').returns('hello')
596
620
  $CHILD_STATUS.expects(:==).with(0).returns(true)
@@ -16,15 +16,15 @@ describe Puppet::Util::FileType do
16
16
 
17
17
  describe "when the file already exists" do
18
18
  it "should return the file's contents when asked to read it" do
19
- File.expects(:exist?).with(path).returns true
19
+ Puppet::FileSystem::File.expects(:exist?).with(path).returns true
20
20
  File.expects(:read).with(path).returns "my text"
21
21
 
22
22
  file.read.should == "my text"
23
23
  end
24
24
 
25
25
  it "should unlink the file when asked to remove it" do
26
- File.expects(:exist?).with(path).returns true
27
- File.expects(:unlink).with(path)
26
+ Puppet::FileSystem::File.expects(:exist?).with(path).returns true
27
+ Puppet::FileSystem::File.expects(:unlink).with(path)
28
28
 
29
29
  file.remove
30
30
  end
@@ -32,7 +32,7 @@ describe Puppet::Util::FileType do
32
32
 
33
33
  describe "when the file does not exist" do
34
34
  it "should return an empty string when asked to read the file" do
35
- File.expects(:exist?).with(path).returns false
35
+ Puppet::FileSystem::File.expects(:exist?).with(path).returns false
36
36
 
37
37
  file.read.should == ""
38
38
  end
@@ -63,13 +63,13 @@ describe Puppet::Util::FileType do
63
63
 
64
64
  describe "when backing up a file" do
65
65
  it "should do nothing if the file does not exist" do
66
- File.expects(:exists?).with(path).returns false
66
+ Puppet::FileSystem::File.expects(:exist?).with(path).returns false
67
67
  file.expects(:bucket).never
68
68
  file.backup
69
69
  end
70
70
 
71
71
  it "should use its filebucket to backup the file if it exists" do
72
- File.expects(:exists?).with(path).returns true
72
+ Puppet::FileSystem::File.expects(:exist?).with(path).returns true
73
73
 
74
74
  bucket = mock 'bucket'
75
75
  bucket.expects(:backup).with(path)
@@ -155,7 +155,7 @@ describe Puppet::Util::FileType do
155
155
  end
156
156
 
157
157
  after :each do
158
- File.should_not be_exist @tmp_cron_path
158
+ Puppet::FileSystem::File.exist?(@tmp_cron_path).should be_false
159
159
  end
160
160
 
161
161
  it "should run crontab as the target user on a temporary file" do