foca-integrity 0.1.9.2 → 0.1.9.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +15 -1
- data/{README.markdown → README.md} +5 -2
- data/Rakefile +7 -29
- data/integrity.gemspec +9 -6
- data/lib/integrity.rb +4 -4
- data/lib/integrity/app.rb +1 -1
- data/lib/integrity/build.rb +2 -41
- data/lib/integrity/commit.rb +7 -10
- data/lib/integrity/helpers/breadcrumbs.rb +1 -1
- data/lib/integrity/helpers/forms.rb +7 -6
- data/lib/integrity/helpers/resources.rb +1 -1
- data/lib/integrity/installer.rb +6 -1
- data/lib/integrity/migrations.rb +13 -2
- data/lib/integrity/notifier.rb +16 -20
- data/lib/integrity/notifier/base.rb +2 -2
- data/lib/integrity/project.rb +6 -59
- data/lib/integrity/project/notifiers.rb +33 -0
- data/lib/integrity/project/push.rb +44 -0
- data/test/acceptance/browse_project_test.rb +4 -0
- data/test/acceptance/build_notifications_test.rb +57 -4
- data/test/acceptance/installer_test.rb +4 -1
- data/test/helpers.rb +28 -39
- data/test/helpers/acceptance.rb +4 -0
- data/test/helpers/acceptance/notifier_helper.rb +47 -0
- data/test/unit/build_test.rb +0 -12
- data/test/unit/commit_test.rb +4 -0
- data/test/unit/migrations_test.rb +3 -2
- data/test/unit/notifier/base_test.rb +43 -0
- data/test/unit/notifier_test.rb +18 -49
- data/test/unit/project_test.rb +95 -21
- data/views/_commit_info.haml +1 -1
- data/views/new.haml +1 -2
- metadata +19 -7
- data/test/acceptance/notifier_test.rb +0 -109
- data/test/helpers/fixtures.rb +0 -87
data/test/unit/build_test.rb
CHANGED
@@ -36,18 +36,6 @@ class BuildTest < Test::Unit::TestCase
|
|
36
36
|
@build.successful = false
|
37
37
|
@build.status.should be(:failed)
|
38
38
|
end
|
39
|
-
|
40
|
-
test "deprecated properties" do
|
41
|
-
silence_warnings {
|
42
|
-
@build.short_commit_identifier.should == @build.commit.short_identifier
|
43
|
-
@build.commit_identifier.should == @build.commit.identifier
|
44
|
-
@build.commit_author.should == @build.commit.author
|
45
|
-
@build.commit_message.should == @build.commit.message
|
46
|
-
@build.commited_at.should == @build.commit.committed_at
|
47
|
-
@build.project_id.should == @build.commit.project_id
|
48
|
-
@build.should respond_to(:commit_metadata)
|
49
|
-
}
|
50
|
-
end
|
51
39
|
end
|
52
40
|
|
53
41
|
describe "Pending builds" do
|
data/test/unit/commit_test.rb
CHANGED
@@ -32,6 +32,8 @@ class CommitTest < Test::Unit::TestCase
|
|
32
32
|
commit.author.name.should == "Nicolás Sanguinetti"
|
33
33
|
commit.author.email.should == "contacto@nicolassanguinetti.info"
|
34
34
|
commit.author.full.should == "Nicolás Sanguinetti <contacto@nicolassanguinetti.info>"
|
35
|
+
|
36
|
+
Commit.gen(:author => nil).author.to_s.should =~ /not loaded/
|
35
37
|
end
|
36
38
|
|
37
39
|
it "raises ArgumentError with invalid author" do
|
@@ -41,6 +43,8 @@ class CommitTest < Test::Unit::TestCase
|
|
41
43
|
it "has a commit message" do
|
42
44
|
commit = Commit.gen(:message => "This commit rocks")
|
43
45
|
commit.message.should == "This commit rocks"
|
46
|
+
|
47
|
+
Commit.gen(:message => nil).message.should =~ /not loaded/
|
44
48
|
end
|
45
49
|
|
46
50
|
it "has a commit date" do
|
@@ -24,13 +24,14 @@ class MigrationsTest < Test::Unit::TestCase
|
|
24
24
|
|
25
25
|
before(:each) do
|
26
26
|
[Project, Build, Commit, Notifier].each(&:auto_migrate_down!)
|
27
|
+
database_adapter.execute("DROP TABLE migration_info")
|
27
28
|
assert !table_exists?("migration_info") # just to be sure
|
28
29
|
end
|
29
30
|
|
30
31
|
test "upgrading a pre migration database" do
|
31
32
|
capture_stdout { Integrity.migrate_db }
|
32
33
|
|
33
|
-
current_migrations.should == ["initial", "add_commits"]
|
34
|
+
current_migrations.should == ["initial", "add_commits", "add_enabled_column"]
|
34
35
|
assert table_exists?("integrity_projects")
|
35
36
|
assert table_exists?("integrity_builds")
|
36
37
|
assert table_exists?("integrity_notifiers")
|
@@ -41,7 +42,7 @@ class MigrationsTest < Test::Unit::TestCase
|
|
41
42
|
load_initial_migration_fixture
|
42
43
|
|
43
44
|
capture_stdout { Integrity.migrate_db }
|
44
|
-
current_migrations.should == ["initial", "add_commits"]
|
45
|
+
current_migrations.should == ["initial", "add_commits", "add_enabled_column"]
|
45
46
|
|
46
47
|
sinatra = Project.first(:name => "Sinatra")
|
47
48
|
sinatra.should have(1).commits
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../../helpers"
|
2
|
+
|
3
|
+
class BaseNotifierTest < Test::Unit::TestCase
|
4
|
+
before(:each) do
|
5
|
+
@commit = Commit.gen(:successful)
|
6
|
+
@base = Notifier::Base.new(@commit, {})
|
7
|
+
end
|
8
|
+
|
9
|
+
it "requires to implement .to_haml" do
|
10
|
+
assert_raise(NotImplementedError) { Notifier::Base.to_haml }
|
11
|
+
end
|
12
|
+
|
13
|
+
it "requires to implement #deliver!" do
|
14
|
+
assert_raise(NotImplementedError) { @base.deliver! }
|
15
|
+
end
|
16
|
+
|
17
|
+
it "provides a short message" do
|
18
|
+
assert_equal "Built #{@commit.short_identifier} successfully", @base.short_message
|
19
|
+
end
|
20
|
+
|
21
|
+
it "provides a full message" do
|
22
|
+
assert @base.full_message.include?("Commit Message: #{@commit.message}")
|
23
|
+
assert @base.full_message.include?("Commit Date: #{@commit.committed_at}")
|
24
|
+
assert @base.full_message.include?("Commit Author: #{@commit.author.name}")
|
25
|
+
assert @base.full_message.include?("Link: #{@base.commit_url}")
|
26
|
+
assert @base.full_message.include?("Build Output")
|
27
|
+
assert @base.full_message.include?(@commit.build.output)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "provides a commit url" do
|
31
|
+
assert_equal "http://localhost:8910/#{@commit.project.name}" +
|
32
|
+
"/commits/#{@commit.identifier}", @base.commit_url
|
33
|
+
end
|
34
|
+
|
35
|
+
test "deprecated methods" do
|
36
|
+
silence_warnings {
|
37
|
+
assert_equal @base.commit, @base.build
|
38
|
+
assert_equal @base.commit_url, @base.build_url
|
39
|
+
assert_equal @base.send(:stripped_commit_output),
|
40
|
+
@base.send(:stripped_build_output)
|
41
|
+
}
|
42
|
+
end
|
43
|
+
end
|
data/test/unit/notifier_test.rb
CHANGED
@@ -1,11 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + "/../helpers"
|
2
2
|
|
3
3
|
class NotifierTest < Test::Unit::TestCase
|
4
|
-
test "deprecated methods" do
|
5
|
-
Notifier::Base.new(Build.gen, {}).should respond_to(:build)
|
6
|
-
Notifier::Base.new(Build.gen, {}).should respond_to(:build_url)
|
7
|
-
end
|
8
|
-
|
9
4
|
specify "IRC fixture is valid and can be saved" do
|
10
5
|
lambda do
|
11
6
|
Notifier.generate(:irc).tap do |project|
|
@@ -71,58 +66,32 @@ class NotifierTest < Test::Unit::TestCase
|
|
71
66
|
end
|
72
67
|
end
|
73
68
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
Notifier.should have(2).available
|
78
|
-
Notifier.available.should include(Integrity::Notifier::IRC)
|
79
|
-
Notifier.available.should include(Integrity::Notifier::Twitter)
|
80
|
-
end
|
69
|
+
describe "Registering a notifier" do
|
70
|
+
it "registers given notifier class" do
|
71
|
+
load "helpers/acceptance/textfile_notifier.rb"
|
81
72
|
|
82
|
-
|
83
|
-
irc = Notifier.generate(:irc)
|
84
|
-
build = Integrity::Build.generate
|
85
|
-
Notifier::IRC.expects(:notify_of_build).with(build, irc.config)
|
86
|
-
irc.notify_of_build(build)
|
87
|
-
end
|
73
|
+
Notifier.register(Integrity::Notifier::Textfile)
|
88
74
|
|
89
|
-
|
90
|
-
|
91
|
-
project = Project.generate
|
92
|
-
lambda do
|
93
|
-
project.enable_notifiers(["IRC", "Twitter"],
|
94
|
-
{"IRC" => {"uri" => "irc://irc.freenode.net/integrity"},
|
95
|
-
"Twitter" => {"username" => "john"}})
|
96
|
-
end.should change(project.notifiers, :count).from(0).to(2)
|
75
|
+
assert_equal Integrity::Notifier::Textfile,
|
76
|
+
Notifier.available["Textfile"]
|
97
77
|
end
|
98
78
|
|
99
|
-
it "
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
project.reload
|
104
|
-
end.should change(project.notifiers, :count).from(2).to(1)
|
105
|
-
end
|
79
|
+
it "raises ArgumentError if given class is not a valid notifier" do
|
80
|
+
assert_raise(ArgumentError) {
|
81
|
+
Notifier.register(Class.new)
|
82
|
+
}
|
106
83
|
|
107
|
-
|
108
|
-
lambda { Project.gen.enable_notifiers(nil, {}) }.should_not change(Notifier, :count)
|
84
|
+
assert Notifier.available.empty?
|
109
85
|
end
|
86
|
+
end
|
110
87
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
project.enable_notifiers("IRC", {"IRC" => irc.config})
|
88
|
+
it "knows how to notify the world of a build" do
|
89
|
+
irc = Notifier.gen(:irc)
|
90
|
+
Notifier.register(Integrity::Notifier::IRC)
|
91
|
+
build = Build.gen
|
116
92
|
|
117
|
-
|
118
|
-
Project.gen.enable_notifiers("IRC", {"IRC" => irc.config})
|
119
|
-
end.should_not change(project.notifiers, :count)
|
120
|
-
end
|
121
|
-
end
|
93
|
+
mock(Notifier::IRC).notify_of_build(build, irc.config) { nil }
|
122
94
|
|
123
|
-
|
124
|
-
class Blah < Notifier::Base; end
|
125
|
-
lambda { Blah.to_haml }.should raise_error(NoMethodError)
|
126
|
-
lambda { Blah.new(Build.gen, {}).deliver! }.should raise_error(NoMethodError)
|
95
|
+
irc.notify_of_build(build)
|
127
96
|
end
|
128
97
|
end
|
data/test/unit/project_test.rb
CHANGED
@@ -110,13 +110,6 @@ class ProjectTest < Test::Unit::TestCase
|
|
110
110
|
project = Project.gen(:commits => commits)
|
111
111
|
project.last_commit.should == commits.sort_by {|c| c.committed_at }.last
|
112
112
|
end
|
113
|
-
|
114
|
-
test "deprecated properties" do
|
115
|
-
silence_warnings {
|
116
|
-
@project.last_build.should == @project.last_commit
|
117
|
-
@project.previous_builds.should == @project.previous_commits
|
118
|
-
}
|
119
|
-
end
|
120
113
|
end
|
121
114
|
|
122
115
|
describe "Validation" do
|
@@ -220,31 +213,113 @@ class ProjectTest < Test::Unit::TestCase
|
|
220
213
|
end
|
221
214
|
end
|
222
215
|
|
216
|
+
describe "When updating its notifiers" do
|
217
|
+
setup do
|
218
|
+
twitter = Notifier.gen(:twitter, :enabled => true)
|
219
|
+
irc = Notifier.gen(:irc, :enabled => false)
|
220
|
+
|
221
|
+
@project = Project.gen(:notifiers => [twitter, irc])
|
222
|
+
end
|
223
|
+
|
224
|
+
it "creates and enable the given notifiers" do
|
225
|
+
Notifier.all.destroy!
|
226
|
+
|
227
|
+
project = Project.gen
|
228
|
+
project.update_notifiers(["IRC", "Twitter"],
|
229
|
+
{"IRC" => {"uri" => "irc://irc.freenode.net/integrity"},
|
230
|
+
"Twitter" => {"username" => "john"}})
|
231
|
+
|
232
|
+
assert_equal 2, Notifier.count
|
233
|
+
assert_equal 2, project.enabled_notifiers.count
|
234
|
+
assert_equal "IRC", project.notifiers.first.name
|
235
|
+
assert_equal "Twitter", project.notifiers.last.name
|
236
|
+
|
237
|
+
project.update_notifiers(["Twitter"],
|
238
|
+
{"IRC" => {"uri" => "irc://irc.freenode.net/integrity"},
|
239
|
+
"Twitter" => {"username" => "john"}})
|
240
|
+
|
241
|
+
assert_equal 2, Notifier.count
|
242
|
+
assert ! project.notifies?("IRC")
|
243
|
+
assert project.notifies?("Twitter")
|
244
|
+
end
|
245
|
+
|
246
|
+
it "creates notifiers present in config even when they're disabled" do
|
247
|
+
@project.update_notifiers(["IRC"],
|
248
|
+
{"IRC" => {"uri" => "irc://irc.freenode.net/integrity"},
|
249
|
+
"Twitter" => {"username" => "john"}})
|
250
|
+
|
251
|
+
assert_equal 2, @project.notifiers.count
|
252
|
+
end
|
253
|
+
|
254
|
+
it "disables notifiers that are not included in the list" do
|
255
|
+
@project.update_notifiers(["IRC"],
|
256
|
+
{"IRC" => {"uri" => "irc://irc.freenode.net/integrity"},
|
257
|
+
"Twitter" => {"username" => "john"}})
|
258
|
+
|
259
|
+
@project.update_notifiers(["IRC"],
|
260
|
+
{"IRC" => {"uri" => "irc://irc.freenode.net/integrity"}})
|
261
|
+
|
262
|
+
assert ! @project.notifiers.first(:name => "Twitter").enabled?
|
263
|
+
assert @project.notifiers.first(:name => "IRC").enabled?
|
264
|
+
end
|
265
|
+
|
266
|
+
it "preserves config of notifiers that are being disabled" do
|
267
|
+
@project.update_notifiers(["IRC"],
|
268
|
+
{"IRC" => {"uri" => "irc://irc.freenode.net/integrity"},
|
269
|
+
"Twitter" => {"username" => "john"}})
|
270
|
+
|
271
|
+
assert_equal "john",
|
272
|
+
@project.notifiers.first(:name => "Twitter").config["username"]
|
273
|
+
end
|
274
|
+
|
275
|
+
it "does nothing if given nil as the list of notifiers to enable" do
|
276
|
+
lambda { Project.gen.update_notifiers(nil, {}) }.should_not change(Notifier, :count)
|
277
|
+
end
|
278
|
+
|
279
|
+
it "doesn't destroy any of the other notifiers that exist for other projects" do
|
280
|
+
irc = Notifier.generate(:irc)
|
281
|
+
|
282
|
+
project = Project.gen
|
283
|
+
project.update_notifiers("IRC", {"IRC" => irc.config})
|
284
|
+
|
285
|
+
lambda {
|
286
|
+
Project.gen.update_notifiers("IRC", {"IRC" => irc.config})
|
287
|
+
}.should_not change(project.notifiers, :count)
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
223
291
|
describe "When retrieving state about its notifier" do
|
224
292
|
before(:each) do
|
225
|
-
@project = Project.
|
293
|
+
@project = Project.gen
|
226
294
|
@irc = Notifier.generate(:irc)
|
227
295
|
end
|
228
296
|
|
297
|
+
it "knows which notifiers are enabled" do
|
298
|
+
notifiers = [Notifier.gen(:irc, :enabled => false),
|
299
|
+
Notifier.gen(:twitter, :enabled => true)]
|
300
|
+
project = Project.gen(:notifiers => notifiers)
|
301
|
+
|
302
|
+
assert_equal 1, project.enabled_notifiers.size
|
303
|
+
end
|
304
|
+
|
229
305
|
specify "#config_for returns given notifier's configuration" do
|
230
306
|
@project.update_attributes(:notifiers => [@irc])
|
231
307
|
@project.config_for("IRC").should == {:uri => "irc://irc.freenode.net/integrity"}
|
232
308
|
end
|
233
309
|
|
234
|
-
specify "#config_for returns an empty hash
|
310
|
+
specify "#config_for returns an empty hash for unknown notifier" do
|
235
311
|
@project.config_for("IRC").should == {}
|
236
312
|
end
|
237
313
|
|
238
|
-
specify "#notifies? is true if
|
239
|
-
@project.
|
240
|
-
@project.notifies?("IRC").should == true
|
241
|
-
end
|
314
|
+
specify "#notifies? is true if the notifier exists and is enabled" do
|
315
|
+
assert ! @project.notifies?("UndefinedNotifier")
|
242
316
|
|
243
|
-
|
244
|
-
|
317
|
+
@project.update_attributes(:notifiers =>
|
318
|
+
[ Notifier.gen(:irc, :enabled => true),
|
319
|
+
Notifier.gen(:twitter, :enabled => false) ])
|
245
320
|
|
246
|
-
@project.notifies?("IRC")
|
247
|
-
@project.notifies?("
|
321
|
+
assert @project.notifies?("IRC")
|
322
|
+
assert ! @project.notifies?("Twitter")
|
248
323
|
end
|
249
324
|
end
|
250
325
|
|
@@ -277,13 +352,12 @@ class ProjectTest < Test::Unit::TestCase
|
|
277
352
|
}.should change(Commit, :count).by(1)
|
278
353
|
|
279
354
|
build = Build.all.last
|
280
|
-
build.commit.should
|
355
|
+
build.commit.should == @project.last_commit
|
281
356
|
|
282
357
|
@project.last_commit.should be_pending
|
283
|
-
@project.last_commit.identifier.should
|
284
|
-
|
358
|
+
@project.last_commit.identifier.should == "FOOBAR"
|
285
359
|
@project.last_commit.author.name.should == "<Commit author not loaded>"
|
286
|
-
@project.last_commit.message.should
|
360
|
+
@project.last_commit.message.should == "<Commit message not loaded>"
|
287
361
|
end
|
288
362
|
end
|
289
363
|
end
|
data/views/_commit_info.haml
CHANGED
data/views/new.haml
CHANGED
@@ -29,8 +29,7 @@
|
|
29
29
|
%input.hidden{ :name => "project_data[public]", :value => "0", :type => "hidden" }
|
30
30
|
%input.checkbox#project_public{ checkbox("project_data[public]", @project.public?) }
|
31
31
|
|
32
|
-
-
|
33
|
-
= notifier_form(notifier)
|
32
|
+
- notifier_form
|
34
33
|
|
35
34
|
%p.submit
|
36
35
|
%button.positive{ :type => "submit" }= @project.new_record? ? "Create Project" : "Update Project"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foca-integrity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.9.
|
4
|
+
version: 0.1.9.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "Nicol\xC3\xA1s Sanguinetti"
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-04-06 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -49,9 +49,9 @@ dependencies:
|
|
49
49
|
version_requirement:
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.9.
|
54
|
+
version: 0.9.11
|
55
55
|
version:
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: uuidtools
|
@@ -163,6 +163,16 @@ dependencies:
|
|
163
163
|
- !ruby/object:Gem::Version
|
164
164
|
version: "0"
|
165
165
|
version:
|
166
|
+
- !ruby/object:Gem::Dependency
|
167
|
+
name: jeremymcanally-matchy
|
168
|
+
type: :development
|
169
|
+
version_requirement:
|
170
|
+
version_requirements: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: "0"
|
175
|
+
version:
|
166
176
|
- !ruby/object:Gem::Dependency
|
167
177
|
name: jeremymcanally-pending
|
168
178
|
type: :development
|
@@ -194,7 +204,7 @@ extra_rdoc_files: []
|
|
194
204
|
files:
|
195
205
|
- .gitignore
|
196
206
|
- CHANGES
|
197
|
-
- README.
|
207
|
+
- README.md
|
198
208
|
- Rakefile
|
199
209
|
- bin/integrity
|
200
210
|
- config/config.sample.ru
|
@@ -227,6 +237,8 @@ files:
|
|
227
237
|
- lib/integrity/notifier/test/fixtures.rb
|
228
238
|
- lib/integrity/notifier/test/hpricot_matcher.rb
|
229
239
|
- lib/integrity/project.rb
|
240
|
+
- lib/integrity/project/notifiers.rb
|
241
|
+
- lib/integrity/project/push.rb
|
230
242
|
- lib/integrity/project_builder.rb
|
231
243
|
- lib/integrity/scm.rb
|
232
244
|
- lib/integrity/scm/git.rb
|
@@ -245,7 +257,6 @@ files:
|
|
245
257
|
- test/acceptance/installer_test.rb
|
246
258
|
- test/acceptance/manual_build_project_test.rb
|
247
259
|
- test/acceptance/not_found_page_test.rb
|
248
|
-
- test/acceptance/notifier_test.rb
|
249
260
|
- test/acceptance/project_syndication_test.rb
|
250
261
|
- test/acceptance/stylesheet_test.rb
|
251
262
|
- test/acceptance/unauthorized_page_test.rb
|
@@ -253,19 +264,20 @@ files:
|
|
253
264
|
- test/helpers/acceptance.rb
|
254
265
|
- test/helpers/acceptance/email_notifier.rb
|
255
266
|
- test/helpers/acceptance/git_helper.rb
|
267
|
+
- test/helpers/acceptance/notifier_helper.rb
|
256
268
|
- test/helpers/acceptance/textfile_notifier.rb
|
257
269
|
- test/helpers/expectations.rb
|
258
270
|
- test/helpers/expectations/be_a.rb
|
259
271
|
- test/helpers/expectations/change.rb
|
260
272
|
- test/helpers/expectations/have.rb
|
261
273
|
- test/helpers/expectations/predicates.rb
|
262
|
-
- test/helpers/fixtures.rb
|
263
274
|
- test/helpers/initial_migration_fixture.sql
|
264
275
|
- test/unit/build_test.rb
|
265
276
|
- test/unit/commit_test.rb
|
266
277
|
- test/unit/helpers_test.rb
|
267
278
|
- test/unit/integrity_test.rb
|
268
279
|
- test/unit/migrations_test.rb
|
280
|
+
- test/unit/notifier/base_test.rb
|
269
281
|
- test/unit/notifier/test_test.rb
|
270
282
|
- test/unit/notifier_test.rb
|
271
283
|
- test/unit/project_builder_test.rb
|