cerberus 0.4.5.1 → 0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,11 @@
1
1
  = Cerberus Changelog
2
2
 
3
+ == Version 0.5
4
+ Bugfixes and Ticket Support
5
+
6
+ * git branch support
7
+ * updates to maven2 config support for custom builder options
8
+
3
9
  == Version 0.4.5.1
4
10
  Bugfix for ticket #6
5
11
 
@@ -1,4 +1,4 @@
1
- Copyright (c) 2006 Anatol Pomozov
1
+ Copyright (c) 2006-2009 by individual contributors (see: Copyright.txt)
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -18,4 +18,3 @@ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
18
  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
19
  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
20
  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
-
data/Rakefile CHANGED
@@ -14,11 +14,11 @@ PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
14
14
  RELEASE_NAME = "REL #{PKG_VERSION}"
15
15
 
16
16
  RUBYFORGE_PROJECT = "cerberus"
17
- RUBYFORGE_USER = ENV['RUBYFORGE_USER'] || "anatol"
17
+ RUBYFORGE_USER = ENV['RUBYFORGE_USER'] || "cpjolicoeur"
18
18
 
19
19
  task :default => [:test, :clean]
20
20
 
21
- desc "Run the unit tests in test/unit"
21
+ desc "Run the tests in the test/ directory"
22
22
  Rake::TestTask.new(:test) do |t|
23
23
  t.libs << "test"
24
24
  t.pattern = 'test/*_test.rb'
@@ -46,9 +46,6 @@ GEM_SPEC = Gem::Specification.new do |s|
46
46
  Cerberus is a Continuous Integration software for Ruby projects. CI helps you keep your project
47
47
  in a good shape.
48
48
 
49
- For now Cerberus only work with projects that use Subversion but in the future it would be provided
50
- support for other VCS.
51
-
52
49
  Cerberus could be easily invoked from Cron (for Unix) or nnCron (for Windows) utilities.
53
50
  DESC
54
51
 
@@ -61,21 +58,18 @@ GEM_SPEC = Gem::Specification.new do |s|
61
58
  s.add_dependency 'twitter4r', '>= 0.3.0'
62
59
 
63
60
  s.files = Dir.glob("{bin,lib,test}/**/*").delete_if { |item| item.include?('__workdir') }
64
- s.files += %w(LICENSE README CHANGES Rakefile)
61
+ s.files += %w(License.txt Readme.txt Changelog.txt Rakefile)
65
62
  s.files += Dir.glob("doc/*").delete_if { |item| item.include?('__workdir') }
66
63
 
67
64
  s.bindir = "bin"
68
65
  s.executables = ["cerberus"]
69
66
  s.default_executable = "cerberus"
70
-
71
67
  s.require_path = 'lib'
72
-
73
68
  s.has_rdoc = false
74
-
75
69
  s.test_files = Dir.glob('test/*_test.rb')
76
70
 
77
- s.author = "Anatol Pomozov"
78
- s.email = "anatol.pomozov@gmail.com"
71
+ s.author = "Craig P Jolicoeur"
72
+ s.email = "cpjolicoeur@gmail.com"
79
73
  s.homepage = "http://rubyforge.org/projects/cerberus"
80
74
  s.rubyforge_project = RUBYFORGE_PROJECT
81
75
  end
@@ -132,6 +126,8 @@ task :release_files => [:clean, :package] do
132
126
  release.files = release_files.to_a
133
127
  release.package_name = PKG_NAME
134
128
  release.release_name = "Cerberus #{PKG_VERSION}"
129
+ release.release_notes = IO.read( File.dirname( __FILE__ ) + '/Changelog.txt' )
130
+ release.release_changes = IO.read( File.dirname( __FILE__ ) + '/Changelog.txt' )
135
131
  end
136
132
 
137
133
  end
@@ -144,18 +140,20 @@ task :publish_news do
144
140
  publisher.user_name = RUBYFORGE_USER
145
141
  publisher.password = ENV['RUBYFORGE_PASSWORD']
146
142
  publisher.subject = "[ANN] Cerberus #{PKG_VERSION} Released"
147
- publisher.details = IO.read(File.dirname(__FILE__) + '/CHANGES')
143
+ publisher.details = IO.read(File.dirname(__FILE__) + '/Changelog.txt')
148
144
  end
