blackwinter-autotest-notification 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. data/History.txt +58 -0
  2. data/License.txt +20 -0
  3. data/Manifest.txt +59 -0
  4. data/PostInstall.txt +9 -0
  5. data/README.txt +138 -0
  6. data/Rakefile +4 -0
  7. data/autotest-notification.gemspec +49 -0
  8. data/bin/an-install +106 -0
  9. data/bin/an-uninstall +50 -0
  10. data/bin/playsound +0 -0
  11. data/config/hoe.rb +75 -0
  12. data/config/requirements.rb +15 -0
  13. data/images/buuf/fail.png +0 -0
  14. data/images/buuf/pass.png +0 -0
  15. data/images/buuf/pending.png +0 -0
  16. data/images/doom/doom_0.png +0 -0
  17. data/images/doom/doom_1.png +0 -0
  18. data/images/doom/doom_2.png +0 -0
  19. data/images/doom/doom_3.png +0 -0
  20. data/images/doom/doom_4.png +0 -0
  21. data/images/doom/doom_5.png +0 -0
  22. data/images/doom/doom_6.png +0 -0
  23. data/images/fail.png +0 -0
  24. data/images/pass.png +0 -0
  25. data/images/pending.png +0 -0
  26. data/lib/autotest_notification.rb +73 -0
  27. data/lib/autotest_notification/buuf.rb +9 -0
  28. data/lib/autotest_notification/cygwin.rb +14 -0
  29. data/lib/autotest_notification/doom.rb +25 -0
  30. data/lib/autotest_notification/linux.rb +58 -0
  31. data/lib/autotest_notification/mac.rb +30 -0
  32. data/lib/autotest_notification/version.rb +9 -0
  33. data/lib/autotest_notification/windows.rb +11 -0
  34. data/script/console +10 -0
  35. data/script/destroy +14 -0
  36. data/script/generate +14 -0
  37. data/script/txt2html +82 -0
  38. data/setup.rb +1585 -0
  39. data/sounds/doom/0.wav +0 -0
  40. data/sounds/doom/1.wav +0 -0
  41. data/sounds/doom/2.wav +0 -0
  42. data/sounds/doom/3.wav +0 -0
  43. data/sounds/doom/4.wav +0 -0
  44. data/sounds/doom/5.wav +0 -0
  45. data/sounds/doom/6.wav +0 -0
  46. data/tasks/deployment.rake +34 -0
  47. data/tasks/environment.rake +7 -0
  48. data/tasks/website.rake +17 -0
  49. data/test/autotest_notification/test_cygwin.rb +10 -0
  50. data/test/autotest_notification/test_linux.rb +91 -0
  51. data/test/autotest_notification/test_mac.rb +78 -0
  52. data/test/autotest_notification/test_windows.rb +12 -0
  53. data/test/test_autotest_notification.rb +44 -0
  54. data/test/test_helper.rb +25 -0
  55. data/website/index.html +86 -0
  56. data/website/index.txt +83 -0
  57. data/website/javascripts/rounded_corners_lite.inc.js +285 -0
  58. data/website/stylesheets/screen.css +138 -0
  59. data/website/template.html.erb +48 -0
  60. metadata +151 -0
