edavis10-cerberus 0.7.8
Sign up to get free protection for your applications and to get access to all the features.
- data/Authors.txt +4 -0
- data/Changelog.txt +275 -0
- data/Copyright.txt +19 -0
- data/License.txt +20 -0
- data/Rakefile +166 -0
- data/Readme.markdown +132 -0
- data/bin/cerberus +10 -0
- data/lib/cerberus/builder/base.rb +4 -0
- data/lib/cerberus/builder/bjam.rb +30 -0
- data/lib/cerberus/builder/maven2.rb +61 -0
- data/lib/cerberus/builder/rake.rb +11 -0
- data/lib/cerberus/builder/rant.rb +11 -0
- data/lib/cerberus/builder/rspec.rb +26 -0
- data/lib/cerberus/builder/ruby.rb +33 -0
- data/lib/cerberus/builder/ruby_base.rb +50 -0
- data/lib/cerberus/cli.rb +81 -0
- data/lib/cerberus/component_lazy_loader.rb +89 -0
- data/lib/cerberus/config.example.yml +37 -0
- data/lib/cerberus/config.rb +48 -0
- data/lib/cerberus/config_migration.rb +0 -0
- data/lib/cerberus/constants.rb +8 -0
- data/lib/cerberus/latch.rb +27 -0
- data/lib/cerberus/manager.rb +361 -0
- data/lib/cerberus/publisher/base.rb +47 -0
- data/lib/cerberus/publisher/campfire.rb +124 -0
- data/lib/cerberus/publisher/irc.rb +23 -0
- data/lib/cerberus/publisher/jabber.rb +25 -0
- data/lib/cerberus/publisher/mail.rb +38 -0
- data/lib/cerberus/publisher/netsmtp_tls_fix.rb +73 -0
- data/lib/cerberus/publisher/rss.rb +41 -0
- data/lib/cerberus/publisher/twitter.rb +30 -0
- data/lib/cerberus/scm/base.rb +19 -0
- data/lib/cerberus/scm/bzr.rb +62 -0
- data/lib/cerberus/scm/cvs.rb +43 -0
- data/lib/cerberus/scm/darcs.rb +61 -0
- data/lib/cerberus/scm/git.rb +94 -0
- data/lib/cerberus/scm/hg.rb +87 -0
- data/lib/cerberus/scm/perforce.rb +82 -0
- data/lib/cerberus/scm/svn.rb +78 -0
- data/lib/cerberus/utils.rb +192 -0
- data/lib/vendor/twitter/CHANGES +129 -0
- data/lib/vendor/twitter/MIT-LICENSE +20 -0
- data/lib/vendor/twitter/README +37 -0
- data/lib/vendor/twitter/TODO +7 -0
- data/lib/vendor/twitter/lib/twitter.rb +34 -0
- data/lib/vendor/twitter/lib/twitter/client.rb +24 -0
- data/lib/vendor/twitter/lib/twitter/client/account.rb +24 -0
- data/lib/vendor/twitter/lib/twitter/client/auth.rb +27 -0
- data/lib/vendor/twitter/lib/twitter/client/base.rb +93 -0
- data/lib/vendor/twitter/lib/twitter/client/blocks.rb +35 -0
- data/lib/vendor/twitter/lib/twitter/client/favorites.rb +53 -0
- data/lib/vendor/twitter/lib/twitter/client/friendship.rb +35 -0
- data/lib/vendor/twitter/lib/twitter/client/graph.rb +37 -0
- data/lib/vendor/twitter/lib/twitter/client/messaging.rb +79 -0
- data/lib/vendor/twitter/lib/twitter/client/profile.rb +29 -0
- data/lib/vendor/twitter/lib/twitter/client/search.rb +27 -0
- data/lib/vendor/twitter/lib/twitter/client/status.rb +51 -0
- data/lib/vendor/twitter/lib/twitter/client/timeline.rb +72 -0
- data/lib/vendor/twitter/lib/twitter/client/user.rb +65 -0
- data/lib/vendor/twitter/lib/twitter/config.rb +77 -0
- data/lib/vendor/twitter/lib/twitter/console.rb +31 -0
- data/lib/vendor/twitter/lib/twitter/core.rb +137 -0
- data/lib/vendor/twitter/lib/twitter/ext.rb +2 -0
- data/lib/vendor/twitter/lib/twitter/ext/stdlib.rb +52 -0
- data/lib/vendor/twitter/lib/twitter/extras.rb +39 -0
- data/lib/vendor/twitter/lib/twitter/meta.rb +56 -0
- data/lib/vendor/twitter/lib/twitter/model.rb +360 -0
- data/lib/vendor/twitter/lib/twitter/version.rb +19 -0
- data/lib/vendor/twitter/spec/twitter/client/account_spec.rb +28 -0
- data/lib/vendor/twitter/spec/twitter/client/auth_spec.rb +34 -0
- data/lib/vendor/twitter/spec/twitter/client/base_spec.rb +242 -0
- data/lib/vendor/twitter/spec/twitter/client/blocks_spec.rb +76 -0
- data/lib/vendor/twitter/spec/twitter/client/favorites_spec.rb +183 -0
- data/lib/vendor/twitter/spec/twitter/client/friendship_spec.rb +76 -0
- data/lib/vendor/twitter/spec/twitter/client/graph_spec.rb +67 -0
- data/lib/vendor/twitter/spec/twitter/client/messaging_spec.rb +135 -0
- data/lib/vendor/twitter/spec/twitter/client/profile_spec.rb +91 -0
- data/lib/vendor/twitter/spec/twitter/client/search_spec.rb +68 -0
- data/lib/vendor/twitter/spec/twitter/client/status_spec.rb +119 -0
- data/lib/vendor/twitter/spec/twitter/client/timeline_spec.rb +79 -0
- data/lib/vendor/twitter/spec/twitter/client/user_spec.rb +203 -0
- data/lib/vendor/twitter/spec/twitter/client_spec.rb +2 -0
- data/lib/vendor/twitter/spec/twitter/config_spec.rb +86 -0
- data/lib/vendor/twitter/spec/twitter/console_spec.rb +15 -0
- data/lib/vendor/twitter/spec/twitter/core_spec.rb +127 -0
- data/lib/vendor/twitter/spec/twitter/ext/stdlib_spec.rb +59 -0
- data/lib/vendor/twitter/spec/twitter/extras_spec.rb +46 -0
- data/lib/vendor/twitter/spec/twitter/meta_spec.rb +90 -0
- data/lib/vendor/twitter/spec/twitter/model_spec.rb +508 -0
- data/lib/vendor/twitter/spec/twitter/version_spec.rb +19 -0
- data/lib/vendor/xmpp4r/CHANGELOG +83 -0
- data/lib/vendor/xmpp4r/COPYING +340 -0
- data/lib/vendor/xmpp4r/LICENSE +59 -0
- data/lib/vendor/xmpp4r/README.rdoc +110 -0
- data/lib/vendor/xmpp4r/README_ruby19.txt +43 -0
- data/lib/vendor/xmpp4r/Rakefile +262 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/README +56 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/adventure.rb +23 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/adventuremuc.rb +136 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/cube.xml +15 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/tower.xml +69 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/adventure/world.rb +424 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/fileserve.conf +11 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/fileserve.rb +346 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/getonline.rb +56 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/gtkmucclient.rb +315 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/migrate.rb +88 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/minimuc.rb +266 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/pep-aggregator/index.xsl +235 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/pep-aggregator/pep-aggregator.rb +147 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/recvfile.rb +84 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/rosterdiscovery.rb +129 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/sendfile.conf +10 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/sendfile.rb +72 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr.rb +51 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr_jabber.rb +43 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/shellmgr/shellmgr_test.rb +10 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/versionpoll.rb +90 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/xmpping.rb +146 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/advanced/xmppingrc.sample +14 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/change_password.rb +41 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/client.rb +70 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/component.rb +11 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/echo.rb +37 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/jabbersend.rb +41 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/mass_sender.rb +68 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/muc_owner_config.rb +12 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/mucinfo.rb +41 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/mucsimplebot.rb +82 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/register.rb +42 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/remove_registration.rb +18 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/roster.rb +44 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/rosterprint.rb +50 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/rosterrename.rb +34 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/rosterwatch.rb +171 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/send_vcard.rb +67 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/tune_client.rb +56 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/tune_server.rb +58 -0
- data/lib/vendor/xmpp4r/data/doc/xmpp4r/examples/basic/versionbot.rb +75 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r.rb +116 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/base64.rb +32 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams.rb +15 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/filetransfer.rb +319 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/ibb/base.rb +257 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/ibb/initiator.rb +31 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/ibb/target.rb +47 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/base.rb +152 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/initiator.rb +86 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/server.rb +198 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/socks5.rb +65 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb +73 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/helper/socks5bytestreams/target.rb.orig +62 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/iq/bytestreams.rb +170 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/bytestreams/iq/si.rb +206 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/callbacks.rb +124 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/caps.rb +1 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/caps/c.rb +53 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/caps/helper/generator.rb +160 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/caps/helper/helper.rb +87 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/client.rb +317 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/command/helper/responder.rb +53 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/command/iq/command.rb +154 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/component.rb +103 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/connection.rb +219 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/dataforms.rb +5 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/dataforms/x/data.rb +297 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/debuglog.rb +42 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/delay.rb +5 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/delay/x/delay.rb +99 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/discovery.rb +7 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/discovery/helper/responder.rb +165 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/discovery/iq/discoinfo.rb +211 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/discovery/iq/discoitems.rb +147 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/errors.rb +281 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/feature_negotiation.rb +5 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/feature_negotiation/iq/feature.rb +28 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/framework/base.rb +55 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/framework/bot.rb +148 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/httpbinding.rb +5 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/httpbinding/client.rb +285 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/idgenerator.rb +37 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/iq.rb +221 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/jid.rb +167 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/message.rb +148 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc.rb +14 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/helper/mucbrowser.rb +92 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/helper/mucclient.rb +462 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/helper/simplemucclient.rb +332 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/iq/mucadmin.rb +23 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/iq/mucadminitem.rb +20 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/iq/mucowner.rb +15 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/item.rb +143 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/x/muc.rb +70 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/x/mucuserinvite.rb +60 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/muc/x/mucuseritem.rb +36 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/presence.rb +232 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub.rb +8 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/configuration.rb +86 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/event.rb +49 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/item.rb +35 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/items.rb +44 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/node_config.rb +48 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/publish.rb +24 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/subscription.rb +62 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/subscription_config.rb +67 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/children/unsubscribe.rb +48 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/nodebrowser.rb +130 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/nodehelper.rb +156 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb +417 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/pubsub/iq/pubsub.rb +19 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/query.rb +15 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/rexmladdons.rb +151 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/roster.rb +7 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/roster/helper/roster.rb +519 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/roster/iq/roster.rb +215 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/roster/x/roster.rb +138 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/rpc.rb +2 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/helper/client.rb +123 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/helper/server.rb +74 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/helper/xmlrpcaddons.rb +67 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/rpc/iq/rpc.rb +23 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/sasl.rb +237 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/semaphore.rb +38 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/stream.rb +497 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/streamparser.rb +77 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/tune.rb +2 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/tune/helper/helper.rb +58 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/tune/tune.rb +113 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/vcard.rb +6 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/vcard/helper/vcard.rb +84 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/vcard/iq/vcard.rb +109 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/version.rb +7 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/version/helper/responder.rb +72 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/version/helper/simpleresponder.rb +44 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/version/iq/version.rb +105 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/x.rb +37 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/xhtml.rb +1 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/xhtml/html.rb +115 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/xmpp4r.rb +18 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/xmppelement.rb +168 -0
- data/lib/vendor/xmpp4r/lib/xmpp4r/xmppstanza.rb +162 -0
- data/lib/vendor/xmpp4r/setup.rb +1586 -0
- data/lib/vendor/xmpp4r/test/bytestreams/tc_ibb.rb +186 -0
- data/lib/vendor/xmpp4r/test/bytestreams/tc_socks5bytestreams.rb +113 -0
- data/lib/vendor/xmpp4r/test/caps/tc_helper.rb +156 -0
- data/lib/vendor/xmpp4r/test/dataforms/tc_data.rb +81 -0
- data/lib/vendor/xmpp4r/test/delay/tc_xdelay.rb +51 -0
- data/lib/vendor/xmpp4r/test/discovery/tc_responder.rb +91 -0
- data/lib/vendor/xmpp4r/test/lib/assert_equal_xml.rb +14 -0
- data/lib/vendor/xmpp4r/test/lib/clienttester.rb +120 -0
- data/lib/vendor/xmpp4r/test/muc/tc_muc_mucclient.rb +830 -0
- data/lib/vendor/xmpp4r/test/muc/tc_muc_simplemucclient.rb +114 -0
- data/lib/vendor/xmpp4r/test/muc/tc_mucowner.rb +50 -0
- data/lib/vendor/xmpp4r/test/pubsub/tc_helper.rb +662 -0
- data/lib/vendor/xmpp4r/test/pubsub/tc_nodeconfig.rb +54 -0
- data/lib/vendor/xmpp4r/test/pubsub/tc_subscriptionconfig.rb +41 -0
- data/lib/vendor/xmpp4r/test/roster/tc_helper.rb +514 -0
- data/lib/vendor/xmpp4r/test/roster/tc_iqqueryroster.rb +173 -0
- data/lib/vendor/xmpp4r/test/roster/tc_xroster.rb +73 -0
- data/lib/vendor/xmpp4r/test/rpc/tc_helper.rb +96 -0
- data/lib/vendor/xmpp4r/test/tc_callbacks.rb +129 -0
- data/lib/vendor/xmpp4r/test/tc_class_names.rb +146 -0
- data/lib/vendor/xmpp4r/test/tc_client.rb +30 -0
- data/lib/vendor/xmpp4r/test/tc_errors.rb +146 -0
- data/lib/vendor/xmpp4r/test/tc_idgenerator.rb +30 -0
- data/lib/vendor/xmpp4r/test/tc_iq.rb +113 -0
- data/lib/vendor/xmpp4r/test/tc_iqquery.rb +31 -0
- data/lib/vendor/xmpp4r/test/tc_jid.rb +204 -0
- data/lib/vendor/xmpp4r/test/tc_message.rb +116 -0
- data/lib/vendor/xmpp4r/test/tc_presence.rb +150 -0
- data/lib/vendor/xmpp4r/test/tc_rexml.rb +139 -0
- data/lib/vendor/xmpp4r/test/tc_stream.rb +229 -0
- data/lib/vendor/xmpp4r/test/tc_streamComponent.rb +95 -0
- data/lib/vendor/xmpp4r/test/tc_streamError.rb +131 -0
- data/lib/vendor/xmpp4r/test/tc_streamSend.rb +59 -0
- data/lib/vendor/xmpp4r/test/tc_streamparser.rb +112 -0
- data/lib/vendor/xmpp4r/test/tc_xmppstanza.rb +135 -0
- data/lib/vendor/xmpp4r/test/ts_xmpp4r.rb +53 -0
- data/lib/vendor/xmpp4r/test/tune/tc_helper_recv.rb +84 -0
- data/lib/vendor/xmpp4r/test/tune/tc_helper_send.rb +74 -0
- data/lib/vendor/xmpp4r/test/tune/tc_tune.rb +79 -0
- data/lib/vendor/xmpp4r/test/vcard/tc_helper.rb +49 -0
- data/lib/vendor/xmpp4r/test/vcard/tc_iqvcard.rb +62 -0
- data/lib/vendor/xmpp4r/test/version/tc_helper.rb +60 -0
- data/lib/vendor/xmpp4r/test/version/tc_iqqueryversion.rb +97 -0
- data/lib/vendor/xmpp4r/test/xhtml/tc_html.rb +41 -0
- data/lib/vendor/xmpp4r/tools/gen_requires.bash +31 -0
- data/lib/vendor/xmpp4r/tools/xmpp4r-gemspec-test.rb +11 -0
- data/lib/vendor/xmpp4r/xmpp4r.gemspec +291 -0
- data/test/bjam_builder_test.rb +134 -0
- data/test/config_test.rb +46 -0
- data/test/cron_string_test.rb +94 -0
- data/test/data/darcs.zip +0 -0
- data/test/data/git.zip +0 -0
- data/test/data/mercurial.zip +0 -0
- data/test/data/subversion.dump +127 -0
- data/test/functional_test.rb +442 -0
- data/test/integration_test.rb +126 -0
- data/test/irc_publisher_test.rb +20 -0
- data/test/jabber_publisher_test.rb +22 -0
- data/test/mail_publisher_test.rb +27 -0
- data/test/maven2_builer_test.rb +82 -0
- data/test/mock/irc.rb +34 -0
- data/test/mock/manager.rb +35 -0
- data/test/mock/marshmallow.rb +17 -0
- data/test/mock/twitter.rb +23 -0
- data/test/mock/xmpp4r.rb +19 -0
- data/test/perforce_scm_test.rb +22 -0
- data/test/rspec_builder_test.rb +139 -0
- data/test/rss_publisher_test.rb +22 -0
- data/test/ruby_builder_test.rb +77 -0
- data/test/test_helper.rb +133 -0
- data/test/twitter_publisher_test.rb +19 -0
- 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,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::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
|
data/lib/cerberus/cli.rb
ADDED
@@ -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
|