cerberus 0.3.5 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/CHANGES +159 -129
  2. data/LICENSE +21 -21
  3. data/README +75 -75
  4. data/Rakefile +161 -159
  5. data/bin/cerberus +2 -2
  6. data/lib/cerberus/builder/maven2.rb +38 -38
  7. data/lib/cerberus/builder/rake.rb +7 -7
  8. data/lib/cerberus/builder/rant.rb +7 -7
  9. data/lib/cerberus/builder/rspec.rb +13 -0
  10. data/lib/cerberus/builder/ruby_base.rb +48 -47
  11. data/lib/cerberus/cli.rb +73 -70
  12. data/lib/cerberus/component_lazy_loader.rb +2 -0
  13. data/lib/cerberus/config.example.yml +28 -28
  14. data/lib/cerberus/config.rb +47 -46
  15. data/lib/cerberus/constants.rb +8 -8
  16. data/lib/cerberus/latch.rb +26 -26
  17. data/lib/cerberus/manager.rb +296 -267
  18. data/lib/cerberus/publisher/base.rb +47 -47
  19. data/lib/cerberus/publisher/gmailer.rb +17 -0
  20. data/lib/cerberus/publisher/irc.rb +27 -27
  21. data/lib/cerberus/publisher/jabber.rb +25 -25
  22. data/lib/cerberus/publisher/mail.rb +36 -36
  23. data/lib/cerberus/publisher/netsmtp_tls_fix.rb +66 -66
  24. data/lib/cerberus/publisher/rss.rb +27 -28
  25. data/lib/cerberus/scm/cvs.rb +48 -48
  26. data/lib/cerberus/scm/darcs.rb +70 -70
  27. data/lib/cerberus/scm/svn.rb +83 -83
  28. data/lib/cerberus/utils.rb +156 -156
  29. data/test/config_test.rb +45 -45
  30. data/test/functional_test.rb +288 -287
  31. data/test/integration_test.rb +104 -104
  32. data/test/irc_publisher_test.rb +18 -18
  33. data/test/jabber_publisher_test.rb +21 -21
  34. data/test/mail_publisher_test.rb +25 -25
  35. data/test/maven2_builer_test.rb +81 -81
  36. data/test/mock/irc.rb +20 -20
  37. data/test/mock/manager.rb +10 -10
  38. data/test/mock/xmpp4r.rb +19 -19
  39. data/test/rss_publisher_test.rb +21 -21
  40. data/test/test_helper.rb +105 -105
  41. metadata +58 -40
  42. data/lib/cerberus/helper/xchar.rb +0 -61
data/test/mock/irc.rb CHANGED
@@ -1,20 +1,20 @@
1
- class IRCConnection
2
- @@messages = []
3
- @@connected = false
4
-
5
- def self.messages
6
- @@messages
7
- end
8
-
9
- def self.connected
10
- @@connected
11
- end
12
-
13
- def self.send_to_server(msg)
14
- @@messages << msg
15
- end
16
-
17
- def self.handle_connection(server, port, nick, realname)
18
- @@connected = true
19
- end
20
- end
1
+ class IRCConnection
2
+ @@messages = []
3
+ @@connected = false
4
+
5
+ def self.messages
6
+ @@messages
7
+ end
8
+
9
+ def self.connected
10
+ @@connected
11
+ end
12
+
13
+ def self.send_to_server(msg)
14
+ @@messages << msg
15
+ end
16
+
17
+ def self.handle_connection(server, port, nick, realname)
18
+ @@connected = true
19
+ end
20
+ end
data/test/mock/manager.rb CHANGED
@@ -1,11 +1,11 @@
1
- class DummyManager
2
- attr_reader :builder, :scm
3
-
4
- DummyScm = Struct.new(:last_commit_message, :current_revision, :last_author)
5
- DummyBuilder = Struct.new(:output)
6
-
7
- def initialize(last_commit_message, output, current_revision, last_author)
8
- @scm = DummyScm.new(last_commit_message, current_revision, last_author)
9
- @builder = DummyBuilder.new(output)
10
- end
1
+ class DummyManager
2
+ attr_reader :builder, :scm
3
+
4
+ DummyScm = Struct.new(:last_commit_message, :current_revision, :last_author)
5
+ DummyBuilder = Struct.new(:output)
6
+
7
+ def initialize(last_commit_message, output, current_revision, last_author)
8
+ @scm = DummyScm.new(last_commit_message, current_revision, last_author)
9
+ @builder = DummyBuilder.new(output)
10
+ end
11
11
  end