data/sounds/doom/0.wav ADDED
Binary file
data/sounds/doom/1.wav ADDED
Binary file
data/sounds/doom/2.wav ADDED
Binary file
data/sounds/doom/3.wav ADDED
Binary file
data/sounds/doom/4.wav ADDED
Binary file
data/sounds/doom/5.wav ADDED
Binary file
data/sounds/doom/6.wav ADDED
Binary file
@@ -0,0 +1,34 @@
1
+ desc 'Release the website and new gem version'
2
+ task :deploy => [:check_version, :website, :release] do
3
+ puts "Remember to create SVN tag:"
4
+ puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
5
+ "svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
6
+ puts "Suggested comment:"
7
+ puts "Tagging release #{CHANGES}"
8
+ end
9
+
10
+ desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
11
+ task :local_deploy => [:website_generate, :install_gem]
12
+
13
+ task :check_version do
14
+ unless ENV['VERSION']
15
+ puts 'Must pass a VERSION=x.y.z release version'
16
+ exit
17
+ end
18
+ unless ENV['VERSION'] == VERS
19
+ puts "Please update your version.rb to match the release version, currently #{VERS}"
20
+ exit
21
+ end
22
+ end
23
+
24
+ desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
25
+ task :install_gem_no_doc => [:clean, :package] do
26
+ sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
27
+ end
28
+
29
+ namespace :manifest do
30
+ desc 'Recreate Manifest.txt to include ALL files'
31
+ task :refresh do
32
+ `rake check_manifest | patch -p0 > Manifest.txt`
33
+ end
34
+ end
@@ -0,0 +1,7 @@
1
+ task :ruby_env do
2
+ RUBY_APP = if RUBY_PLATFORM =~ /java/
3
+ "jruby"
4
+ else
5
+ "ruby"
6
+ end unless defined? RUBY_APP
7
+ end
@@ -0,0 +1,17 @@
1
+ desc 'Generate website files'
2
+ task :website_generate => :ruby_env do
3
+ (Dir['website/**/*.txt'] - Dir['website/version*.txt']).each do |txt|
4
+ sh %{ #{RUBY_APP} script/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
5
+ end
6
+ end
7
+
8
+ desc 'Upload website files to rubyforge'
9
+ task :website_upload do
10
+ host = "#{rubyforge_username}@rubyforge.org"
11
+ remote_dir = "/var/www/gforge-projects/#{PATH}/"
12
+ local_dir = 'website'
13
+ sh %{rsync -aCv #{local_dir}/ #{host}:#{remote_dir}}
14
+ end
15
+
16
+ desc 'Generate and upload website files'
17
+ task :website => [:website_generate, :website_upload, :publish_docs]
@@ -0,0 +1,10 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ class TestCygwin < Test::Unit::TestCase
4
+
5
+ def test_notify
6
+ AutotestNotification::Cygwin.expects(:get_image_path).with("image").returns(" image ")
7
+ AutotestNotification::Cygwin.expects(:system).with('sncmd /m \'title\' \'msg\' \'image\' /t 3')
8
+ AutotestNotification::Cygwin.notify("title", "msg", "image")
9
+ end
10
+ end
@@ -0,0 +1,91 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ class TestLinux < Test::Unit::TestCase
4
+
5
+ def setup
6
+ turn_methods_public AutotestNotification::Linux
7
+ AutotestNotification.const_set :DOOM_EDITION, false
8
+ AutotestNotification.const_set :SPEAKING, false
9
+ AutotestNotification.const_set :STICKY, false
10
+ AutotestNotification.const_set :BUUF, false
11
+ end
12
+
13
+ def test_notify_when_use_notify_without_speak
14
+ AutotestNotification::Linux.expects(:has_notify?).returns(true)
15
+ verify_notify(:notify_send)
16
+ end
17
+
18
+ def test_notify_when_use_zenity_without_speak
19
+ AutotestNotification::Linux.expects(:has_notify?).returns(false)
20
+ AutotestNotification::Linux.expects(:has_zenity?).returns(true)
21
+ verify_notify(:zenity)
22
+ end
23
+
24
+ def test_notify_when_use_kdialog_without_speak
25
+ AutotestNotification::Linux.expects(:has_notify?).returns(false)
26
+ AutotestNotification::Linux.expects(:has_zenity?).returns(false)
27
+ AutotestNotification::Linux.expects(:has_kdialog?).returns(true)
28
+ verify_notify(:kdialog)
29
+ end
30
+
31
+ def test_notify_when_use_notify_with_speak
32
+ AutotestNotification.const_set :SPEAKING, true
33
+ AutotestNotification::Linux.expects(:has_notify?).returns(true)
34
+ AutotestNotification::Linux.expects(:system).with("/usr/bin/espeak '1 test failed'")
35
+ verify_notify(:notify_send)
36
+ end
37
+
38
+ def test_notify_when_use_zenity_with_speak
39
+ AutotestNotification.const_set :SPEAKING, true
40
+ AutotestNotification::Linux.expects(:has_notify?).returns(false)
41
+ AutotestNotification::Linux.expects(:has_zenity?).returns(true)
42
+ AutotestNotification::Linux.expects(:system).with("/usr/bin/espeak '1 test failed'")
43
+ verify_notify(:zenity)
44
+ end
45
+
46
+ def test_notify_when_use_kdialog_with_speak
47
+ AutotestNotification.const_set :SPEAKING, true
48
+ AutotestNotification::Linux.expects(:has_notify?).returns(false)
49
+ AutotestNotification::Linux.expects(:has_zenity?).returns(false)
50
+ AutotestNotification::Linux.expects(:has_kdialog?).returns(true)
51
+ AutotestNotification::Linux.expects(:system).with("/usr/bin/espeak '1 test failed'")
52
+ verify_notify(:kdialog)
53
+ end
54
+
55
+ def test_notify_send
56
+ AutotestNotification::Linux.expects(:system).with('notify-send -t 3000 -i image \'title\' \'msg\'')
57
+ AutotestNotification::Linux.notify_send("title", "msg", "image")
58
+ end
59
+
60
+ def test_notify_kdialog
61
+ AutotestNotification::Linux.expects(:system).with('kdialog --title \'title\' --passivepopup \'msg\' 3')
62
+ AutotestNotification::Linux.kdialog("title", "msg", "image")
63
+ end
64
+
65
+ def test_notify_zenity
66
+ AutotestNotification::Linux.expects(:system).with('zenity --info --text=\'msg\' --title=\'title\'')
67
+ AutotestNotification::Linux.zenity("title", "msg", "image")
68
+ end
69
+
70
+ def test_has_zenity?
71
+ AutotestNotification::Linux.expects(:system).with('which zenity 2> /dev/null')
72
+ AutotestNotification::Linux.has_zenity?
73
+ end
74
+
75
+ def test_has_notify?
76
+ AutotestNotification::Linux.expects(:system).with('which notify-send 2> /dev/null')
77
+ AutotestNotification::Linux.has_notify?
78
+ end
79
+
80
+ def test_has_kdialog?
81
+ AutotestNotification::Linux.expects(:system).with('which kdialog 2> /dev/null')
82
+ AutotestNotification::Linux.has_kdialog?
83
+ end
84
+
85
+ private
86
+
87
+ def verify_notify(method)
88
+ AutotestNotification::Linux.expects(method).returns("title", "msg", "image", 1)
89
+ AutotestNotification::Linux.notify("title", "msg", "image", 1, 1)
90
+ end
91
+ end
@@ -0,0 +1,78 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ class TestMac < Test::Unit::TestCase
4
+
5
+ def setup
6
+ AutotestNotification.const_set :DOOM_EDITION, false
7
+ AutotestNotification.const_set :SPEAKING, false
8
+ AutotestNotification.const_set :STICKY, false
9
+ AutotestNotification.const_set :BUUF, false
10
+ AutotestNotification.const_set :SUCCESS_SOUND, ''
11
+ AutotestNotification.const_set :FAILURE_SOUND, ''
12
+ AutotestNotification::Mac.stubs(:system)
13
+ end
14
+
15
+ def test_notify_without_voice
16
+ AutotestNotification.const_set :SPEAKING, false
17
+ AutotestNotification::Mac.expects(:system).with("growlnotify -n autotest --image image -p 0 -m 'msg' -t title")
18
+ AutotestNotification::Mac.notify("title", "msg", "image", 1)
19
+ end
20
+
21
+ def test_notify_with_voice
22
+ AutotestNotification.const_set :SPEAKING, true
23
+ AutotestNotification::Mac.expects(:system).with("growlnotify -n autotest --image image -p 0 -m 'msg' -t title")
24
+ AutotestNotification::Mac.expects(:system).with("say 1 test failed.")
25
+ AutotestNotification::Mac.notify("title", "msg", "image", 1, 1)
26
+ end
27
+
28
+ def test_notify_with_pending
29
+ AutotestNotification.const_set :PENDING, true
30
+ AutotestNotification::Mac.expects(:system).with("growlnotify -n autotest --image image -p 0 -m 'msg' -t title")
31
+ AutotestNotification::Mac.notify("title", "msg", "image", 1)
32
+ end
33
+
34
+ def test_notify_with_sticky
35
+ AutotestNotification.const_set :STICKY, true
36
+ AutotestNotification::Mac.expects(:system).with("growlnotify -n autotest --image image -s -p 0 -m 'msg' -t title")
37
+ AutotestNotification::Mac.notify("title", "msg", "image", 1, 1)
38
+ end
39
+
40
+ def test_success_sound_is_played_when_specified_and_test_success
41
+ AutotestNotification.const_set :SUCCESS_SOUND, sound_path
42
+ AutotestNotification::Mac.expects(:play).with(sound_path)
43
+ AutotestNotification::Mac.notify("title", "msg", "image", 1, 0)
44
+ end
45
+
46
+ def test_failure_sound_is_played_when_specified_and_tests_fail
47
+ AutotestNotification.const_set :FAILURE_SOUND, sound_path
48
+ AutotestNotification::Mac.expects(:play).with(sound_path)
49
+ AutotestNotification::Mac.notify("title", "msg", "image", 1, 1)
50
+ end
51
+
52
+ def test_failure_sound_is_not_played_when_tests_success
53
+ AutotestNotification.const_set :FAILURE_SOUND, sound_path
54
+ AutotestNotification::Mac.expects(:play).with(sound_path).times(0)
55
+ AutotestNotification::Mac.notify("title", "msg", "image", 1, 0)
56
+ end
57
+
58
+ def test_success_sound_is_not_played_when_tests_fail
59
+ AutotestNotification.const_set :SUCCESS_SOUND, sound_path
60
+ AutotestNotification::Mac.expects(:play).with(sound_path).times(0)
61
+ AutotestNotification::Mac.notify("title", "msg", "image", 1, 1)
62
+ end
63
+
64
+ def test_play_method_exists
65
+ # this should be testing if playsound is being called
66
+ assert_respond_to AutotestNotification::Mac, :play
67
+ end
68
+
69
+ def test_notify_with_buuf
70
+ AutotestNotification.const_set :BUUF, true
71
+ AutotestNotification::Mac.expects(:system).with("growlnotify -n autotest --image image -p 0 -m 'msg' -t title")
72
+ AutotestNotification::Mac.notify("title", "msg", "image", 1, 1)
73
+ end
74
+ end
75
+
76
+ def sound_path
77
+ "#{File.expand_path(File.dirname(__FILE__) + "/../../sounds/doom/")}/1.wav"
78
+ end
@@ -0,0 +1,12 @@
1
+ require File.dirname(__FILE__) + '/../test_helper.rb'
2
+
3
+ class Snarl
4
+ end
5
+
6
+ class TestWindows < Test::Unit::TestCase
7
+
8
+ def test_notify
9
+ Snarl.expects(:show_message).with("title", "msg", "image")
10
+ AutotestNotification::Windows.notify("title", "msg", "image")
11
+ end
12
+ end
@@ -0,0 +1,44 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestAutotestNotification < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @title = "title"
7
+ @msg = "message"
8
+ @image = "image"
9
+ @priority = 0
10
+ @total = 0
11
+ @failures = 0
12
+
13
+ %w( DOOM_EDITION SPEAKING STICKY BUUF ).each do |c|
14
+ AutotestNotification.const_set(c.to_sym, false) unless AutotestNotification.const_defined?(c.to_sym)
15
+ end
16
+ end
17
+
18
+ def test_notify_when_os_is_cygwin
19
+ AutotestNotification::Cygwin.expects(:notify).with(@title, @msg, @image)
20
+ verify_to("cygwin")
21
+ end
22
+
23
+ def test_notify_when_os_is_windows
24
+ AutotestNotification::Windows.expects(:notify).with(@title, @msg, @image)
25
+ verify_to("mswin")
26
+ end
27
+
28
+ def test_notify_when_os_is_linux
29
+ AutotestNotification::Linux.expects(:notify).with(@title, @msg, @image, @total, @failures)
30
+ verify_to("linux")
31
+ end
32
+
33
+ def test_notify_when_os_is_mac
34
+ AutotestNotification::Mac.expects(:notify).with(@title, @msg, @image, @total, @failures, @priority)
35
+ verify_to("darwin")
36
+ end
37
+
38
+ private
39
+
40
+ def verify_to(so)
41
+ AutotestNotification.const_set :RUBY_PLATFORM, so
42
+ AutotestNotification.notify(@title, @msg, @image, @total, @failures, @priority)
43
+ end
44
+ end
@@ -0,0 +1,25 @@
1
+ require "test/unit"
2
+ require "rubygems"
3
+ require 'autotest'
4
+ require "mocha"
5
+ require File.dirname(__FILE__) + '/../lib/autotest_notification' unless defined?(AutotestNotification)
6
+
7
+ class Test::Unit::TestCase
8
+ def turn_methods_public(classe, method_name = nil)
9
+ if method_name
10
+ classe.class_eval do
11
+ public method_name
12
+ end
13
+ else
14
+ turn_all_methods_public classe
15
+ end
16
+ end
17
+ def turn_all_methods_public(classe)
18
+ classe.class_eval do
19
+ private_instance_methods.each { |instance_method| public instance_method }
20
+ private_methods.each { |method| public_class_method method }
21
+ protected_instance_methods.each { |instance_method| public instance_method }
22
+ protected_methods.each { |method| public_class_method method }
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,86 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
+ <title>
8
+ autotest_notification
9
+ </title>
10
+ <script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
11
+ <style>
12
+
13
+ </style>
14
+ <script type="text/javascript">
15
+ window.onload = function() {
16
+ settings = {
17
+ tl: { radius: 10 },
18
+ tr: { radius: 10 },
19
+ bl: { radius: 10 },
20
+ br: { radius: 10 },
21
+ antiAlias: true,
22
+ autoPad: true,
23
+ validTags: ["div"]
24
+ }
25
+ var versionBox = new curvyCorners(settings, document.getElementById("version"));
26
+ versionBox.applyCornersToAll();
27
+ }
28
+ </script>
29
+ </head>
30
+ <body>
31
+ <div id="main">
32
+
33
+ <h1>autotest_notification</h1>
34
+ <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/autotest_notification"; return false'>
35
+ <p>Get Version</p>
36
+ <a href="http://rubyforge.org/projects/autotest_notification" class="numbers">1.5.0</a>
37
+ </div>
38
+ <h1>&amp;#x2192; &#8216;autotest_notification&#8217;</h1>
39
+ <h2>What</h2>
40
+ <h2>Installing</h2>
41
+ <p><pre class='syntax'><span class="ident">sudo</span> <span class="ident">gem</span> <span class="ident">install</span> <span class="ident">autotest_notification</span></pre></p>
42
+ <h2>The basics</h2>
43
+ <h2>Demonstration of usage</h2>
44
+ <h2>Forum</h2>
45
+ <p><a href="http://groups.google.com/group/autotest_notification">http://groups.google.com/group/autotest_notification</a></p>
46
+ <p><span class="caps">TODO</span> &#8211; create Google Group &#8211; autotest_notification</p>
47
+ <h2>How to submit patches</h2>
48
+ <p>Read the <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/">8 steps for fixing other people&#8217;s code</a> and for section <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups">8b: Submit patch to Google Groups</a>, use the Google Group above.</p>
49
+ <p><span class="caps">TODO</span> &#8211; pick <span class="caps">SVN</span> or Git instructions</p>
50
+ <p>The trunk repository is <code>svn://rubyforge.org/var/svn/autotest_notification/trunk</code> for anonymous access.</p>
51
+ <p><span class="caps">OOOORRRR</span></p>
52
+ <p>You can fetch the source from either:</p>
53
+ <ul>
54
+ <li>rubyforge: <span class="caps">MISSING</span> IN <span class="caps">ACTION</span></li>
55
+ </ul>
56
+ <p><span class="caps">TODO</span> &#8211; You can not created a RubyForge project, OR have not run <code>rubyforge config</code><br />
57
+ yet to refresh your local rubyforge data with this projects&#8217; id information.</p>
58
+ <p>When you do this, this message will magically disappear!</p>
59
+ <p>Or you can hack website/index.txt and make it all go away!!</p>
60
+ <ul>
61
+ <li>github: <a href="http://github.com/GITHUB_USERNAME/autotest_notification/tree/master">http://github.com/GITHUB_USERNAME/autotest_notification/tree/master</a></li>
62
+ </ul>
63
+ <pre>git clone git://github.com/GITHUB_USERNAME/autotest_notification.git</pre>
64
+ <p><span class="caps">TODO</span> &#8211; add &#8220;github_username: username&#8221; to ~/.rubyforge/user-config.yml and newgem will reuse it for future projects.</p>
65
+ <ul>
66
+ <li>gitorious: <a href="git://gitorious.org/autotest_notification/mainline.git">git://gitorious.org/autotest_notification/mainline.git</a></li>
67
+ </ul>
68
+ <pre>git clone git://gitorious.org/autotest_notification/mainline.git</pre>
69
+ <h3>Build and test instructions</h3>
70
+ <pre>cd autotest_notification
71
+ rake test
72
+ rake install_gem</pre>
73
+ <h2>License</h2>
74
+ <p>This code is free to use under the terms of the <span class="caps">MIT</span> license.</p>
75
+ <h2>Contact</h2>
76
+ <p>Comments are welcome. Send an email to <a href="mailto:eduardobrando@gmail.com">Carlos Brando</a> via the <a href="http://groups.google.com/group/autotest_notification">forum</a></p>
77
+ <p class="coda">
78
+ <a href="FIXME email">FIXME full name</a>, 5th October 2008<br>
79
+ Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
80
+ </p>
81
+ </div>
82
+
83
+ <!-- insert site tracking codes here, like Google Urchin -->
84
+
85
+ </body>
86
+ </html>
data/website/index.txt ADDED
@@ -0,0 +1,83 @@
1
+ h1. autotest_notification
2
+
3
+ h1. &#x2192; 'autotest_notification'
4
+
5
+
6
+ h2. What
7
+
8
+
9
+ h2. Installing
10
+
11
+ <pre syntax="ruby">sudo gem install autotest_notification</pre>
12
+
13
+ h2. The basics
14
+
15
+
16
+ h2. Demonstration of usage
17
+
18
+
19
+
20
+ h2. Forum
21
+
22
+ "http://groups.google.com/group/autotest_notification":http://groups.google.com/group/autotest_notification
23
+
24
+ TODO - create Google Group - autotest_notification
25
+
26
+ h2. How to submit patches
27
+
28
+ Read the "8 steps for fixing other people's code":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/ and for section "8b: Submit patch to Google Groups":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups, use the Google Group above.
29
+
30
+ TODO - pick SVN or Git instructions
31
+
32
+ The trunk repository is <code>svn://rubyforge.org/var/svn/autotest_notification/trunk</code> for anonymous access.
33
+
34
+ OOOORRRR
35
+
36
+ You can fetch the source from either:
37
+
38
+ <% if rubyforge_project_id %>
39
+
40
+ * rubyforge: "http://rubyforge.org/scm/?group_id=<%= rubyforge_project_id %>":http://rubyforge.org/scm/?group_id=<%= rubyforge_project_id %>
41
+
42
+ <pre>git clone git://rubyforge.org/autotest_notification.git</pre>
43
+
44
+ <% else %>
45
+
46
+ * rubyforge: MISSING IN ACTION
47
+
48
+ TODO - You can not created a RubyForge project, OR have not run <code>rubyforge config</code>
49
+ yet to refresh your local rubyforge data with this projects' id information.
50
+
51
+ When you do this, this message will magically disappear!
52
+
53
+ Or you can hack website/index.txt and make it all go away!!
54
+
55
+ <% end %>
56
+
57
+ * github: "http://github.com/GITHUB_USERNAME/autotest_notification/tree/master":http://github.com/GITHUB_USERNAME/autotest_notification/tree/master
58
+
59
+ <pre>git clone git://github.com/GITHUB_USERNAME/autotest_notification.git</pre>
60
+
61
+
62
+ TODO - add "github_username: username" to ~/.rubyforge/user-config.yml and newgem will reuse it for future projects.
63
+
64
+
65
+ * gitorious: "git://gitorious.org/autotest_notification/mainline.git":git://gitorious.org/autotest_notification/mainline.git
66
+
67
+ <pre>git clone git://gitorious.org/autotest_notification/mainline.git</pre>
68
+
69
+ h3. Build and test instructions
70
+
71
+ <pre>cd autotest_notification
72
+ rake test
73
+ rake install_gem</pre>
74
+
75
+
76
+ h2. License
77
+
78
+ This code is free to use under the terms of the MIT license.
79
+
80
+ h2. Contact
81
+
82
+ Comments are welcome. Send an email to "Carlos Brando":mailto:eduardobrando@gmail.com via the "forum":http://groups.google.com/group/autotest_notification
83
+