149
145
  end
150
146
 
151
147
  require 'webgen/webgentask'
152
- task :generate_site => :webgen
148
+ task :generate_site => :webgen do
153
149
 
154
150
  Webgen::WebgenTask.new do |t|
155
151
  t.directory = File.join( File.dirname( __FILE__ ), 'doc/site')
156
152
  t.clobber_outdir = true
157
153
  end
158
154
 
155
+ end
156
+
159
157
  task :publish_site => :generate_site do
160
158
  sh %{scp -r -q doc/site/out/* #{RUBYFORGE_USER}@rubyforge.org:/var/www/gforge-projects/#{RUBYFORGE_PROJECT}/}
161
159
  end
@@ -101,14 +101,4 @@ http://cpjolicoeur.lighthouseapp.com/projects/22299-cerberus
101
101
  == License
102
102
 
103
103
  This plugin is licensed under the MIT license. Complete license text
104
- is included in the LICENSE file.
105
-
106
- == Author
107
-
108
- This software was created by Anatol Pomozov <anatol.pomozov@gmail.com> and is
109
- located at http://cerberus.rubyforge.org.
110
-
111
- == Contributors
112
-
113
- Craig P Jolicoeur <http://github.com/cpjolicoeur>
114
- Rob Kaufman <http://github.com/notch8>
104
+ is included in the License.txt file.
@@ -11,7 +11,7 @@ class Cerberus::Builder::Maven2
11
11
  Dir.chdir @config[:application_root]
12
12
  cmd = @config[:builder, :maven2, :cmd] || 'mvn'
13
13
  task = @config[:builder, :maven2, :task] || 'test'
14
- @output = `#{@config[:bin_path]}#{cmd} #{task} 2>&1`
14
+ @output = `#{@config[:bin_path]}#{cmd} #{system_properties} #{settings} #{task} 2>&1`
15
15
  add_error_information
16
16
  successful?
17
17
  end
@@ -20,6 +20,28 @@ class Cerberus::Builder::Maven2
20
20
  $?.exitstatus == 0 and not @output.include?('[ERROR] BUILD FAILURE')
21
21
  end
22
22
 
23
+ private
24
+
25
+ def system_properties
26
+ properties = []
27
+ system_properties = @config[:builder, :maven2, :system_properties]
28
+ if system_properties
29
+ system_properties.each do |p|
30
+ properties << %Q(-D#{p[0]}="#{p[1]}")
31
+ end
32
+ end
33
+ properties.join(' ')
34
+ end
35
+
36
+ def settings
37
+ settings_file = @config[:builder, :maven2, :settings]
38
+ if settings_file
39
+ return "-s #{settings_file}"
40
+ else
41
+ return ''
42
+ end
43
+ end
44
+
23
45
  def add_error_information
24
46
  str = @output
25
47
  @output = ''
data/lib/cerberus/cli.rb CHANGED
@@ -8,7 +8,6 @@ module Cerberus
8
8
  say HELP if args.empty?
9
9
 
10
10
  command = args.shift
11
- say HELP unless %w(add remove build buildall list).include?(command)
12
11
 
13
12
  cli_options = extract_options(args)
14
13
 
@@ -33,6 +32,11 @@ module Cerberus
33
32
  when 'list'
34
33
  command = Cerberus::ListCommand.new(cli_options)
35
34
  command.run
35
+ when 'status'
36
+ command = Cerberus::StatusCommand.new(cli_options)
37
+ command.run
38
+ else
39
+ say HELP
36
40
  end
37
41
  end
38
42
 
@@ -68,6 +72,7 @@ module Cerberus
68
72
  cerberus build <NAME> --- build watched application
69
73
  cerberus buildall --- build all watched applications
70
74
  cerberus list --- see the list of all watched applications
75
+ cerberus status --- see the current status of all cerberus projects
71
76
 
72
77
  Version: #{Cerberus::VERSION}
73
78
  Cerberus Path: "#{Cerberus::HOME}"
@@ -4,5 +4,5 @@ module Cerberus
4
4
 
5
5
  LOCK_WAIT = 30 * 60 #30 minutes
6
6
 
7
- VERSION = '0.4.5.1'
7
+ VERSION = '0.5'
8
8
  end
@@ -228,16 +228,62 @@ module Cerberus
228
228
  end
229
229
  end
230
230
  end
231
+
232
+ class StatusCommand
233
+ def initialize(cli_options = {})
234
+ end
235
+
236
+ def run
237
+ projects = Dir["#{HOME}/config/*.yml"].map { |fn| fn.gsub(/.*\/(.*).yml$/, '\1') }
238
+ if projects.empty?
239
+ puts "There are not any active projects"
240
+ else
241
+ delim = ' | '
242
+ cols = [
243
+ ['Project Name', 30, lambda { |p, s| p }],
244
+ ['Revision', 10, lambda { |p, s| "r#{s.revision.to_s.slice( 0, 8 ) }"}],
245
+ ['Status', 10, lambda { |p, s| s.previous_build_successful ? 'Pass' : 'Fail' }],
246
+ ['Last Success', 10, lambda { |p, s| "r#{s.successful_build_revision.to_s.slice( 0, 8 )}"}],
247
+ ]
248
+ header = cols.map { |head, size, lamb| head.ljust(size) }.join(delim)
249
+ puts '-' * header.length
250
+ puts header
251
+ puts '-' * header.length
252
+ projects.each do |proj|
253
+ status = Status.read("#{HOME}/work/#{proj}/status.log")
254
+ row = cols.map { |head, size, lamb| lamb.call(proj, status).to_s.ljust(size) }.join(delim)
255
+ puts status.previous_build_successful ? ansi_green(row) : ansi_red(row)
256
+ end
257
+ puts '-' * header.length
258
+ end
259
+ end
260
+
261
+ def ansi_green(str)
262
+ ansi_escape('32m', str)
263
+ end
264
+
265
+ def ansi_red(str)
266
+ ansi_escape('31m', str)
267
+ end
268
+
269
+ def ansi_escape(code, str)
270
+ "\033[#{code}" + str + "\033[0m"
271
+ end
272
+
273
+ end
231
274
 
232
- #Fields that are contained in status file
233
- # successful (true mean previous build was successful, otherwise - false)
234
- # timestamp
235
- # revision
236
- # brokeness
237
- # successful_build_timestamp
238
- # successful_build_revision
275
+ #
276
+ # Fields that are contained in status file
277
+ #
278
+ # successful_build_timestamp
279
+ # timestamp
280
+ # successful (true mean previous build was successful, otherwise - false)
281
+ # revision
282
+ # brokeness
283
+ # successful_build_revision
284
+ #
239
285
  class Status
240
- attr_reader :previous_build_successful, :previous_brokeness, :current_build_successful, :current_brokeness
286
+ attr_reader :previous_build_successful, :previous_brokeness, :current_build_successful, :current_brokeness, :revision, :successful_build_revision
241
287
 
242
288
  def initialize(param)
243
289
  if param.is_a? Hash
@@ -262,6 +308,8 @@ module Cerberus
262
308
  @already_kept = false
263
309
  end
264
310
 
311
+ @revision = @hash['revision']
312
+ @successful_build_revision = @hash['successful_build_revision']
265
313
  @previous_build_successful = @hash['successful']
266
314
  @previous_brokeness = @hash['brokeness']
267
315
  end
@@ -15,12 +15,16 @@ class Cerberus::SCM::Git
15
15
  def update!
16
16
  if test(?d, @path + '/.git')
17
17
  extract_last_commit_info
18
- #@status = execute('pull', '')
19
18
  @status = execute("reset", "--hard #{@revision}") + execute('pull')
20
19
  else
21
20
  FileUtils.rm_rf(@path) if test(?d, @path)
22
21
  encoded_url = (@config[:scm, :url].include?(' ') ? "\"#{@config[:scm, :url]}\"" : @config[:scm, :url])
23
22
  @status = execute("clone", "#{encoded_url} #{@path}", false)
23
+ if @config[:scm, :branch]
24
+ branch = @config[:scm, :branch]
25
+ execute('branch', "--track #{branch} origin/#{branch}")
26
+ execute('checkout', branch)
27
+ end
24
28
  end
25
29
  end
26
30
 
@@ -52,6 +56,7 @@ class Cerberus::SCM::Git
52
56
  end
53
57
 
54
58
  private
59
+
55
60
  def execute(command, parameters = nil, with_path = true)
56
61
  if with_path
57
62
  cmd = "cd #{@config[:application_root]} && #{@config[:bin_path]}git --git-dir=#{@path}/.git #{command} #{parameters}"
data/test/data/git.zip CHANGED
Binary file
Binary file
@@ -6,15 +6,15 @@ require 'action_mailer'
6
6
 
7
7
  class FunctionalTest < Test::Unit::TestCase
8
8
  def setup
9
+ # Its better to remove on setup than teardown incase we need to debug
9
10
  FileUtils.rm_rf HOME
10
11
  ActionMailer::Base.deliveries.clear
11
12
  end
12
13
 
13
14
  def teardown
14
15
  dir = HOME + '/../'
15
- Dir.chdir(dir) if test(?d, dir) #We need change working directory to some non-removable dir otherwise we would have warning after removing that working directory absent
16
- # Its better to remove on setup than teardown incase we need to debug
17
- #FileUtils.rm_rf HOME
16
+ # We need change working directory to some non-removable dir otherwise we would have warning after removing that working directory absent
17
+ Dir.chdir(dir) if test(?d, dir)
18
18
  end
19
19
 
20
20
  def test_add_by_url
@@ -45,8 +45,8 @@ class FunctionalTest < Test::Unit::TestCase
45
45
  scm_conf = load_yml(project_config)['scm']
46
46
  assert_equal 'svn', scm_conf['type']
47
47
  scm_uri = URI.parse(scm_conf['url'])
48
- # TODO - this assert needs to be fixed
49
- #assert_match 'rubyforge.org', scm_uri.host
48
+ # FIXME - this assert needs to be fixed
49
+ # assert_match 'rubyforge.org', scm_uri.host
50
50
 
51
51
  assert File.exists?(HOME + '/config.yml')
52
52
  end
@@ -95,7 +95,6 @@ class FunctionalTest < Test::Unit::TestCase
95
95
  assert_equal :broken, build.status.current_state
96
96
  assert_equal 3, ActionMailer::Base.deliveries.size #We should receive mail if project fails
97
97
 
98
-
99
98
  add_test_case_to_project('myapp', 'raise "Some exception here"') #if we have exception
100
99
  build = Cerberus::BuildCommand.new('myapp', :force => true)
101
100
  build.run
@@ -124,7 +123,7 @@ class FunctionalTest < Test::Unit::TestCase
124
123
  end
125
124
 
126
125
  def test_send_on_different_events
127
- #TODO - This currently throws an exit code stoping all tests
126
+ # FIXME - This currently throws an exit code stoping all tests
128
127
  # add_application('myapp', SVN_URL, 'publisher' => {'mail' => {'on_event' => 'none'}, 'on_event' => 'all'})
129
128
  # build = Cerberus::BuildCommand.new('myapp')
130
129
  # build.run
@@ -200,66 +199,66 @@ class FunctionalTest < Test::Unit::TestCase
200
199
  end
201
200
 
202
201
  def test_darcs
203
- add_application('darcsapp', DARCS_URL, :scm => {:type => 'darcs'})
204
-
205
- build = Cerberus::BuildCommand.new('darcsapp')
206
- build.run
207
- assert build.scm.has_changes?
208
- assert_equal 1, ActionMailer::Base.deliveries.size #first email that project was setup
209
- mail = ActionMailer::Base.deliveries[0]
210
- output = mail.body
211
-
212
- #Check outpus that run needed tasks
213
- assert_match /1 tests, 1 assertions, 0 failures, 0 errors/, output
214
- assert output !~ /Task 'custom1' has been invoked/
215
- assert_equal '[darcsapp] Cerberus set up for project (#20061010090920)', mail.subject
216
-
217
- status_file = HOME + '/work/darcsapp/status.log'
218
- assert File.exists?(status_file)
219
- assert build_successful?(status_file)
220
- assert 1, Dir[HOME + "/work/darcsapp/logs/*.log"].size
221
-
222
- #There were no changes - no reaction should be
223
- build = Cerberus::BuildCommand.new('darcsapp')
224
- build.run
225
- assert_equal false, build.scm.has_changes?
226
- assert_equal 1, ActionMailer::Base.deliveries.size #first email that project was setup
227
- assert 1, Dir[HOME + "/work/darcsapp/logs/*.log"].size
228
-
229
- #now we add new broken test
230
- test_case_name = "test/#{rand(10000)}_test.rb"
231
- File.open(DARCS_REPO + '/' + test_case_name, 'w') { |f|
232
- f << "require 'test/unit'
233
- class A#{rand(10000)}Test < Test::Unit::TestCase
234
- def test_ok
235
- assert false
236
- end
237
- end"
238
- }
239
-
240
- curr_dir = Dir.pwd
241
- Dir.chdir DARCS_REPO
242
- `darcs add #{test_case_name}`
243
- `darcs record -a -A test@gmail.com -m somepatch`
244
- Dir.chdir curr_dir
202
+ # add_application('darcsapp', DARCS_URL, :scm => {:type => 'darcs'})
245
203
 
246
- build = Cerberus::BuildCommand.new('darcsapp')
247
- build.run
248
- assert build.scm.has_changes?
249
- assert_equal 2, ActionMailer::Base.deliveries.size #first email that project was setup
250
- assert 2, Dir[HOME + "/work/darcsapp/logs/*.log"].size
204
+ # build = Cerberus::BuildCommand.new('darcsapp')
205
+ # build.run
206
+ # assert build.scm.has_changes?
207
+ # assert_equal 1, ActionMailer::Base.deliveries.size #first email that project was setup
208
+ # mail = ActionMailer::Base.deliveries[0]
209
+ # output = mail.body
210
+
211
+ # #Check outpus that run needed tasks
212
+ # assert_match /1 tests, 1 assertions, 0 failures, 0 errors/, output
213
+ # assert output !~ /Task 'custom1' has been invoked/
214
+ # assert_equal '[darcsapp] Cerberus set up for project (#20061010090920)', mail.subject
215
+
216
+ # status_file = HOME + '/work/darcsapp/status.log'
217
+ # assert File.exists?(status_file)
218
+ # assert build_successful?(status_file)
219
+ # assert 1, Dir[HOME + "/work/darcsapp/logs/*.log"].size
220
+
221
+ # #There were no changes - no reaction should be
222
+ # build = Cerberus::BuildCommand.new('darcsapp')
223
+ # build.run
224
+ # assert_equal false, build.scm.has_changes?
225
+ # assert_equal 1, ActionMailer::Base.deliveries.size #first email that project was setup
226
+ # assert 1, Dir[HOME + "/work/darcsapp/logs/*.log"].size
227
+
228
+ # #now we add new broken test
229
+ # test_case_name = "test/#{rand(10000)}_test.rb"
230
+ # File.open(DARCS_REPO + '/' + test_case_name, 'w') { |f|
231
+ # f << "require 'test/unit'
232
+ # class A#{rand(10000)}Test < Test::Unit::TestCase
233
+ # def test_ok
234
+ # assert false
235
+ # end
236
+ # end"
237
+ # }
238
+
239
+ # curr_dir = Dir.pwd
240
+ # Dir.chdir DARCS_REPO
241
+ # `darcs add #{test_case_name}`
242
+ # `darcs record -a -A test@gmail.com -m somepatch`
243
+ # Dir.chdir curr_dir
244
+
245
+ # build = Cerberus::BuildCommand.new('darcsapp')
246
+ # build.run
247
+ # assert build.scm.has_changes?
248
+ # assert_equal 2, ActionMailer::Base.deliveries.size #first email that project was setup
249
+ # assert 2, Dir[HOME + "/work/darcsapp/logs/*.log"].size
251
250
 
252
- build = Cerberus::BuildCommand.new('darcsapp')
253
- build.run
254
- assert_equal false, build.scm.has_changes?
255
- assert_equal 2, ActionMailer::Base.deliveries.size #first email that project was setup
256
- assert 2, Dir[HOME + "/work/darcsapp/logs/*.log"].size
251
+ # build = Cerberus::BuildCommand.new('darcsapp')
252
+ # build.run
253
+ # assert_equal false, build.scm.has_changes?
254
+ # assert_equal 2, ActionMailer::Base.deliveries.size #first email that project was setup
255
+ # assert 2, Dir[HOME + "/work/darcsapp/logs/*.log"].size
257
256
 
258
- #Now we broke remote repository (imiitate that network unaccessage)
259
- FileUtils.rm_rf DARCS_REPO
260
- build = Cerberus::BuildCommand.new('darcsapp')
261
- build.run
262
- assert_equal false, build.scm.has_changes?
257
+ # #Now we broke remote repository (imiitate that network unaccessage)
258
+ # FileUtils.rm_rf DARCS_REPO
259
+ # build = Cerberus::BuildCommand.new('darcsapp')
260
+ # build.run
261
+ # assert_equal false, build.scm.has_changes?
263
262
  end
264
263
 
265
264
  def test_git
@@ -272,7 +271,7 @@ class FunctionalTest < Test::Unit::TestCase
272
271
  mail = ActionMailer::Base.deliveries[0]
273
272
  output = mail.body
274
273
 
275
- #Check outpus that run needed tasks
274
+ #Check output that run needed tasks
276
275
  assert_match /1 tests, 1 assertions, 0 failures, 0 errors/, output
277
276
  assert output !~ /Task 'custom1' has been invoked/
278
277
  assert_match /\[gitapp\] Cerberus set up for project/, mail.subject
@@ -290,14 +289,15 @@ class FunctionalTest < Test::Unit::TestCase
290
289
  assert 1, Dir[HOME + "/work/gitapp/logs/*.log"].size
291
290
 
292
291
  #now we add new broken test
293
- test_case_name = "test/#{rand(10000)}_test.rb"
292
+ rand_val = rand(10000)
293
+ test_case_name = "test/#{rand_val}_test.rb"
294
294
  File.open(GIT_REPO + '/' + test_case_name, 'w') { |f|
295
- f << "require 'test/unit'
296
- class A#{rand(10000)}Test < Test::Unit::TestCase
295
+ f << %Q( require 'test/unit'
296
+ class A#{rand_val}Test < Test::Unit::TestCase
297
297
  def test_ok
298
298
  assert false
299
299
  end
300
- end"
300
+ end )
301
301
  }
302
302
 
303
303
  curr_dir = Dir.pwd
@@ -309,7 +309,7 @@ class FunctionalTest < Test::Unit::TestCase
309
309
  build = Cerberus::BuildCommand.new('gitapp')
310
310
  build.run
311
311
  assert build.scm.has_changes?
312
- assert_equal 2, ActionMailer::Base.deliveries.size #first email that project was setup
312
+ assert_equal 2, ActionMailer::Base.deliveries.size #first email that project was setup plus new alert email
313
313
  assert 2, Dir[HOME + "/work/gitsapp/logs/*.log"].size
314
314
 
315
315
  build = Cerberus::BuildCommand.new('gitapp')
@@ -318,7 +318,13 @@ class FunctionalTest < Test::Unit::TestCase
318
318
  assert_equal 2, ActionMailer::Base.deliveries.size #first email that project was setup
319
319
  assert 2, Dir[HOME + "/work/gitapp/logs/*.log"].size
320
320
 
321
- #Now we broke remote repository (imitate that network unaccessage)
321
+ # test git branch features
322
+ add_application('gitapp2', GIT_URL, 'scm' => {'type' => 'git', 'branch' => 'cerberus'})
323
+ build = Cerberus::BuildCommand.new('gitapp2')
324
+ build.run
325
+ assert build.scm.has_changes?
326
+
327
+ #Now we broke remote repository (imitate that network unaccessable)
322
328
  FileUtils.rm_rf GIT_REPO
323
329
  build = Cerberus::BuildCommand.new('gitapp')
324
330
  build.run
@@ -326,7 +332,7 @@ class FunctionalTest < Test::Unit::TestCase
326
332
  end
327
333
 
328
334
  def test_campfire_publisher
329
- #there were no any messages cause login/password is incorrect. We just check that there was no any exceptions
335
+ # there were not any messages causing login/password is incorrect. We just check that there was no any exceptions
330
336
  add_application('campapp', SVN_URL, 'publisher' => {'active' => 'campfire', 'campfire' =>
331
337
  {'url' => 'http://mail@gmail.com:somepwd@cerberustool.campfirenow.com/room/5166022'}
332
338
  })
@@ -30,6 +30,11 @@ class IntegrationTest < Test::Unit::TestCase
30
30
  assert_match /mamba/, output
31
31
  end
32
32
 
33
+ def test_status_command
34
+ # FIXME: add real tests
35
+ assert true
36
+ end
37
+
33
38
  def test_add_project_with_parameters
34
39
  output = run_cerb(" add #{SVN_URL} APPLICATION_NAME=hello_world RECIPIENTS=aa@gmail.com BUILDER=maven2")
35
40
  assert_match /has been added to Cerberus successfully/, output
@@ -113,4 +118,4 @@ class IntegrationTest < Test::Unit::TestCase
113
118
  assert_equal some_number.to_s, IO.read(tmp_file).strip
114
119
  File.rm_f tmp_file
115
120
  end
116
- end
121
+ end
@@ -20,7 +20,7 @@ class Maven2BuilderTest < Test::Unit::TestCase
20
20
  IO.write(reports_dir + 'wicket.markup.html.form.persistence.CookieValuePersisterTest.txt', SUREFIRE2_OUTPUT)
21
21
 
22
22
  builder.output = MVN_OUTPUT
23
- builder.add_error_information
23
+ builder.send( 'add_error_information' )
24
24
  assert builder.output.include?('at wicket.markup.html.basic.SimplePageTest.testRenderHomePage_3(SimplePageTest.java:285)')
25
25
  assert builder.output.include?('This is for wicket.util.resource.ResourceTest :=')
26
26
  end
@@ -79,4 +79,4 @@ junit.framework.AssertionFailedError
79
79
  at wicket.WicketTestCase.executeTest(WicketTestCase.java:78)
80
80
  at wicket.markup.html.basic.SimplePageTest.testRenderHomePage_3(SimplePageTest.java:285)
81
81
 
82
- END
82
+ END
data/test/mock/manager.rb CHANGED
@@ -15,7 +15,7 @@ class DummyStatus
15
15
 
16
16
  def initialize(param)
17
17
  @hash = param
18
- @current_build_sucessful = @hash['state']
18
+ @current_build_successful = @hash['state']
19
19
  @previous_build_successful = @hash['previous_build'] || false
20
20
  @previous_brokeness = @hash['previous_brokeness'] || ''
21
21
  @current_brokeness = @hash['current_brokeness'] || ''
@@ -9,6 +9,8 @@ end
9
9
 
10
10
  class RSpecBuilderTest < Test::Unit::TestCase
11
11
  def test_builder
12
+ `whoami` # clear $? for tests run via rake
13
+
12
14
  tmp = Dir::tmpdir
13
15
  builder = Cerberus::Builder::RSpec.new(:application_root => tmp)
14
16
 
@@ -16,7 +16,7 @@ class RSSPublisherTest < Test::Unit::TestCase
16
16
  xml = REXML::Document.new(IO.read(rss_file.path))
17
17
 
18
18
  assert_equal '[RSS<App] Build still broken (#1235)', xml.elements["rss/channel/item/title/"].get_text.value
19
- 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
+ assert_match %r{<pre>last message\nthis is output\n--\nThis email generated by Cerberus tool ver\. \d.\d(.\d)?, http://cerberus.rubyforge.org/</pre>},
20
20
  xml.elements["rss/channel/item/description/"].get_text.value
21
21
  end
22
22
  end
data/test/test_helper.rb CHANGED
@@ -9,6 +9,9 @@ require 'mock/manager'
9
9
 
10
10
  class Test::Unit::TestCase
11
11
  TEMP_DIR = File.expand_path(File.dirname(__FILE__)) + '/__workdir'
12
+ HOME = TEMP_DIR + '/home'
13
+ ENV['CERBERUS_HOME'] = HOME
14
+ ENV['CERBERUS_ENV'] = 'TEST'
12
15
 
13
16
  SVN_REPO = TEMP_DIR + '/svn_repo'
14
17
  SVN_URL = 'file:///' + SVN_REPO.gsub(/\\/,'/').gsub(/^\//,'').gsub(' ', '%20')
@@ -19,16 +22,14 @@ class Test::Unit::TestCase
19
22
  GIT_REPO = TEMP_DIR + '/git_repo'
20
23
  GIT_URL = 'file:///' + GIT_REPO.gsub(/\\/,'/').gsub(/^\//,'').gsub(' ', '%20')
21
24
 
22
- HOME = TEMP_DIR + '/home'
23
- ENV['CERBERUS_HOME'] = HOME
24
- ENV['CERBERUS_ENV'] = 'TEST'
25
-
26
25
  def self.refresh_repos
26
+ # setup base subversion repos
27
27
  FileUtils.rm_rf TEMP_DIR
28
28
  FileUtils.mkpath SVN_REPO
29
29
  `svnadmin create "#{SVN_REPO}"`
30
30
  `svnadmin load "#{SVN_REPO}" < "#{File.dirname(__FILE__)}/data/subversion.dump"`
31
31
 
32
+ # setup base darcs repos
32
33
  require 'rubygems'
33
34
  require 'zip/zip'
34
35
  FileUtils.mkpath DARCS_REPO
@@ -40,6 +41,7 @@ class Test::Unit::TestCase
40
41
  }
41
42
  }
42
43
 
44
+ # setup base git repos
43
45
  FileUtils.mkpath GIT_REPO
44
46
  Zip::ZipFile::open("#{File.dirname(__FILE__)}/data/git.zip") {|zf|
45
47
  zf.each { |e|
@@ -8,7 +8,6 @@ require 'mock/twitter'
8
8
  class TwitterPublisherTest < Test::Unit::TestCase
9
9
  def test_publisher
10
10
  options = Cerberus::Config.new(nil, :publisher => {:twitter => {:login => 'twittest', :password => 'twitpass'}}, :application_name => 'TestApp')
11
- # options = Cerberus::Config.new(nil, :publisher => {:jabber => {:jid=>'from.cerberus@gmail.com', :recipients => ' jit1@google.com, another@google.com '}}, :application_name => 'MegaApp')
12
11
  build = DummyManager.new('last message', 'this is output', 1232, 'anatol')
13
12
 
14
13
  Cerberus::Publisher::Twitter.publish(build_status(false), build, options)
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cerberus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5.1
4
+ version: "0.5"
5
5
  platform: ruby
6
6
  authors:
7
- - Anatol Pomozov
7
+ - Craig P Jolicoeur
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-25 00:00:00 -04:00
12
+ date: 2009-05-22 00:00:00 -04:00
13
13
  default_executable: cerberus
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -82,8 +82,8 @@ dependencies:
82
82
  - !ruby/object:Gem::Version
83
83
  version: 0.3.0
84
84
  version:
85
- description: Cerberus is a Continuous Integration software for Ruby projects. CI helps you keep your project in a good shape. For now Cerberus only work with projects that use Subversion but in the future it would be provided support for other VCS. Cerberus could be easily invoked from Cron (for Unix) or nnCron (for Windows) utilities.
86
- email: anatol.pomozov@gmail.com
85
+ description: Cerberus is a Continuous Integration software for Ruby projects. CI helps you keep your project in a good shape. Cerberus could be easily invoked from Cron (for Unix) or nnCron (for Windows) utilities.
86
+ email: cpjolicoeur@gmail.com
87
87
  executables:
88
88
  - cerberus
89
89
  extensions: []
@@ -132,6 +132,7 @@ files:
132
132
  - test/data
133
133
  - test/data/darcs.zip
134
134
  - test/data/git.zip
135
+ - test/data/git.zip.bak
135
136
  - test/data/subversion.dump
136
137
  - test/functional_test.rb
137
138
  - test/integration_test.rb
@@ -150,9 +151,9 @@ files:
150
151
  - test/rss_publisher_test.rb
151
152
  - test/test_helper.rb
152
153
  - test/twitter_publisher_test.rb
153
- - LICENSE
154
- - README
155
- - CHANGES
154
+ - License.txt
155
+ - Readme.txt
156
+ - Changelog.txt
156
157
  - Rakefile
157
158
  - doc/site
158
159
  has_rdoc: false