ZenTest 3.11.1 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.autotest +17 -0
- data/History.txt +33 -0
- data/Manifest.txt +4 -19
- data/Rakefile +5 -0
- data/bin/multigem +4 -0
- data/bin/multiruby_setup +31 -28
- data/lib/autotest.rb +21 -17
- data/lib/autotest/emacs.rb +1 -0
- data/lib/autotest/growl.rb +1 -1
- data/lib/focus.rb +9 -0
- data/lib/multiruby.rb +62 -44
- data/lib/zentest.rb +5 -9
- data/test/test_autotest.rb +16 -5
- data/test/test_focus.rb +35 -0
- data/test/test_unit_diff.rb +4 -2
- data/test/test_zentest.rb +6 -12
- data/test/test_zentest_mapping.rb +4 -3
- metadata +9 -29
- data/bin/rails_test_audit +0 -80
- data/lib/autotest/screen.rb +0 -73
- data/lib/test/rails.rb +0 -295
- data/lib/test/rails/controller_test_case.rb +0 -382
- data/lib/test/rails/functional_test_case.rb +0 -79
- data/lib/test/rails/helper_test_case.rb +0 -64
- data/lib/test/rails/ivar_proxy.rb +0 -31
- data/lib/test/rails/pp_html_document.rb +0 -74
- data/lib/test/rails/rake_tasks.rb +0 -50
- data/lib/test/rails/render_tree.rb +0 -93
- data/lib/test/rails/test_case.rb +0 -28
- data/lib/test/rails/view_test_case.rb +0 -597
- data/lib/test/zentest_assertions.rb +0 -134
- data/test/test_help.rb +0 -36
- data/test/test_rails_autotest.rb +0 -229
- data/test/test_rails_controller_test_case.rb +0 -58
- data/test/test_rails_helper_test_case.rb +0 -48
- data/test/test_rails_view_test_case.rb +0 -275
- data/test/test_zentest_assertions.rb +0 -128
data/lib/zentest.rb
CHANGED
@@ -20,14 +20,10 @@ end
|
|
20
20
|
$ZENTEST = true
|
21
21
|
$TESTING = true
|
22
22
|
|
23
|
-
require 'test/unit/testcase' # helps required modules
|
24
|
-
|
25
23
|
class Module
|
26
|
-
|
27
24
|
def zentest
|
28
25
|
at_exit { ZenTest.autotest(self) }
|
29
26
|
end
|
30
|
-
|
31
27
|
end
|
32
28
|
|
33
29
|
##
|
@@ -56,7 +52,7 @@ end
|
|
56
52
|
|
57
53
|
class ZenTest
|
58
54
|
|
59
|
-
VERSION = '
|
55
|
+
VERSION = '4.0.0'
|
60
56
|
|
61
57
|
include ZenTestMapping
|
62
58
|
|
@@ -120,7 +116,7 @@ class ZenTest
|
|
120
116
|
end
|
121
117
|
|
122
118
|
# Get the public instance, class and singleton methods for
|
123
|
-
# class klass. If full is true, include the methods from
|
119
|
+
# class klass. If full is true, include the methods from
|
124
120
|
# Kernel and other modules that get included. The methods
|
125
121
|
# suite, new, pretty_print, pretty_print_cycle will not
|
126
122
|
# be included in the resuting array.
|
@@ -207,7 +203,7 @@ class ZenTest
|
|
207
203
|
return name
|
208
204
|
end
|
209
205
|
|
210
|
-
# Does all the work of finding a class by name,
|
206
|
+
# Does all the work of finding a class by name,
|
211
207
|
# obtaining its methods and those of its superclass.
|
212
208
|
# The full parameter determines if all the methods
|
213
209
|
# including those of Object and mixed in modules
|
@@ -422,7 +418,7 @@ class ZenTest
|
|
422
418
|
end # @klasses[klassname]
|
423
419
|
end
|
424
420
|
|
425
|
-
def test_to_normal(
|
421
|
+
def test_to_normal(_name, klassname=nil)
|
426
422
|
super do |name|
|
427
423
|
if defined? @inherited_methods then
|
428
424
|
known_methods = (@inherited_methods[klassname] || {}).keys.sort.reverse
|
@@ -449,7 +445,7 @@ class ZenTest
|
|
449
445
|
meth.push indentunit*indent + "end"
|
450
446
|
return meth
|
451
447
|
end
|
452
|
-
|
448
|
+
|
453
449
|
# Walk each known class and test that each method has
|
454
450
|
# a test method
|
455
451
|
# Then do it in the other direction...
|
data/test/test_autotest.rb
CHANGED
@@ -2,8 +2,9 @@
|
|
2
2
|
|
3
3
|
$TESTING = true
|
4
4
|
|
5
|
-
require '
|
6
|
-
require '
|
5
|
+
require 'rubygems'
|
6
|
+
require 'minitest/autorun'
|
7
|
+
|
7
8
|
require 'stringio'
|
8
9
|
require 'autotest'
|
9
10
|
|
@@ -25,7 +26,7 @@ class Autotest
|
|
25
26
|
end
|
26
27
|
end
|
27
28
|
|
28
|
-
class TestAutotest <
|
29
|
+
class TestAutotest < MiniTest::Unit::TestCase
|
29
30
|
|
30
31
|
def deny test, msg=nil
|
31
32
|
if msg then
|
@@ -296,7 +297,7 @@ test_error2(#{@test_class}):
|
|
296
297
|
assert_equal empty, @a.files_to_test
|
297
298
|
|
298
299
|
s3 = '
|
299
|
-
/opt/bin/ruby -I.:lib:test -
|
300
|
+
/opt/bin/ruby -I.:lib:test -rubygems -e "%w[test/unit #{@test}].each { |f| require f }" | unit_diff -u
|
300
301
|
-e:1:in `require\': ./#{@test}:23: parse error, unexpected tIDENTIFIER, expecting \'}\' (SyntaxError)
|
301
302
|
settings_fields.each {|e| assert_equal e, version.send e.intern}
|
302
303
|
^ from -e:1
|
@@ -357,7 +358,7 @@ test_error2(#{@test_class}):
|
|
357
358
|
'test/test_fooby.rb' => [ 'test_something1', 'test_something2' ]
|
358
359
|
}
|
359
360
|
|
360
|
-
expected = [ "#{RUBY} -I.:lib:test -
|
361
|
+
expected = [ "#{RUBY} -I.:lib:test -rubygems -e \"%w[test/unit #{@test}].each { |f| require f }\" | unit_diff -u",
|
361
362
|
"#{RUBY} -I.:lib:test test/test_fooby.rb -n \"/^(test_something1|test_something2)$/\" | unit_diff -u" ].join("; ")
|
362
363
|
|
363
364
|
result = @a.make_test_cmd f
|
@@ -402,6 +403,16 @@ test_error2(#{@test_class}):
|
|
402
403
|
assert_equal [], @a.test_files_for('test_unknown.rb')
|
403
404
|
end
|
404
405
|
|
406
|
+
def test_testlib
|
407
|
+
assert_equal "test/unit", @a.testlib
|
408
|
+
|
409
|
+
@a.testlib = "MONKEY"
|
410
|
+
assert_equal "MONKEY", @a.testlib
|
411
|
+
|
412
|
+
f = { @test => [], "test/test_fooby.rb" => %w(first second) }
|
413
|
+
assert_match @a.testlib, @a.make_test_cmd(f)
|
414
|
+
end
|
415
|
+
|
405
416
|
def util_exceptions
|
406
417
|
@a.exception_list.sort_by { |r| r.to_s }
|
407
418
|
end
|
data/test/test_focus.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'focus'
|
4
|
+
|
5
|
+
class TestFocus < MiniTest::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
@x = 1
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
assert_equal 2, @x
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_focus
|
15
|
+
@x += 1
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_ignore1
|
19
|
+
flunk "ignore me!"
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_ignore2
|
23
|
+
flunk "ignore me!"
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_ignore3
|
27
|
+
flunk "ignore me!"
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_focus2
|
31
|
+
@x += 1
|
32
|
+
end
|
33
|
+
|
34
|
+
focus :test_focus, :test_focus2
|
35
|
+
end
|
data/test/test_unit_diff.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
#!/usr/local/bin/ruby -w
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'rubygems'
|
4
|
+
require 'minitest/autorun'
|
5
|
+
|
4
6
|
require 'stringio'
|
5
7
|
|
6
8
|
$TESTING = true
|
7
9
|
|
8
10
|
require 'unit_diff'
|
9
11
|
|
10
|
-
class TestUnitDiff <
|
12
|
+
class TestUnitDiff < MiniTest::Unit::TestCase
|
11
13
|
|
12
14
|
def setup
|
13
15
|
@diff = UnitDiff.new
|
data/test/test_zentest.rb
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
#!/usr/local/bin/ruby -w
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
return
|
6
|
-
end
|
7
|
-
|
8
|
-
require 'test/unit' unless defined? $ZENTEST and $ZENTEST
|
3
|
+
abort "rubinius does not support features required by zentest" if
|
4
|
+
defined?(RUBY_ENGINE) && RUBY_ENGINE =~ /rbx/
|
9
5
|
|
10
6
|
$TESTING = true
|
11
7
|
|
8
|
+
require 'rubygems'
|
9
|
+
require 'minitest/autorun'
|
10
|
+
|
12
11
|
# I do this so I can still run ZenTest against the tests and itself...
|
13
12
|
require 'zentest' unless defined? $ZENTEST
|
14
13
|
|
@@ -140,12 +139,7 @@ end
|
|
140
139
|
|
141
140
|
class TestTrueClass; end
|
142
141
|
|
143
|
-
class TestZenTest <
|
144
|
-
unless defined? Mini then
|
145
|
-
alias :refute_nil :assert_not_nil
|
146
|
-
end
|
147
|
-
|
148
|
-
|
142
|
+
class TestZenTest < MiniTest::Unit::TestCase
|
149
143
|
def setup
|
150
144
|
@tester = ZenTest.new()
|
151
145
|
end
|
@@ -1,7 +1,8 @@
|
|
1
|
-
require 'test/unit' unless defined? $ZENTEST and $ZENTEST
|
2
|
-
|
3
1
|
$TESTING = true
|
4
2
|
|
3
|
+
require 'rubygems'
|
4
|
+
require 'minitest/autorun'
|
5
|
+
|
5
6
|
require 'zentest_mapping' unless defined? $ZENTEST
|
6
7
|
|
7
8
|
class Dummy
|
@@ -9,7 +10,7 @@ class Dummy
|
|
9
10
|
include ZenTestMapping
|
10
11
|
end
|
11
12
|
|
12
|
-
class TestZentestMapping <
|
13
|
+
class TestZentestMapping < MiniTest::Unit::TestCase
|
13
14
|
def setup
|
14
15
|
@tester = Dummy.new
|
15
16
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ZenTest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Davis
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-03-02 00:00:00 -08:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
requirements:
|
22
22
|
- - ">="
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: 1.
|
24
|
+
version: 1.9.0
|
25
25
|
version:
|
26
26
|
description: "ZenTest provides 4 different tools and 1 library: zentest, unit_diff, autotest, multiruby, and Test::Rails. ZenTest scans your target and unit-test code and writes your missing code based on simple naming rules, enabling XP at a much quicker pace. ZenTest only works with Ruby and Test::Unit. unit_diff is a command-line filter to diff expected results from actual results and allow you to quickly see exactly what is wrong. autotest is a continous testing facility meant to be used during development. As soon as you save a file, autotest will run the corresponding dependent tests. multiruby runs anything you want on multiple versions of ruby. Great for compatibility checking! Use multiruby_setup to manage your installed versions. Test::Rails helps you build industrial-strength Rails code."
|
27
27
|
email:
|
@@ -29,9 +29,9 @@ email:
|
|
29
29
|
- drbrain@segment7.net
|
30
30
|
executables:
|
31
31
|
- autotest
|
32
|
+
- multigem
|
32
33
|
- multiruby
|
33
34
|
- multiruby_setup
|
34
|
-
- rails_test_audit
|
35
35
|
- unit_diff
|
36
36
|
- zentest
|
37
37
|
extensions: []
|
@@ -43,6 +43,7 @@ extra_rdoc_files:
|
|
43
43
|
- articles/how_to_use_zentest.txt
|
44
44
|
- example.txt
|
45
45
|
files:
|
46
|
+
- .autotest
|
46
47
|
- History.txt
|
47
48
|
- Manifest.txt
|
48
49
|
- README.txt
|
@@ -51,9 +52,9 @@ files:
|
|
51
52
|
- articles/getting_started_with_autotest.html
|
52
53
|
- articles/how_to_use_zentest.txt
|
53
54
|
- bin/autotest
|
55
|
+
- bin/multigem
|
54
56
|
- bin/multiruby
|
55
57
|
- bin/multiruby_setup
|
56
|
-
- bin/rails_test_audit
|
57
58
|
- bin/unit_diff
|
58
59
|
- bin/zentest
|
59
60
|
- example.txt
|
@@ -82,35 +83,19 @@ files:
|
|
82
83
|
- lib/autotest/rcov.rb
|
83
84
|
- lib/autotest/redgreen.rb
|
84
85
|
- lib/autotest/restart.rb
|
85
|
-
- lib/autotest/screen.rb
|
86
86
|
- lib/autotest/shame.rb
|
87
87
|
- lib/autotest/snarl.rb
|
88
88
|
- lib/autotest/timestamp.rb
|
89
|
+
- lib/focus.rb
|
89
90
|
- lib/functional_test_matrix.rb
|
90
91
|
- lib/multiruby.rb
|
91
|
-
- lib/test/rails.rb
|
92
|
-
- lib/test/rails/controller_test_case.rb
|
93
|
-
- lib/test/rails/functional_test_case.rb
|
94
|
-
- lib/test/rails/helper_test_case.rb
|
95
|
-
- lib/test/rails/ivar_proxy.rb
|
96
|
-
- lib/test/rails/pp_html_document.rb
|
97
|
-
- lib/test/rails/rake_tasks.rb
|
98
|
-
- lib/test/rails/render_tree.rb
|
99
|
-
- lib/test/rails/test_case.rb
|
100
|
-
- lib/test/rails/view_test_case.rb
|
101
|
-
- lib/test/zentest_assertions.rb
|
102
92
|
- lib/unit_diff.rb
|
103
93
|
- lib/zentest.rb
|
104
94
|
- lib/zentest_mapping.rb
|
105
95
|
- test/test_autotest.rb
|
106
|
-
- test/
|
107
|
-
- test/test_rails_autotest.rb
|
108
|
-
- test/test_rails_controller_test_case.rb
|
109
|
-
- test/test_rails_helper_test_case.rb
|
110
|
-
- test/test_rails_view_test_case.rb
|
96
|
+
- test/test_focus.rb
|
111
97
|
- test/test_unit_diff.rb
|
112
98
|
- test/test_zentest.rb
|
113
|
-
- test/test_zentest_assertions.rb
|
114
99
|
- test/test_zentest_mapping.rb
|
115
100
|
has_rdoc: true
|
116
101
|
homepage: http://www.zenspider.com/ZSS/Products/ZenTest/
|
@@ -141,12 +126,7 @@ specification_version: 2
|
|
141
126
|
summary: "ZenTest provides 4 different tools and 1 library: zentest, unit_diff, autotest, multiruby, and Test::Rails"
|
142
127
|
test_files:
|
143
128
|
- test/test_autotest.rb
|
144
|
-
- test/
|
145
|
-
- test/test_rails_autotest.rb
|
146
|
-
- test/test_rails_controller_test_case.rb
|
147
|
-
- test/test_rails_helper_test_case.rb
|
148
|
-
- test/test_rails_view_test_case.rb
|
129
|
+
- test/test_focus.rb
|
149
130
|
- test/test_unit_diff.rb
|
150
131
|
- test/test_zentest.rb
|
151
|
-
- test/test_zentest_assertions.rb
|
152
132
|
- test/test_zentest_mapping.rb
|
data/bin/rails_test_audit
DELETED
@@ -1,80 +0,0 @@
|
|
1
|
-
#!/usr/local/bin/ruby -w
|
2
|
-
|
3
|
-
# TODO: Probably has dup code with ZenTest.
|
4
|
-
# TODO: Map controller assert_assigns to view test ivar assignments.
|
5
|
-
# TODO: Make this a rake task, rake test:audit.
|
6
|
-
|
7
|
-
# test_cases[test_case][test][ivar] = value
|
8
|
-
def build_test_cases(type)
|
9
|
-
test_cases = Hash.new { |h,k|
|
10
|
-
h[k] = Hash.new { |h,k|
|
11
|
-
h[k] = Hash.new { |h,k|
|
12
|
-
h[k] = {} } } }
|
13
|
-
|
14
|
-
test_case = nil
|
15
|
-
test = nil
|
16
|
-
|
17
|
-
fixtures = Hash.new { |h,k| h[k] = [] }
|
18
|
-
|
19
|
-
Dir["test/#{type}/*rb"].each do |test|
|
20
|
-
File.open test do |fp|
|
21
|
-
fp.each_line do |line|
|
22
|
-
case line
|
23
|
-
when /^class (.*)(View|Controller)Test </
|
24
|
-
test_case = $1
|
25
|
-
when /^\s+def (test_\S+)/
|
26
|
-
test = $1
|
27
|
-
when /^\s+controller\[(.+?)\] = (.*)$/,
|
28
|
-
/^\s+assert_assigned (.*?), (.*)/
|
29
|
-
ivar = $1
|
30
|
-
value = $2
|
31
|
-
test_cases[test_case][test][ivar] = value
|
32
|
-
when /fixtures (.*)/ then
|
33
|
-
fixtures[test_case].push(*$1.split(', '))
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
return test_cases, fixtures
|
40
|
-
end
|
41
|
-
|
42
|
-
view_test_cases, view_fixtures = build_test_cases 'views'
|
43
|
-
controller_test_cases, controller_fixtures = build_test_cases 'controller'
|
44
|
-
|
45
|
-
out = []
|
46
|
-
|
47
|
-
view_test_cases.sort_by { |tc,_| tc }.each do |test_case, tests|
|
48
|
-
out << "require 'test/test_helper'"
|
49
|
-
out << nil
|
50
|
-
out << "class #{test_case}ControllerTest < Test::Rails::ControllerTestCase"
|
51
|
-
out << nil
|
52
|
-
|
53
|
-
fixtures = controller_fixtures[test_case] - view_fixtures[test_case]
|
54
|
-
|
55
|
-
unless fixtures.empty? then
|
56
|
-
fixtures.each do |fixture|
|
57
|
-
out << " fixtures #{fixture}"
|
58
|
-
end
|
59
|
-
out << nil
|
60
|
-
end
|
61
|
-
|
62
|
-
tests.sort_by { |t,_| t }.each do |test, ivars|
|
63
|
-
ivars = view_test_cases[test_case][test].keys -
|
64
|
-
controller_test_cases[test_case][test].keys
|
65
|
-
|
66
|
-
next if ivars.empty?
|
67
|
-
|
68
|
-
out << " def #{test}"
|
69
|
-
ivars.sort.each do |ivar|
|
70
|
-
value = view_test_cases[test_case][test][ivar]
|
71
|
-
out << " assert_assigned #{ivar}, #{value}"
|
72
|
-
end
|
73
|
-
out << " end"
|
74
|
-
out << nil
|
75
|
-
end
|
76
|
-
out << "end"
|
77
|
-
out << nil
|
78
|
-
end
|
79
|
-
|
80
|
-
puts out.join("\n")
|
data/lib/autotest/screen.rb
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
##
|
2
|
-
# Autotest::Screen is test result notify GNU Screen's statusline.
|
3
|
-
#
|
4
|
-
# === screenshots
|
5
|
-
# * <img src="http://f.hatena.ne.jp/images/fotolife/s/secondlife/20061109/20061109015543.png" />
|
6
|
-
# * <img src="http://f.hatena.ne.jp/images/fotolife/s/secondlife/20061109/20061109015522.png" />
|
7
|
-
#
|
8
|
-
# == SYNOPSIS
|
9
|
-
# require 'autotest/screen'
|
10
|
-
# # Autotest::Screen.statusline = '%H %`%-w%{=b bw}%n %t%{-}%+w (your statusline)'
|
11
|
-
#
|
12
|
-
|
13
|
-
class Autotest::Screen
|
14
|
-
DEFAULT_STATUSLINE = '%H %`%-w%{=b bw}%n %t%{-}%+w'
|
15
|
-
DEFAULT_SCREEN_CMD = 'screen'
|
16
|
-
|
17
|
-
SCREEN_COLOR = {
|
18
|
-
:black => 'dd',
|
19
|
-
:green => 'gk',
|
20
|
-
:red => 'rw',
|
21
|
-
}
|
22
|
-
|
23
|
-
def self.message(msg, color = :black)
|
24
|
-
col = SCREEN_COLOR[color]
|
25
|
-
msg = %Q[ %{=b #{col}} #{msg} %{-}]
|
26
|
-
send_cmd(msg)
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.clear
|
30
|
-
send_cmd('')
|
31
|
-
end
|
32
|
-
|
33
|
-
def self.run_screen_session?
|
34
|
-
str = `#{screen_cmd} -ls`
|
35
|
-
str.match(/(\d+) Socket/) && ($1.to_i > 0)
|
36
|
-
end
|
37
|
-
|
38
|
-
def self.execute?
|
39
|
-
!($TESTING || !run_screen_session?)
|
40
|
-
end
|
41
|
-
|
42
|
-
@statusline, @screen_cmd = nil
|
43
|
-
def self.statusline; @statusline || DEFAULT_STATUSLINE.dup; end
|
44
|
-
def self.statusline=(a); @statusline = a; end
|
45
|
-
def self.screen_cmd; @screen_cmd || DEFAULT_SCREEN_CMD.dup; end
|
46
|
-
def self.screen_cmd=(a); @screen_cmd = a; end
|
47
|
-
|
48
|
-
def self.send_cmd(msg)
|
49
|
-
cmd = %(#{screen_cmd} -X eval 'hardstatus alwayslastline "#{(statusline + msg).gsub('"', '\"')}"') #' stupid ruby-mode
|
50
|
-
system cmd
|
51
|
-
end
|
52
|
-
|
53
|
-
Autotest.add_hook :run do |at|
|
54
|
-
message 'Run Tests' if execute?
|
55
|
-
end
|
56
|
-
|
57
|
-
Autotest.add_hook :quit do |at|
|
58
|
-
clear if execute?
|
59
|
-
end
|
60
|
-
|
61
|
-
Autotest.add_hook :ran_command do |at|
|
62
|
-
if execute? then
|
63
|
-
output = at.results.join
|
64
|
-
failed = output.scan(/^\s+\d+\) (?:Failure|Error):\n(.*?)\((.*?)\)/)
|
65
|
-
if failed.size == 0 then
|
66
|
-
message "All Green", :green
|
67
|
-
else
|
68
|
-
f,e = failed.partition { |s| s =~ /Failure/ }
|
69
|
-
message "Red F:#{f.size} E:#{e.size}", :red
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|