cerberus 0.3.5 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: