edavis10-cerberus 0.7.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (314) hide show
  1. data/Authors.txt +4 -0
  2. data/Changelog.txt +275 -0
  3. data/Copyright.txt +19 -0
  4. data/License.txt +20 -0
  5. data/Rakefile +166 -0
  6. data/Readme.markdown +132 -0
  7. data/bin/cerberus +10 -0
  8. data/lib/cerberus/builder/base.rb +4 -0
  9. data/lib/cerberus/builder/bjam.rb +30 -0
  10. data/lib/cerberus/builder/maven2.rb +61 -0
  11. data/lib/cerberus/builder/rake.rb +11 -0
  12. data/lib/cerberus/builder/rant.rb +11 -0
  13. data/lib/cerberus/builder/rspec.rb +26 -0
  14. data/lib/cerberus/builder/ruby.rb +33 -0
  15. data/lib/cerberus/builder/ruby_base.rb +50 -0
  16. data/lib/cerberus/cli.rb +81 -0
  17. data/lib/cerberus/component_lazy_loader.rb +89 -0
  18. data/lib/cerberus/config.example.yml +37 -0
  19. data/lib/cerberus/config.rb +48 -0
  20. data/lib/cerberus/config_migration.rb +0 -0
  21. data/lib/cerberus/constants.rb +8 -0
  22. data/lib/cerberus/latch.rb +27 -0
  23. data/lib/cerberus/manager.rb +361 -0
  24. data/lib/cerberus/publisher/base.rb +47 -0
  25. data/lib/cerberus/publisher/campfire.rb +124 -0
  26. data/lib/cerberus/publisher/irc.rb +23 -0
  27. data/lib/cerberus/publisher/jabber.rb +25 -0
  28. data/lib/cerberus/publisher/mail.rb +38 -0
  29. data/lib/cerberus/publisher/netsmtp_tls_fix.rb +73 -0
  30. data/lib/cerberus/publisher/rss.rb +41 -0
  31. data/lib/cerberus/publisher/twitter.rb +30 -0
  32. data/lib/cerberus/scm/base.rb +19 -0
  33. data/lib/cerberus/scm/bzr.rb +62 -0
  34. data/lib/cerberus/scm/cvs.rb +43 -0
  35. data/lib/cerberus/scm/darcs.rb +61 -0
  36. data/lib/cerberus/scm/git.rb +94 -0
  37. data/lib/cerberus/scm/hg.rb +87 -0
  38. data/lib/cerberus/scm/perforce.rb +82 -0
  39. data/lib/cerberus/scm/svn.rb +78 -0
  40. data/lib/cerberus/utils.rb +192 -0
  41. data/lib/vendor/twitter/CHANGES +129 -0
  42. data/lib/vendor/twitter/MIT-LICENSE +20 -0
  43. data/lib/vendor/twitter/README +37 -0
  44. data/lib/vendor/twitter/TODO +7 -0
  45. data/lib/vendor/twitter/lib/twitter.rb +34 -0
  46. data/lib/vendor/twitter/lib/twitter/client.rb +24 -0
  47. data/lib/vendor/twitter/lib/twitter/client/account.rb +24 -0
  48. data/lib/vendor/twitter/lib/twitter/client/auth.rb +27 -0
  49. data/lib/vendor/twitter/lib/twitter/client/base.rb +93 -0
  50. data/lib/vendor/twitter/lib/twitter/client/blocks.rb +35 -0
  51. data/lib/vendor/twitter/lib/twitter/client/favorites.rb +53 -0
  52. data/lib/vendor/twitter/lib/twitter/client/friendship.rb +35 -0
  53. data/lib/vendor/twitter/lib/twitter/client/graph.rb +37 -0
  54. data/lib/vendor/twitter/lib/twitter/client/messaging.rb +79 -0
  55. data/lib/vendor/twitter/lib/twitter/client/profile.rb +29 -0
  56. data/lib/vendor/twitter/lib/twitter/client/search.rb +27 -0
  57. data/lib/vendor/twitter/lib/twitter/client/status.rb +51 -0
  58. data/lib/vendor/twitter/lib/twitter/client/timeline.rb +72 -0
  59. data/lib/vendor/twitter/lib/twitter/client/user.rb +65 -0
  60. data/lib/vendor/twitter/lib/twitter/config.rb +77 -0
  61. data/lib/vendor/twitter/lib/twitter/console.rb +31 -0
  62. data/lib/vendor/twitter/lib/twitter/core.rb +137 -0
  63. data/lib/vendor/twitter/lib/twitter/ext.rb +2 -0
  64. data/lib/vendor/twitter/lib/twitter/ext/stdlib.rb +52 -0
  65. data/lib/vendor/twitter/lib/twitter/extras.rb +39 -0
  66. data/lib/vendor/twitter/lib/twitter/meta.rb +56 -0
  67. data/lib/vendor/twitter/lib/twitter/model.rb +360 -0
  68. data/lib/vendor/twitter/lib/twitter/version.rb +19 -0
  69. data/lib/vendor/twitter/spec/twitter/client/account_spec.rb +28 -0
  70. data/lib/vendor/twitter/spec/twitter/client/auth_spec.rb +34 -0
  71. data/lib/vendor/twitter/spec/twitter/client/base_spec.rb +242 -0
  72. data/lib/vendor/twitter/spec/twitter/client/blocks_spec.rb +76 -0
  73. data/lib/vendor/twitter/spec/twitter/client/favorites_spec.rb +183 -0
  74. data/lib/vendor/twitter/spec/twitter/client/friendship_spec.rb +76 -0
  75. data/lib/vendor/twitter/spec/twitter/client/graph_spec.rb +67 -0
  76. data/lib/vendor/twitter/spec/twitter/client/messaging_spec.rb +135 -0
  77. data/lib/vendor/twitter/spec/twitter/client/profile_spec.rb +91 -0
  78. data/lib/vendor/twitter/spec/twitter/client/search_spec.rb +68 -0
  79. data/lib/vendor/twitter/spec/twitter/client/status_spec.rb +119 -0
  80. data/lib/vendor/twitter/spec/twitter/client/timeline_spec.rb +79 -0
  81. data/lib/vendor/twitter/spec/twitter/client/user_spec.rb +203 -0
  82. data/lib/vendor/twitter/spec/twitter/client_spec.rb +2 -0
  83. data/lib/vendor/twitter/spec/twitter/config_spec.rb +86 -0
  84. data/lib/vendor/twitter/spec/twitter/console_spec.rb +15 -0
  85. data/lib/vendor/twitter/spec/twitter/core_spec.rb +127 -0
  86. data/lib/vendor/twitter/spec/twitter/ext/stdlib_spec.rb +59 -0
  87. data/lib/vendor/twitter/spec/twitter/extras_spec.rb +46 -0
  88. data/lib/vendor/twitter/spec/twitter/meta_spec.rb +90 -0
  89. data/lib/vendor/twitter/spec/twitter/model_spec.rb +508 -0
  90. data/lib/vendor/twitter/spec/twitter/version_spec.rb +19 -0
  91. data/lib/vendor/xmpp4r/CHANGELOG +83 -0
  92. data/lib/vendor/xmpp4r/COPYING +340 -0
  93. data/lib/vendor/xmpp4r/LICENSE +59 -0
  94. data/lib/vendor/xmpp4r/README.rdoc +110 -0
  95. data/lib/vendor/xmpp4r/README_ruby19.txt +43 -0
  96. data/lib/vendor/xmpp4r/Rakefile +262 -0
  97. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/README +56 -0
  98. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/adventure.rb +23 -0
  99. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/adventuremuc.rb +136 -0
  100. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/cube.xml +15 -0
  101. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/tower.xml +69 -0
  102. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/world.rb +424 -0
  103. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/fileserve.conf +11 -0
  104. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/fileserve.rb +346 -0
  105. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/getonline.rb +56 -0
  106. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/gtkmucclient.rb +315 -0
  107. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/migrate.rb +88 -0
  108. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/minimuc.rb +266 -0
  109. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/pep-aggregator/index.xsl +235 -0
  110. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/pep-aggregator/pep-aggregator.rb +147 -0
  111. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/recvfile.rb +84 -0
  112. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/rosterdiscovery.rb +129 -0
  113. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/sendfile.conf +10 -0
  114. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/sendfile.rb +72 -0
  115. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr.rb +51 -0
  116. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr_jabber.rb +43 -0
  117. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr_test.rb +10 -0
  118. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/versionpoll.rb +90 -0
  119. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/xmpping.rb +146 -0
  120. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/xmppingrc.sample +14 -0
  121. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/change_password.rb +41 -0
  122. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/client.rb +70 -0
  123. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/component.rb +11 -0
  124. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/echo.rb +37 -0
  125. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/jabbersend.rb +41 -0
  126. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/mass_sender.rb +68 -0
  127. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/muc_owner_config.rb +12 -0
  128. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/mucinfo.rb +41 -0
  129. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/mucsimplebot.rb +82 -0
  130. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/register.rb +42 -0
  131. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/remove_registration.rb +18 -0
  132. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/roster.rb +44 -0
  133. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/rosterprint.rb +50 -0
  134. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/rosterrename.rb +34 -0
  135. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/rosterwatch.rb +171 -0
  136. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/send_vcard.rb +67 -0
  137. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/tune_client.rb +56 -0
  138. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/tune_server.rb +58 -0
  139. data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/versionbot.rb +75 -0
  140. data/lib/vendor/xmpp4r/lib/xmpp4r.rb +116 -0
  141. data/lib/vendor/xmpp4r/lib/xmpp4r/base64.rb +32 -0
  142. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams.rb +15 -0
  143. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/filetransfer.rb +319 -0
  144. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/ibb/base.rb +257 -0
  145. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/ibb/initiator.rb +31 -0
  146. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/ibb/target.rb +47 -0
  147. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/base.rb +152 -0
  148. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/initiator.rb +86 -0
  149. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/server.rb +198 -0
  150. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/socks5.rb +65 -0
  151. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb +73 -0
  152. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb.orig +62 -0
  153. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/iq/bytestreams.rb +170 -0
  154. data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/iq/si.rb +206 -0
  155. data/lib/vendor/xmpp4r/lib/xmpp4r/callbacks.rb +124 -0
  156. data/lib/vendor/xmpp4r/lib/xmpp4r/caps.rb +1 -0
  157. data/lib/vendor/xmpp4r/lib/xmpp4r/caps/c.rb +53 -0
  158. data/lib/vendor/xmpp4r/lib/xmpp4r/caps/helper/generator.rb +160 -0
  159. data/lib/vendor/xmpp4r/lib/xmpp4r/caps/helper/helper.rb +87 -0
  160. data/lib/vendor/xmpp4r/lib/xmpp4r/client.rb +317 -0
  161. data/lib/vendor/xmpp4r/lib/xmpp4r/command/helper/responder.rb +53 -0
  162. data/lib/vendor/xmpp4r/lib/xmpp4r/command/iq/command.rb +154 -0
  163. data/lib/vendor/xmpp4r/lib/xmpp4r/component.rb +103 -0
  164. data/lib/vendor/xmpp4r/lib/xmpp4r/connection.rb +219 -0
  165. data/lib/vendor/xmpp4r/lib/xmpp4r/dataforms.rb +5 -0
  166. data/lib/vendor/xmpp4r/lib/xmpp4r/dataforms/x/data.rb +297 -0
  167. data/lib/vendor/xmpp4r/lib/xmpp4r/debuglog.rb +42 -0
  168. data/lib/vendor/xmpp4r/lib/xmpp4r/delay.rb +5 -0
  169. data/lib/vendor/xmpp4r/lib/xmpp4r/delay/x/delay.rb +99 -0
  170. data/lib/vendor/xmpp4r/lib/xmpp4r/discovery.rb +7 -0
  171. data/lib/vendor/xmpp4r/lib/xmpp4r/discovery/helper/responder.rb +165 -0
  172. data/lib/vendor/xmpp4r/lib/xmpp4r/discovery/iq/discoinfo.rb +211 -0
  173. data/lib/vendor/xmpp4r/lib/xmpp4r/discovery/iq/discoitems.rb +147 -0
  174. data/lib/vendor/xmpp4r/lib/xmpp4r/errors.rb +281 -0
  175. data/lib/vendor/xmpp4r/lib/xmpp4r/feature_negotiation.rb +5 -0
  176. data/lib/vendor/xmpp4r/lib/xmpp4r/feature_negotiation/iq/feature.rb +28 -0
  177. data/lib/vendor/xmpp4r/lib/xmpp4r/framework/base.rb +55 -0
  178. data/lib/vendor/xmpp4r/lib/xmpp4r/framework/bot.rb +148 -0
  179. data/lib/vendor/xmpp4r/lib/xmpp4r/httpbinding.rb +5 -0
  180. data/lib/vendor/xmpp4r/lib/xmpp4r/httpbinding/client.rb +285 -0
  181. data/lib/vendor/xmpp4r/lib/xmpp4r/idgenerator.rb +37 -0
  182. data/lib/vendor/xmpp4r/lib/xmpp4r/iq.rb +221 -0
  183. data/lib/vendor/xmpp4r/lib/xmpp4r/jid.rb +167 -0
  184. data/lib/vendor/xmpp4r/lib/xmpp4r/message.rb +148 -0
  185. data/lib/vendor/xmpp4r/lib/xmpp4r/muc.rb +14 -0
  186. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/helper/mucbrowser.rb +92 -0
  187. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/helper/mucclient.rb +462 -0
  188. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/helper/simplemucclient.rb +332 -0
  189. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/iq/mucadmin.rb +23 -0
  190. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/iq/mucadminitem.rb +20 -0
  191. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/iq/mucowner.rb +15 -0
  192. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/item.rb +143 -0
  193. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/x/muc.rb +70 -0
  194. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/x/mucuserinvite.rb +60 -0
  195. data/lib/vendor/xmpp4r/lib/xmpp4r/muc/x/mucuseritem.rb +36 -0
  196. data/lib/vendor/xmpp4r/lib/xmpp4r/presence.rb +232 -0
  197. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub.rb +8 -0
  198. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/configuration.rb +86 -0
  199. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/event.rb +49 -0
  200. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/item.rb +35 -0
  201. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/items.rb +44 -0
  202. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/node_config.rb +48 -0
  203. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/publish.rb +24 -0
  204. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/subscription.rb +62 -0
  205. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/subscription_config.rb +67 -0
  206. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/unsubscribe.rb +48 -0
  207. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/nodebrowser.rb +130 -0
  208. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/nodehelper.rb +156 -0
  209. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb +417 -0
  210. data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/iq/pubsub.rb +19 -0
  211. data/lib/vendor/xmpp4r/lib/xmpp4r/query.rb +15 -0
  212. data/lib/vendor/xmpp4r/lib/xmpp4r/rexmladdons.rb +151 -0
  213. data/lib/vendor/xmpp4r/lib/xmpp4r/roster.rb +7 -0
  214. data/lib/vendor/xmpp4r/lib/xmpp4r/roster/helper/roster.rb +519 -0
  215. data/lib/vendor/xmpp4r/lib/xmpp4r/roster/iq/roster.rb +215 -0
  216. data/lib/vendor/xmpp4r/lib/xmpp4r/roster/x/roster.rb +138 -0
  217. data/lib/vendor/xmpp4r/lib/xmpp4r/rpc.rb +2 -0
  218. data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/helper/client.rb +123 -0
  219. data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/helper/server.rb +74 -0
  220. data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/helper/xmlrpcaddons.rb +67 -0
  221. data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/iq/rpc.rb +23 -0
  222. data/lib/vendor/xmpp4r/lib/xmpp4r/sasl.rb +237 -0
  223. data/lib/vendor/xmpp4r/lib/xmpp4r/semaphore.rb +38 -0
  224. data/lib/vendor/xmpp4r/lib/xmpp4r/stream.rb +497 -0
  225. data/lib/vendor/xmpp4r/lib/xmpp4r/streamparser.rb +77 -0
  226. data/lib/vendor/xmpp4r/lib/xmpp4r/tune.rb +2 -0
  227. data/lib/vendor/xmpp4r/lib/xmpp4r/tune/helper/helper.rb +58 -0
  228. data/lib/vendor/xmpp4r/lib/xmpp4r/tune/tune.rb +113 -0
  229. data/lib/vendor/xmpp4r/lib/xmpp4r/vcard.rb +6 -0
  230. data/lib/vendor/xmpp4r/lib/xmpp4r/vcard/helper/vcard.rb +84 -0
  231. data/lib/vendor/xmpp4r/lib/xmpp4r/vcard/iq/vcard.rb +109 -0
  232. data/lib/vendor/xmpp4r/lib/xmpp4r/version.rb +7 -0
  233. data/lib/vendor/xmpp4r/lib/xmpp4r/version/helper/responder.rb +72 -0
  234. data/lib/vendor/xmpp4r/lib/xmpp4r/version/helper/simpleresponder.rb +44 -0
  235. data/lib/vendor/xmpp4r/lib/xmpp4r/version/iq/version.rb +105 -0
  236. data/lib/vendor/xmpp4r/lib/xmpp4r/x.rb +37 -0
  237. data/lib/vendor/xmpp4r/lib/xmpp4r/xhtml.rb +1 -0
  238. data/lib/vendor/xmpp4r/lib/xmpp4r/xhtml/html.rb +115 -0
  239. data/lib/vendor/xmpp4r/lib/xmpp4r/xmpp4r.rb +18 -0
  240. data/lib/vendor/xmpp4r/lib/xmpp4r/xmppelement.rb +168 -0
  241. data/lib/vendor/xmpp4r/lib/xmpp4r/xmppstanza.rb +162 -0
  242. data/lib/vendor/xmpp4r/setup.rb +1586 -0
  243. data/lib/vendor/xmpp4r/test/bytestreams/tc_ibb.rb +186 -0
  244. data/lib/vendor/xmpp4r/test/bytestreams/tc_socks5bytestreams.rb +113 -0
  245. data/lib/vendor/xmpp4r/test/caps/tc_helper.rb +156 -0
  246. data/lib/vendor/xmpp4r/test/dataforms/tc_data.rb +81 -0
  247. data/lib/vendor/xmpp4r/test/delay/tc_xdelay.rb +51 -0
  248. data/lib/vendor/xmpp4r/test/discovery/tc_responder.rb +91 -0
  249. data/lib/vendor/xmpp4r/test/lib/assert_equal_xml.rb +14 -0
  250. data/lib/vendor/xmpp4r/test/lib/clienttester.rb +120 -0
  251. data/lib/vendor/xmpp4r/test/muc/tc_muc_mucclient.rb +830 -0
  252. data/lib/vendor/xmpp4r/test/muc/tc_muc_simplemucclient.rb +114 -0
  253. data/lib/vendor/xmpp4r/test/muc/tc_mucowner.rb +50 -0
  254. data/lib/vendor/xmpp4r/test/pubsub/tc_helper.rb +662 -0
  255. data/lib/vendor/xmpp4r/test/pubsub/tc_nodeconfig.rb +54 -0
  256. data/lib/vendor/xmpp4r/test/pubsub/tc_subscriptionconfig.rb +41 -0
  257. data/lib/vendor/xmpp4r/test/roster/tc_helper.rb +514 -0
  258. data/lib/vendor/xmpp4r/test/roster/tc_iqqueryroster.rb +173 -0
  259. data/lib/vendor/xmpp4r/test/roster/tc_xroster.rb +73 -0
  260. data/lib/vendor/xmpp4r/test/rpc/tc_helper.rb +96 -0
  261. data/lib/vendor/xmpp4r/test/tc_callbacks.rb +129 -0
  262. data/lib/vendor/xmpp4r/test/tc_class_names.rb +146 -0
  263. data/lib/vendor/xmpp4r/test/tc_client.rb +30 -0
  264. data/lib/vendor/xmpp4r/test/tc_errors.rb +146 -0
  265. data/lib/vendor/xmpp4r/test/tc_idgenerator.rb +30 -0
  266. data/lib/vendor/xmpp4r/test/tc_iq.rb +113 -0
  267. data/lib/vendor/xmpp4r/test/tc_iqquery.rb +31 -0
  268. data/lib/vendor/xmpp4r/test/tc_jid.rb +204 -0
  269. data/lib/vendor/xmpp4r/test/tc_message.rb +116 -0
  270. data/lib/vendor/xmpp4r/test/tc_presence.rb +150 -0
  271. data/lib/vendor/xmpp4r/test/tc_rexml.rb +139 -0
  272. data/lib/vendor/xmpp4r/test/tc_stream.rb +229 -0
  273. data/lib/vendor/xmpp4r/test/tc_streamComponent.rb +95 -0
  274. data/lib/vendor/xmpp4r/test/tc_streamError.rb +131 -0
  275. data/lib/vendor/xmpp4r/test/tc_streamSend.rb +59 -0
  276. data/lib/vendor/xmpp4r/test/tc_streamparser.rb +112 -0
  277. data/lib/vendor/xmpp4r/test/tc_xmppstanza.rb +135 -0
  278. data/lib/vendor/xmpp4r/test/ts_xmpp4r.rb +53 -0
  279. data/lib/vendor/xmpp4r/test/tune/tc_helper_recv.rb +84 -0
  280. data/lib/vendor/xmpp4r/test/tune/tc_helper_send.rb +74 -0
  281. data/lib/vendor/xmpp4r/test/tune/tc_tune.rb +79 -0
  282. data/lib/vendor/xmpp4r/test/vcard/tc_helper.rb +49 -0
  283. data/lib/vendor/xmpp4r/test/vcard/tc_iqvcard.rb +62 -0
  284. data/lib/vendor/xmpp4r/test/version/tc_helper.rb +60 -0
  285. data/lib/vendor/xmpp4r/test/version/tc_iqqueryversion.rb +97 -0
  286. data/lib/vendor/xmpp4r/test/xhtml/tc_html.rb +41 -0
  287. data/lib/vendor/xmpp4r/tools/gen_requires.bash +31 -0
  288. data/lib/vendor/xmpp4r/tools/xmpp4r-gemspec-test.rb +11 -0
  289. data/lib/vendor/xmpp4r/xmpp4r.gemspec +291 -0
  290. data/test/bjam_builder_test.rb +134 -0
  291. data/test/config_test.rb +46 -0
  292. data/test/cron_string_test.rb +94 -0
  293. data/test/data/darcs.zip +0 -0
  294. data/test/data/git.zip +0 -0
  295. data/test/data/mercurial.zip +0 -0
  296. data/test/data/subversion.dump +127 -0
  297. data/test/functional_test.rb +442 -0
  298. data/test/integration_test.rb +126 -0
  299. data/test/irc_publisher_test.rb +20 -0
  300. data/test/jabber_publisher_test.rb +22 -0
  301. data/test/mail_publisher_test.rb +27 -0
  302. data/test/maven2_builer_test.rb +82 -0
  303. data/test/mock/irc.rb +34 -0
  304. data/test/mock/manager.rb +35 -0
  305. data/test/mock/marshmallow.rb +17 -0
  306. data/test/mock/twitter.rb +23 -0
  307. data/test/mock/xmpp4r.rb +19 -0
  308. data/test/perforce_scm_test.rb +22 -0
  309. data/test/rspec_builder_test.rb +139 -0
  310. data/test/rss_publisher_test.rb +22 -0
  311. data/test/ruby_builder_test.rb +77 -0
  312. data/test/test_helper.rb +133 -0
  313. data/test/twitter_publisher_test.rb +19 -0
  314. metadata +439 -0
data/Readme.markdown ADDED
@@ -0,0 +1,132 @@
1
+ # Description
2
+
3
+ Cerberus is a Continuous Integration software written in Ruby. Cerberus can be periodically run from scheduler to check if application tests are broken. In the case of test failure, Cerberus will send notification alerts via various methods. Cerberus perfectly works both on Windows and *nix platforms.
4
+
5
+ For more CI theory, [read this document from Martin Fowler][1].
6
+
7
+ Cerberus's website is at [http://cerberus.rubyforge.org][6].
8
+
9
+ ***
10
+
11
+ What does the 'Cerberus' name mean?
12
+ > Quote from Wikipedia (http://en.wikipedia.org/wiki/Cerberus)
13
+ >
14
+ > Cerberus or Kerberos (Kerberos, demon of the pit), was the hound of Hades-a monstrous three-headed dog (sometimes said to have 50 or 100 heads) with a snake for a tail and innumerable snake heads on his back.
15
+ He guarded the gate to Hades (the Greek underworld) and ensured that the dead could not leave and the living could not enter. His brother was Orthrus. He is the offspring of Echidna and Typhon.
16
+
17
+ So, put simply, Cerberus will guard your tests and not allow your project to go to the world of dead.
18
+
19
+ ***
20
+
21
+ There are several CI solutions already present, why do you need to use Cerberus?
22
+
23
+ Main advantages of Cerberus over other solutions include:
24
+
25
+ 1. Cerberus could be installed on any machine not only where the repository is located.
26
+ 2. Cerberus works not only for Rails projects, but for any other Ruby projects as well as for other platforms (Maven2 for Java)
27
+ 3. Cerberus multi-platform solution: it runs excellent both on *nix and Windows.
28
+ 4. Cerberus is distributed via RubyGems, making it very easy to install and very easy to update to the latest stable version
29
+ 5. Cerberus is very easy to start using. Just type 'cerberus add PROJECT_URL|PROJECT_DIR'
30
+ 6. Cerberus is a lightweight solution: a simple command line CI tool that only runs when the repository has changes
31
+
32
+ ## Requirements
33
+
34
+ * ruby - 1.8.2 or higher
35
+ * rake - 0.7.3 or higher (optional)
36
+ * actionmailer - 2.0 or higher (optional)
37
+
38
+ ## Usage
39
+
40
+ Cerberus is installed like any other Ruby gem.
41
+
42
+ gem install cerberus
43
+
44
+ Alternatively, you can get Cerberus in gem, zip or tarball right from [the RubyForge download page][5]
45
+
46
+ Next, add a project that will be watched by Cerberus.
47
+
48
+ cerberus add _REPOSITORY_
49
+
50
+ The repository can be either a file path or URL. Additional parameters can be found in the [wiki][2].
51
+
52
+ Next, go to ~/.cerberus and edit the config.yml file (only needed once after installing Cerberus). Enter your configuration options here like email server, password, user_name and other options. See ActionMailer description - Cerberus uses it as notification layer. An example config file looks like this:
53
+
54
+ publisher:
55
+ mail:
56
+ address: mail.someserver.com
57
+ user_name: foobar
58
+ password: foobaz
59
+ domain: someserver.com
60
+ authentication: login
61
+
62
+ Also check ~/.cerberus/config/<PROJECT_NAME>.yml and make sure that you have right settings specific to the project.
63
+
64
+ Next run Cerberus
65
+
66
+ cerberus build PROJECT_NAME # Run project
67
+
68
+ or
69
+
70
+ cerberus buildall # Run all available projects
71
+
72
+
73
+ Cerberus will check out the latest repository sources and run tests for your project. If tests fail, the notification alerts will be sent
74
+
75
+ You can also schedule Cerberus to run via CRON to automate the process.
76
+
77
+
78
+ ## Features
79
+
80
+ Cerberus currently supports the following SCM tools:
81
+
82
+ * Subversion
83
+ * Git
84
+ * Darcs
85
+ * Perforce
86
+ * CVS
87
+ * Bazaar
88
+ * Mercurial
89
+
90
+ Cerberus currently supports the following notification systems:
91
+
92
+ * Email
93
+ * Jabber
94
+ * IRC
95
+ * RSS
96
+ * Campfire
97
+ * Twitter
98
+
99
+ Cerberus currently supports the following build systems:
100
+
101
+ * Rake
102
+ * Ruby script
103
+ * RSpec
104
+ * Rant
105
+ * Maven2
106
+ * Bjam
107
+
108
+
109
+ ## Documentation
110
+
111
+ For instructions, guides and documentation, [please refer to the GitHub wiki][2].
112
+
113
+ ## Mailing List / Public Forums
114
+
115
+ [http://groups.google.com/group/cerberusci][3]
116
+
117
+ ## Issue Tracker
118
+
119
+ [http://cpjolicoeur.lighthouseapp.com/projects/22299-cerberus][4]
120
+
121
+ ## License
122
+
123
+ This plugin is licensed under the MIT license. Complete license text
124
+ is included in the License.txt file.
125
+
126
+
127
+ [1]:http://www.martinfowler.com/articles/continuousIntegration.html
128
+ [2]:http://wiki.github.com/cpjolicoeur/cerberus
129
+ [3]:http://groups.google.com/group/cerberusci
130
+ [4]:http://cpjolicoeur.lighthouseapp.com/projects/22299-cerberus
131
+ [5]:http://rubyforge.org/frs/?group_id=1794
132
+ [6]:http://cerberus.rubyforge.org
data/bin/cerberus ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Add lib dir to load path so that we don't have to be installed in rubygems
4
+ require 'pathname' # Use Pathname to follow symlinks
5
+ CERBERUS_LIB_DIR = File.join( File.dirname( Pathname.new( __FILE__ ).realpath ),'..','lib' )
6
+ $:.unshift CERBERUS_LIB_DIR
7
+
8
+ require 'cerberus/cli'
9
+
10
+ Cerberus::CLI.new(*ARGV)
@@ -0,0 +1,4 @@
1
+ module Cerberus
2
+ module Builder
3
+ end
4
+ end
@@ -0,0 +1,30 @@
1
+ require 'cerberus/builder/base'
2
+
3
+ class Cerberus::Builder::Bjam
4
+ attr_reader :output
5
+
6
+ def initialize(config)
7
+ @config = config
8
+ end
9
+
10
+ def run
11
+ #set correct mountpoint if it present
12
+ build_dir = @config[:builder, :bjam, :build_dir]
13
+ Dir.chdir(build_dir) if build_dir
14
+
15
+ cmd = @config[:builder, :bjam, :cmd] || 'bjam'
16
+ task = @config[:builder, :bjam, :target] #|| 'clean'
17
+
18
+ @output = `#{cmd} #{task} 2>&1`
19
+ successful?
20
+ end
21
+
22
+ def successful?
23
+ $?.exitstatus == 0 and not @output =~ /failed|error:|skipped/
24
+ #/\*\*\* \d+ failure(s)? detected in test suite/ and not @output.include?("syntax error")
25
+ end
26
+
27
+ def brokeness
28
+ return nil
29
+ end
30
+ end
@@ -0,0 +1,61 @@
1
+ require 'cerberus/builder/base'
2
+
3
+ class Cerberus::Builder::Maven2
4
+ attr_reader :output, :brokeness
5
+
6
+ def initialize(config)
7
+ @config = config
8
+ end
9
+
10
+ def run
11
+ cmd = @config[:builder, :maven2, :cmd] || 'mvn'
12
+ task = @config[:builder, :maven2, :task] || 'test'
13
+ @output = `#{@config[:bin_path]}#{cmd} #{system_properties} #{settings} #{task} 2>&1`
14
+ add_error_information
15
+ successful?
16
+ end
17
+
18
+ def successful?
19
+ $?.exitstatus == 0 and not @output.include?('[ERROR] BUILD FAILURE')
20
+ end
21
+
22
+ private
23
+
24
+ def system_properties
25
+ properties = []
26
+ system_properties = @config[:builder, :maven2, :system_properties]
27
+ if system_properties
28
+ system_properties.each do |p|
29
+ properties << %Q(-D#{p[0]}="#{p[1]}")
30
+ end
31
+ end
32
+ properties.join(' ')
33
+ end
34
+
35
+ def settings
36
+ settings_file = @config[:builder, :maven2, :settings]
37
+ if settings_file
38
+ return "-s #{settings_file}"
39
+ else
40
+ return ''
41
+ end
42
+ end
43
+
44
+ def add_error_information
45
+ str = @output
46
+ @output = ''
47
+ @brokeness = 0
48
+ while str =~ / <<< FAILURE!$/
49
+ @brokeness += 1
50
+ s = $'
51
+
52
+ $` =~ /^(.|\n)*Running (.*)$/
53
+ failed_class = $2
54
+ @output << $` << $& << ' <<< FAILURE!'
55
+ surefire_report_filename = "#{@config[:application_root]}/target/surefire-reports/#{failed_class}.txt"
56
+ @output << "\n" << IO.readlines(surefire_report_filename)[4..-1].join.lstrip if test(?e, surefire_report_filename)
57
+ str = s
58
+ end
59
+ @output << str
60
+ end
61
+ end
@@ -0,0 +1,11 @@
1
+ require 'cerberus/builder/ruby_base'
2
+
3
+ class Cerberus::Builder::Rake < Cerberus::Builder::RubyBase
4
+ def initialize(config)
5
+ super(config, "rake")
6
+ end
7
+
8
+ def successful?
9
+ $?.exitstatus == 0 and not @output.include?("#{@cmd} aborted!")
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'cerberus/builder/ruby_base'
2
+
3
+ class Cerberus::Builder::Rant < Cerberus::Builder::RubyBase
4
+ def initialize(config)
5
+ super(config, "rant")
6
+ end
7
+
8
+ def successful?
9
+ $?.exitstatus == 0 and not @output.include?("#{@cmd} aborted!") and @output.include?("0 failures, 0 errors")
10
+ end
11
+ end
@@ -0,0 +1,26 @@
1
+ require 'cerberus/builder/ruby_base'
2
+
3
+ class Cerberus::Builder::RSpec < Cerberus::Builder::RubyBase
4
+ def initialize(config)
5
+ super(config, "rspec", "spec")
6
+ end
7
+
8
+ def run
9
+ @output = if @config[:builder, @name.to_sym, :task]
10
+ `#{@config[:bin_path]}rake #{@config[:builder, @name.to_sym, :task]} 2>&1`
11
+ else
12
+ `#{@config[:bin_path]}rake #{choose_exec()} 2>&1`
13
+ end
14
+ successful?
15
+ end
16
+
17
+ def brokeness
18
+ if @output =~ /\d+ examples, (\d+) failures?/
19
+ $1.to_i
20
+ end
21
+ end
22
+
23
+ def successful?
24
+ $?.exitstatus == 0 and not @output.include?("#{@cmd} aborted!") and @output.include?("0 failures")
25
+ end
26
+ end
@@ -0,0 +1,33 @@
1
+ require 'cerberus/builder/ruby_base'
2
+
3
+ class Cerberus::Builder::Ruby < Cerberus::Builder::RubyBase
4
+ def initialize(config)
5
+ super(config, "ruby")
6
+ end
7
+
8
+ def run
9
+ ENV['PATH'] = "#{@config[:builder, @name.to_sym, :ruby_path]}::#{ENV['PATH']}"
10
+ super
11
+ end
12
+
13
+ def successful?
14
+ if ( @config[:builder, @name.to_sym, :failure] and @config[:builder, @name.to_sym, :success] )
15
+ $?.exitstatus == 0 and !@output.include?(@config[:builder, @name.to_sym, :failure]) and @output.include?(@config[:builder, @name.to_sym, :success])
16
+ else
17
+ super # use RubyBase default if custom :success and :failure not specified
18
+ end
19
+ end
20
+
21
+ def brokeness
22
+ if @config[:builder, @name.to_sym, :brokeness]
23
+ re = Regexp.new( @config[:builder, @name.to_sym, :brokeness] )
24
+ md = re.match( @output )
25
+ if md
26
+ return md.captures.inject( 0 ) { |sum, n| sum += n.to_i }
27
+ end
28
+ else
29
+ super # use RubyBase default if custom :brokeness not specified
30
+ end
31
+ end
32
+
33
+ end
@@ -0,0 +1,50 @@
1
+ require 'cerberus/builder/base'
2
+
3
+ class Cerberus::Builder::RubyBase
4
+ attr_reader :output
5
+
6
+ def initialize(config, name, cmd = name)
7
+ @config = config
8
+ @cmd = cmd
9
+ @name = name
10
+ end
11
+
12
+ def run
13
+ build_dir = @config[:builder, :build_dir]
14
+ Dir.chdir(build_dir) if build_dir
15
+
16
+ @output = `#{@config[:bin_path]}#{choose_exec()} #{@config[:builder, @name.to_sym, :task]} 2>&1`
17
+ successful?
18
+ end
19
+
20
+ def successful?
21
+ $?.exitstatus == 0 and not @output.include?("#{@cmd} aborted!")
22
+ end
23
+
24
+ def brokeness
25
+ if @output =~ /\d+ tests, \d+ assertions, (\d+) failures, (\d+) errors/
26
+ return $1.to_i + $2.to_i
27
+ end
28
+ end
29
+
30
+ private
31
+ def choose_exec
32
+ ext = ['']
33
+
34
+ if os() == :windows
35
+ ext << '.bat' << '.cmd'
36
+ end
37
+
38
+ silence_stream(STDERR) {
39
+ ext.each do |e|
40
+ begin
41
+ out = `#{@config[:bin_path]}#{@cmd}#{e} --version 2>&1`
42
+ return "#{@cmd}#{e}" if out =~ /#{@cmd}/
43
+ rescue
44
+ end
45
+ end
46
+ }
47
+
48
+ raise "#{@cmd} builder did not find. Make sure that such script exists and have executable permissions."
49
+ end
50
+ end
@@ -0,0 +1,81 @@
1
+ require 'cerberus/manager'
2
+ require 'cerberus/utils'
3
+ require 'cerberus/constants'
4
+
5
+ module Cerberus
6
+ class CLI
7
+ def initialize(*args)
8
+ say HELP if args.empty?
9
+
10
+ command = args.shift
11
+
12
+ cli_options = extract_options(args)
13
+
14
+ case command
15
+ when 'add'
16
+ path = args.shift || Dir.pwd
17
+ command = Cerberus::AddCommand.new(path, cli_options)
18
+ command.run
19
+ when 'remove'
20
+ command = Cerberus::RemoveCommand.new(args.shift, cli_options)
21
+ command.run
22
+ when 'build'
23
+ say HELP if args.empty?
24
+
25
+ application_name = args.shift
26
+
27
+ command = Cerberus::BuildCommand.new(application_name, cli_options)
28
+ command.run
29
+ when 'buildall'
30
+ command = Cerberus::BuildAllCommand.new(cli_options)
31
+ command.run
32
+ when 'list'
33
+ command = Cerberus::ListCommand.new(cli_options)
34
+ command.run
35
+ when 'status'
36
+ command = Cerberus::StatusCommand.new(cli_options)
37
+ command.run
38
+ else
39
+ say HELP
40
+ end
41
+ end
42
+
43
+ private
44
+ def extract_options(args)
45
+ result = {}
46
+ args_copy = args.dup
47
+ args_copy.each do |arg|
48
+ case arg
49
+ when /^(\w+)=(.*)$/
50
+ result[$1.downcase.to_sym] = $2
51
+ args.delete(arg)
52
+ when '--force'
53
+ result[:force] = true
54
+ args.delete(arg)
55
+ when '--verbose', '-v'
56
+ result[:verbose] = true
57
+ args.delete(arg)
58
+ end
59
+ end
60
+
61
+ result
62
+ end
63
+ end
64
+
65
+ HELP = %{
66
+ Cerberus is a lightweight command-line Continuous Integration tool for Ruby.
67
+
68
+ Usage:
69
+ cerberus add <URL> --- add project from a repository to list watched of applications
70
+ cerberus add <PATH> --- add project from local path to list of watched applications
71
+ cerberus remove <NAME> --- remove given project from cerberus
72
+ cerberus build <NAME> --- build watched application
73
+ cerberus buildall --- build all watched applications
74
+ cerberus list --- see the list of all watched applications
75
+ cerberus status --- see the current status of all cerberus projects
76
+
77
+ Version: #{Cerberus::VERSION}
78
+ Cerberus Path: "#{Cerberus::HOME}"
79
+ Cerberus Homepage: http://cerberus.rubyforge.org
80
+ }.gsub("\n ","\n")
81
+ end