cerberus 0.4.2 → 0.4.3
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.
- data/CHANGES +5 -0
- data/Rakefile +8 -9
- data/lib/cerberus/constants.rb +1 -1
- data/lib/cerberus/manager.rb +12 -2
- data/lib/cerberus/utils.rb +30 -0
- data/test/cron_string_test.rb +94 -0
- metadata +4 -2
data/CHANGES
CHANGED
data/Rakefile
CHANGED
@@ -27,9 +27,11 @@ end
|
|
27
27
|
|
28
28
|
desc "Clean all generated files"
|
29
29
|
task :clean => :clobber_package do
|
30
|
-
|
31
|
-
rm_rf "#{
|
32
|
-
rm_rf "#{
|
30
|
+
root = File.dirname(__FILE__)
|
31
|
+
rm_rf "#{root}/test/__workdir"
|
32
|
+
rm_rf "#{root}/coverage"
|
33
|
+
rm_rf "#{root}/doc/site/out"
|
34
|
+
rm_rf "#{root}/doc/site/webgen.cache"
|
33
35
|
end
|
34
36
|
|
35
37
|
|
@@ -142,22 +144,19 @@ task :publish_news do
|
|
142
144
|
publisher.user_name = RUBYFORGE_USER
|
143
145
|
publisher.password = ENV['RUBYFORGE_PASSWORD']
|
144
146
|
publisher.subject = "[ANN] Cerberus #{PKG_VERSION} Released"
|
145
|
-
publisher.details = IO.read(File.dirname(__FILE__) + '/
|
147
|
+
publisher.details = IO.read(File.dirname(__FILE__) + '/CHANGES')
|
146
148
|
end
|
147
149
|
end
|
148
150
|
|
149
|
-
|
150
|
-
|
151
151
|
require 'webgen/webgentask'
|
152
|
-
|
153
|
-
task :www => :webgen
|
152
|
+
task :generate_site => :webgen
|
154
153
|
|
155
154
|
Webgen::WebgenTask.new do |t|
|
156
155
|
t.directory = File.join( File.dirname( __FILE__ ), 'doc/site')
|
157
156
|
t.clobber_outdir = true
|
158
157
|
end
|
159
158
|
|
160
|
-
task :publish_site => :
|
159
|
+
task :publish_site => :generate_site do
|
161
160
|
sh %{scp -r -q doc/site/out/* #{RUBYFORGE_USER}@rubyforge.org:/var/www/gforge-projects/#{RUBYFORGE_PROJECT}/}
|
162
161
|
end
|
163
162
|
|
data/lib/cerberus/constants.rb
CHANGED
data/lib/cerberus/manager.rb
CHANGED
@@ -81,7 +81,8 @@ module Cerberus
|
|
81
81
|
attr_reader :builder, :success, :scm, :status
|
82
82
|
|
83
83
|
DEFAULT_CONFIG = {:scm => {:type => 'svn'},
|
84
|
-
:log => {:enable => true}
|
84
|
+
:log => {:enable => true},
|
85
|
+
:at_time => '* *',
|
85
86
|
}
|
86
87
|
|
87
88
|
def initialize(application_name, cli_options = {})
|
@@ -161,6 +162,15 @@ module Cerberus
|
|
161
162
|
end
|
162
163
|
end
|
163
164
|
end
|
165
|
+
|
166
|
+
def run_time?(time)
|
167
|
+
minute, hour = @config[:at_time].split
|
168
|
+
say "Run time is configured wrong." if minute.nil? or hour.nil?
|
169
|
+
if hour.cron_match?(time.hour)
|
170
|
+
return minute.cron_match?(time.min)
|
171
|
+
end
|
172
|
+
return false
|
173
|
+
end
|
164
174
|
|
165
175
|
private
|
166
176
|
def get_configuration_option(hash, defining_key = nil, default_option = nil)
|
@@ -184,7 +194,7 @@ module Cerberus
|
|
184
194
|
application_name = $1
|
185
195
|
|
186
196
|
command = Cerberus::BuildCommand.new(application_name, @cli_options)
|
187
|
-
threads << Thread.new { command.run }
|
197
|
+
threads << Thread.new { command.run } if command.run_time?(Time.now)
|
188
198
|
end
|
189
199
|
|
190
200
|
@already_waited = false
|
data/lib/cerberus/utils.rb
CHANGED
@@ -155,3 +155,33 @@ class IO
|
|
155
155
|
File.open(filename, 'w'){|f| f.write str}
|
156
156
|
end
|
157
157
|
end
|
158
|
+
|
159
|
+
class String
|
160
|
+
def cron_match?(number)
|
161
|
+
return false if not number.is_a?(Integer)
|
162
|
+
return true if self == "*"
|
163
|
+
parts = self.split(",")
|
164
|
+
parts.each do |p|
|
165
|
+
match = p.match(/(\d+|\*)-?(\d+)?(\/(\d+))?$/)
|
166
|
+
return false if not match
|
167
|
+
if not match[2]
|
168
|
+
if match[1] == "*" and match[4]
|
169
|
+
return true if number % match[4].to_i == 0
|
170
|
+
end
|
171
|
+
return true if match[1].to_i == number
|
172
|
+
else
|
173
|
+
range = (match[1].to_i)..(match[2].to_i)
|
174
|
+
if not match[3]
|
175
|
+
return true if range.include?(number)
|
176
|
+
else
|
177
|
+
range.each do |r|
|
178
|
+
if (r - range.first) % match[4].to_i == 0
|
179
|
+
return true if r == number
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
return false
|
186
|
+
end
|
187
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
require 'cerberus/utils'
|
4
|
+
|
5
|
+
class CronStringTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def test_simple_number
|
8
|
+
assert "1".cron_match?(1)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_star
|
12
|
+
assert "*".cron_match?(0)
|
13
|
+
assert "*".cron_match?(1000)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_not_match_simple
|
17
|
+
assert_equal false, "1".cron_match?(2)
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_separate_numbers
|
21
|
+
str = "1,3,5"
|
22
|
+
assert str.cron_match?(1)
|
23
|
+
assert str.cron_match?(3)
|
24
|
+
assert str.cron_match?(5)
|
25
|
+
assert(!str.cron_match?(0))
|
26
|
+
assert(!str.cron_match?(2))
|
27
|
+
assert(!str.cron_match?(4))
|
28
|
+
assert(!str.cron_match?(6))
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_range
|
32
|
+
str = "2-4"
|
33
|
+
assert(!str.cron_match?(1))
|
34
|
+
assert str.cron_match?(2)
|
35
|
+
assert str.cron_match?(3)
|
36
|
+
assert str.cron_match?(4)
|
37
|
+
assert(!str.cron_match?(5))
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_comma_and_range
|
41
|
+
str = "3-4,7-8"
|
42
|
+
assert(!str.cron_match?(2))
|
43
|
+
assert str.cron_match?(3)
|
44
|
+
assert str.cron_match?(4)
|
45
|
+
assert(!str.cron_match?(5))
|
46
|
+
assert(!str.cron_match?(6))
|
47
|
+
assert str.cron_match?(7)
|
48
|
+
assert str.cron_match?(8)
|
49
|
+
assert(!str.cron_match?(9))
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_divisor
|
53
|
+
str = "1-6/2"
|
54
|
+
assert(!str.cron_match?(0))
|
55
|
+
assert str.cron_match?(1)
|
56
|
+
assert(!str.cron_match?(2))
|
57
|
+
assert str.cron_match?(3)
|
58
|
+
assert(!str.cron_match?(4))
|
59
|
+
assert str.cron_match?(5)
|
60
|
+
assert(!str.cron_match?(6))
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_garble
|
64
|
+
assert(!"1,x".cron_match?(6))
|
65
|
+
assert(!",".cron_match?(6))
|
66
|
+
assert(!"x".cron_match?(6))
|
67
|
+
assert(!"1-10/x".cron_match?(6))
|
68
|
+
assert(!"~-10/2".cron_match?(6))
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_star_and_divisor
|
72
|
+
str = "*/3"
|
73
|
+
assert str.cron_match?(0)
|
74
|
+
assert(!str.cron_match?(1))
|
75
|
+
assert(!str.cron_match?(2))
|
76
|
+
assert str.cron_match?(3)
|
77
|
+
assert(!str.cron_match?(4))
|
78
|
+
assert(!str.cron_match?(5))
|
79
|
+
assert str.cron_match?(6)
|
80
|
+
assert str.cron_match?(9)
|
81
|
+
assert str.cron_match?(12)
|
82
|
+
assert str.cron_match?(129)
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_star_with_letters
|
86
|
+
assert(!"*".cron_match?('A'))
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_star_in_wrong_place
|
90
|
+
assert(!"*-12".cron_match?('1'))
|
91
|
+
assert(!"*-12/2".cron_match?('2'))
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cerberus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anatol Pomozov
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-02-13 00:00:00 -05:00
|
13
13
|
default_executable: cerberus
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -128,6 +128,7 @@ files:
|
|
128
128
|
- lib/cerberus/utils.rb
|
129
129
|
- test/bjam_builder_test.rb
|
130
130
|
- test/config_test.rb
|
131
|
+
- test/cron_string_test.rb
|
131
132
|
- test/data
|
132
133
|
- test/data/darcs.zip
|
133
134
|
- test/data/git.zip
|
@@ -183,6 +184,7 @@ summary: Cerberus is a Continuous Integration tool that could be easily run from
|
|
183
184
|
test_files:
|
184
185
|
- test/bjam_builder_test.rb
|
185
186
|
- test/config_test.rb
|
187
|
+
- test/cron_string_test.rb
|
186
188
|
- test/functional_test.rb
|
187
189
|
- test/integration_test.rb
|
188
190
|
- test/irc_publisher_test.rb
|