data/test/mock/xmpp4r.rb CHANGED
@@ -1,19 +1,19 @@
1
- require 'xmpp4r'
2
-
3
- class Jabber::Client
4
- @@messages = []
5
-
6
- def connect
7
- end
8
-
9
- def send(message)
10
- @@messages << message
11
- end
12
-
13
- def self.messages
14
- @@messages
15
- end
16
-
17
- def auth(pwd)
18
- end
19
- end
1
+ require 'xmpp4r'
2
+
3
+ class Jabber::Client
4
+ @@messages = []
5
+
6
+ def connect
7
+ end
8
+
9
+ def send(message)
10
+ @@messages << message
11
+ end
12
+
13
+ def self.messages
14
+ @@messages
15
+ end
16
+
17
+ def auth(pwd)
18
+ end
19
+ end
@@ -1,21 +1,21 @@
1
- require File.dirname(__FILE__) + '/test_helper'
2
-
3
- require 'cerberus/publisher/rss'
4
- require 'mock/manager'
5
- require 'tempfile'
6
-
7
- class RSSPublisherTest < Test::Unit::TestCase
8
- def test_publisher
9
- rss_file = Tempfile.new('cerberus-rss')
10
- options = Cerberus::Config.new(nil, :publisher => {:rss => {:file => rss_file.path}}, :application_name => 'RSS<App')
11
- build = DummyManager.new('last message', 'this is output', 1235, 'anatol')
12
-
13
- Cerberus::Publisher::RSS.publish(build_status(false), build, options)
14
-
15
- xml = REXML::Document.new(IO.read(rss_file.path))
16
-
17
- assert_equal '[RSS<App] Build still broken (#1235)', xml.elements["rss/channel/item/title/"].get_text.value
18
- assert_match %r{<pre>last message\nthis is output\n--\nCerberus 0.\d.\d, http://cerberus.rubyforge.org/</pre>},
19
- xml.elements["rss/channel/item/description/"].get_text.value
20
- end
21
- end
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ require 'cerberus/publisher/rss'
4
+ require 'mock/manager'
5
+ require 'tempfile'
6
+
7
+ class RSSPublisherTest < Test::Unit::TestCase
8
+ def test_publisher
9
+ rss_file = Tempfile.new('cerberus-rss')
10
+ options = Cerberus::Config.new(nil, :publisher => {:rss => {:file => rss_file.path}}, :application_name => 'RSS<App')
11
+ build = DummyManager.new('last message', 'this is output', 1235, 'anatol')
12
+
13
+ Cerberus::Publisher::RSS.publish(build_status(false), build, options)
14
+
15
+ xml = REXML::Document.new(IO.read(rss_file.path))
16
+
17
+ assert_equal '[RSS<App] Build still broken (#1235)', xml.elements["rss/channel/item/title/"].get_text.value
18
+ assert_match %r{<pre>last message\nthis is output\n--\nThis email generated by Cerberus tool ver\. 0.\d.\d, http://cerberus.rubyforge.org/</pre>},
19
+ xml.elements["rss/channel/item/description/"].get_text.value
20
+ end
21
+ end
data/test/test_helper.rb CHANGED
@@ -1,105 +1,105 @@
1
- $:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
2
- $:.unshift File.expand_path(File.dirname(__FILE__))
3
-
4
- require 'test/unit'
5
- require 'fileutils'
6
-
7
- require 'cerberus/utils'
8
-
9
- class Test::Unit::TestCase
10
- TEMP_DIR = File.expand_path(File.dirname(__FILE__)) + '/__workdir'
11
-
12
- SVN_REPO = TEMP_DIR + '/svn_repo'
13
- SVN_URL = 'file:///' + SVN_REPO.gsub(/\\/,'/').gsub(/^\//,'').gsub(' ', '%20')
14
-
15
- DARCS_REPO = TEMP_DIR + '/darcs_repo'
16
- DARCS_URL = 'file:///' + DARCS_REPO.gsub(/\\/,'/').gsub(/^\//,'').gsub(' ', '%20')
17
-
18
- HOME = TEMP_DIR + '/home'
19
- ENV['CERBERUS_HOME'] = HOME
20
- ENV['CERBERUS_ENV'] = 'TEST'
21
-
22
- def self.refresh_repos
23
- FileUtils.rm_rf TEMP_DIR
24
- FileUtils.mkpath SVN_REPO
25
- `svnadmin create "#{SVN_REPO}"`
26
- `svnadmin load "#{SVN_REPO}" < "#{File.dirname(__FILE__)}/data/subversion.dump"`
27
-
28
- require 'rubygems'
29
- require 'zip/zip'
30
- FileUtils.mkpath DARCS_REPO
31
- Zip::ZipFile::open("#{File.dirname(__FILE__)}/data/darcs.zip") {|zf|
32
- zf.each { |e|
33
- fpath = File.join(DARCS_REPO, e.name)
34
- FileUtils.mkdir_p(File.dirname(fpath))
35
- zf.extract(e, fpath)
36
- }
37
- }
38
- end
39
-
40
- refresh_repos
41
-
42
- CERBERUS_PATH = File.expand_path(File.dirname(__FILE__) + '/../')
43
- def run_cerb(args)
44
- `ruby -I"#{CERBERUS_PATH}/lib" "#{CERBERUS_PATH}/bin/cerberus" #{args} 2>&1`
45
- end
46
-
47
- def add_test_case_to_project(project_name, content)
48
- test_case_name = "#{HOME}/work/#{project_name}/sources/test/#{rand(10000)}_test.rb"
49
- File.open(test_case_name, 'w') { |f|
50
- f << "require 'test/unit'
51
-
52
- class A#{rand(10000)}Test < Test::Unit::TestCase
53
- def test_ok
54
- #{content}
55
- end
56
- end"
57
- }
58
-
59
- if block_given?
60
- yield
61
- FileUtils.rm test_case_name
62
- end
63
- end
64
-
65
- def add_application(app_name, url, options = {})
66
- opt = {'scm'=>{'url'=>url},
67
- 'publisher'=>{
68
- 'mail'=>{'recipients'=>'somebody@com.com', 'delivery_method' => 'test'}
69
- }}
70
-
71
- opt.deep_merge!(options)
72
-
73
- dump_yml(HOME + "/config/#{app_name}.yml", opt)
74
-
75
- FileUtils.rm_rf HOME + "/work/#{app_name}"
76
- end
77
-
78
- def add_config(options)
79
- dump_yml(HOME + "/config.yml", options)
80
- end
81
-
82
- # Overrides the method +method_name+ in +obj+ with the passed block
83
- def override_method(obj, method_name, &block)
84
- # Get the singleton class/eigenclass for 'obj'
85
- klass = class <<obj; self; end
86
-
87
- # Undefine the old method (using 'send' since 'undef_method' is protected)
88
- klass.send(:undef_method, method_name)
89
-
90
- # Create the new method
91
- klass.send(:define_method, method_name, block)
92
- end
93
-
94
- def build_successful?(file_name)
95
- data = YAML.load(IO.read(file_name))
96
- assert_kind_of Hash, data
97
- data['successful']
98
- end
99
-
100
- def build_status(successful)
101
- Cerberus::Status.new('state' => successful)
102
- end
103
- end
104
-
105
- require 'cerberus/config'
1
+ $:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
2
+ $:.unshift File.expand_path(File.dirname(__FILE__))
3
+
4
+ require 'test/unit'
5
+ require 'fileutils'
6
+
7
+ require 'cerberus/utils'
8
+
9
+ class Test::Unit::TestCase
10
+ TEMP_DIR = File.expand_path(File.dirname(__FILE__)) + '/__workdir'
11
+
12
+ SVN_REPO = TEMP_DIR + '/svn_repo'
13
+ SVN_URL = 'file:///' + SVN_REPO.gsub(/\\/,'/').gsub(/^\//,'').gsub(' ', '%20')
14
+
15
+ DARCS_REPO = TEMP_DIR + '/darcs_repo'
16
+ DARCS_URL = 'file:///' + DARCS_REPO.gsub(/\\/,'/').gsub(/^\//,'').gsub(' ', '%20')
17
+
18
+ HOME = TEMP_DIR + '/home'
19
+ ENV['CERBERUS_HOME'] = HOME
20
+ ENV['CERBERUS_ENV'] = 'TEST'
21
+
22
+ def self.refresh_repos
23
+ FileUtils.rm_rf TEMP_DIR
24
+ FileUtils.mkpath SVN_REPO
25
+ `svnadmin create "#{SVN_REPO}"`
26
+ `svnadmin load "#{SVN_REPO}" < "#{File.dirname(__FILE__)}/data/subversion.dump"`
27
+
28
+ require 'rubygems'
29
+ require 'zip/zip'
30
+ FileUtils.mkpath DARCS_REPO
31
+ Zip::ZipFile::open("#{File.dirname(__FILE__)}/data/darcs.zip") {|zf|
32
+ zf.each { |e|
33
+ fpath = File.join(DARCS_REPO, e.name)
34
+ FileUtils.mkdir_p(File.dirname(fpath))
35
+ zf.extract(e, fpath)
36
+ }
37
+ }
38
+ end
39
+
40
+ refresh_repos
41
+
42
+ CERBERUS_PATH = File.expand_path(File.dirname(__FILE__) + '/../')
43
+ def run_cerb(args)
44
+ `ruby -I"#{CERBERUS_PATH}/lib" "#{CERBERUS_PATH}/bin/cerberus" #{args} 2>&1`
45
+ end
46
+
47
+ def add_test_case_to_project(project_name, content)
48
+ test_case_name = "#{HOME}/work/#{project_name}/sources/test/#{rand(10000)}_test.rb"
49
+ File.open(test_case_name, 'w') { |f|
50
+ f << "require 'test/unit'
51
+
52
+ class A#{rand(10000)}Test < Test::Unit::TestCase
53
+ def test_ok
54
+ #{content}
55
+ end
56
+ end"
57
+ }
58
+
59
+ if block_given?
60
+ yield
61
+ FileUtils.rm test_case_name
62
+ end
63
+ end
64
+
65
+ def add_application(app_name, url, options = {})
66
+ opt = {'scm'=>{'url'=>url},
67
+ 'publisher'=>{
68
+ 'mail'=>{'recipients'=>'somebody@com.com', 'delivery_method' => 'test'}
69
+ }}
70
+
71
+ opt.deep_merge!(options)
72
+
73
+ dump_yml(HOME + "/config/#{app_name}.yml", opt)
74
+
75
+ FileUtils.rm_rf HOME + "/work/#{app_name}"
76
+ end
77
+
78
+ def add_config(options)
79
+ dump_yml(HOME + "/config.yml", options)
80
+ end
81
+
82
+ # Overrides the method +method_name+ in +obj+ with the passed block
83
+ def override_method(obj, method_name, &block)
84
+ # Get the singleton class/eigenclass for 'obj'
85
+ klass = class <<obj; self; end
86
+
87
+ # Undefine the old method (using 'send' since 'undef_method' is protected)
88
+ klass.send(:undef_method, method_name)
89
+
90
+ # Create the new method
91
+ klass.send(:define_method, method_name, block)
92
+ end
93
+
94
+ def build_successful?(file_name)
95
+ data = YAML.load(IO.read(file_name))
96
+ assert_kind_of Hash, data
97
+ data['successful']
98
+ end
99
+
100
+ def build_status(successful)
101
+ Cerberus::Status.new('state' => successful)
102
+ end
103
+ end
104
+
105
+ require 'cerberus/config'
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.2
2
+ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: cerberus
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.3.5
7
- date: 2007-02-17 00:00:00 +03:00
6
+ version: 0.3.6
7
+ date: 2007-07-17 00:00:00 +04:00
8
8
  summary: Cerberus is a Continuous Integration tool that could be easily run from Cron.
9
9
  require_paths:
10
10
  - lib
@@ -31,56 +31,56 @@ authors:
31
31
  files:
32
32
  - bin/cerberus
33
33
  - lib/cerberus
34
- - lib/cerberus/builder
34
+ - lib/cerberus/scm
35
+ - lib/cerberus/manager.rb
36
+ - lib/cerberus/config.rb
35
37
  - lib/cerberus/cli.rb
38
+ - lib/cerberus/constants.rb
36
39
  - lib/cerberus/component_lazy_loader.rb
37
40
  - lib/cerberus/config.example.yml
38
- - lib/cerberus/config.rb
39
- - lib/cerberus/config_migration.rb
40
- - lib/cerberus/constants.rb
41
- - lib/cerberus/helper
42
- - lib/cerberus/latch.rb
43
- - lib/cerberus/manager.rb
44
41
  - lib/cerberus/publisher
45
- - lib/cerberus/scm
42
+ - lib/cerberus/latch.rb
43
+ - lib/cerberus/config_migration.rb
44
+ - lib/cerberus/builder
46
45
  - lib/cerberus/utils.rb
47
- - lib/cerberus/builder/base.rb
48
- - lib/cerberus/builder/bjam.rb
49
- - lib/cerberus/builder/maven2.rb
50
- - lib/cerberus/builder/rake.rb
51
- - lib/cerberus/builder/rant.rb
52
- - lib/cerberus/builder/ruby_base.rb
53
- - lib/cerberus/helper/xchar.rb
54
- - lib/cerberus/publisher/base.rb
55
- - lib/cerberus/publisher/campfire.rb
56
- - lib/cerberus/publisher/irc.rb
46
+ - lib/cerberus/scm/darcs.rb
47
+ - lib/cerberus/scm/cvs.rb
48
+ - lib/cerberus/scm/svn.rb
49
+ - lib/cerberus/scm/perforce.rb
57
50
  - lib/cerberus/publisher/jabber.rb
51
+ - lib/cerberus/publisher/campfire.rb
58
52
  - lib/cerberus/publisher/mail.rb
59
- - lib/cerberus/publisher/netsmtp_tls_fix.rb
53
+ - lib/cerberus/publisher/irc.rb
60
54
  - lib/cerberus/publisher/rss.rb
61
- - lib/cerberus/scm/cvs.rb
62
- - lib/cerberus/scm/darcs.rb
63
- - lib/cerberus/scm/perforce.rb
64
- - lib/cerberus/scm/svn.rb
65
- - test/bjam_builder_test.rb
66
- - test/config_test.rb
55
+ - lib/cerberus/publisher/netsmtp_tls_fix.rb
56
+ - lib/cerberus/publisher/base.rb
57
+ - lib/cerberus/publisher/gmailer.rb
58
+ - lib/cerberus/builder/rake.rb
59
+ - lib/cerberus/builder/rant.rb
60
+ - lib/cerberus/builder/rspec.rb
61
+ - lib/cerberus/builder/ruby_base.rb
62
+ - lib/cerberus/builder/maven2.rb
63
+ - lib/cerberus/builder/base.rb
64
+ - lib/cerberus/builder/bjam.rb
67
65
  - test/data
68
- - test/functional_test.rb
69
- - test/integration_test.rb
66
+ - test/mock
67
+ - test/bjam_builder_test.rb
70
68
  - test/irc_publisher_test.rb
71
- - test/jabber_publisher_test.rb
69
+ - test/config_test.rb
70
+ - test/rss_publisher_test.rb
72
71
  - test/mail_publisher_test.rb
73
- - test/maven2_builer_test.rb
74
- - test/mock
75
72
  - test/perforce_scm_test.rb
76
- - test/rss_publisher_test.rb
73
+ - test/jabber_publisher_test.rb
74
+ - test/maven2_builer_test.rb
77
75
  - test/test_helper.rb
78
- - test/data/darcs.zip
76
+ - test/integration_test.rb
77
+ - test/functional_test.rb
79
78
  - test/data/subversion.dump
80
- - test/mock/irc.rb
79
+ - test/data/darcs.zip
81
80
  - test/mock/manager.rb
82
- - test/mock/marshmallow.rb
83
81
  - test/mock/xmpp4r.rb
82
+ - test/mock/irc.rb
83
+ - test/mock/marshmallow.rb
84
84
  - LICENSE
85
85
  - README
86
86
  - CHANGES
@@ -106,7 +106,16 @@ dependencies:
106
106
  requirements:
107
107
  - - ">="
108
108
  - !ruby/object:Gem::Version
109
- version: 1.3.2
109
+ version: 1.3.3
110
+ version:
111
+ - !ruby/object:Gem::Dependency
112
+ name: activesupport
113
+ version_requirement:
114
+ version_requirements: !ruby/object:Gem::Version::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: 1.4.2
110
119
  version:
111
120
  - !ruby/object:Gem::Dependency
112
121
  name: rake
@@ -115,7 +124,7 @@ dependencies:
115
124
  requirements:
116
125
  - - ">="
117
126
  - !ruby/object:Gem::Version
118
- version: 0.7.1
127
+ version: 0.7.3
119
128
  version:
120
129
  - !ruby/object:Gem::Dependency
121
130
  name: xmpp4r
@@ -124,7 +133,7 @@ dependencies:
124
133
  requirements:
125
134
  - - ">="
126
135
  - !ruby/object:Gem::Version
127
- version: "0.3"
136
+ version: 0.3.1
128
137
  version:
129
138
  - !ruby/object:Gem::Dependency
130
139
  name: Ruby-IRC
@@ -135,3 +144,12 @@ dependencies:
135
144
  - !ruby/object:Gem::Version
136
145
  version: 1.0.7
137
146
  version:
147
+ - !ruby/object:Gem::Dependency
148
+ name: gmailer
149
+ version_requirement:
150
+ version_requirements: !ruby/object:Gem::Version::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: 0.1.7
155
+ version: