TwP-turn 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +23 -0
- data/README.txt +117 -0
- data/Rakefile +32 -0
- data/Release.txt +29 -0
- data/VERSION +1 -0
- data/bin/turn +4 -0
- data/lib/turn.rb +80 -0
- data/lib/turn/colorize.rb +29 -0
- data/lib/turn/command.rb +159 -0
- data/lib/turn/components/case.rb +98 -0
- data/lib/turn/components/method.rb +32 -0
- data/lib/turn/components/suite.rb +82 -0
- data/lib/turn/controller.rb +146 -0
- data/lib/turn/reporter.rb +56 -0
- data/lib/turn/reporters/dot_reporter.rb +78 -0
- data/lib/turn/reporters/marshal_reporter.rb +64 -0
- data/lib/turn/reporters/outline_reporter.rb +85 -0
- data/lib/turn/reporters/progress_reporter.rb +117 -0
- data/lib/turn/runners/crossrunner.rb +40 -0
- data/lib/turn/runners/isorunner.rb +129 -0
- data/lib/turn/runners/loadrunner.rb +48 -0
- data/lib/turn/runners/solorunner.rb +8 -0
- data/lib/turn/runners/testrunner.rb +154 -0
- data/test/test_example.rb +15 -0
- data/test/test_sample.rb +15 -0
- data/turn.gemspec +37 -0
- data/work/quicktest.rb +42 -0
- data/work/turn.rb +119 -0
- metadata +94 -0
@@ -0,0 +1,154 @@
|
|
1
|
+
#require 'test/unit'; Test::Unit.run = false
|
2
|
+
require 'test/unit/ui/console/testrunner'
|
3
|
+
|
4
|
+
#require 'turn/colorize'
|
5
|
+
#require 'turn/components/suite.rb'
|
6
|
+
#require 'turn/components/case.rb'
|
7
|
+
#require 'turn/components/method.rb'
|
8
|
+
#require 'turn/reporters/outline_reporter.rb'
|
9
|
+
#require 'turn/reporters/progress_reporter.rb'
|
10
|
+
|
11
|
+
module Turn
|
12
|
+
|
13
|
+
# = TestUnit TestRunner
|
14
|
+
#
|
15
|
+
#--
|
16
|
+
# TODO: Add minitest runner.
|
17
|
+
#++
|
18
|
+
class TestRunner < ::Test::Unit::UI::Console::TestRunner
|
19
|
+
|
20
|
+
def initialize(controller)
|
21
|
+
output_level = 2 # 2-NORMAL 3-VERBOSE
|
22
|
+
|
23
|
+
controller.loadpath.each{ |path| $: << path } unless controller.live?
|
24
|
+
controller.requires.each{ |path| require(path) }
|
25
|
+
|
26
|
+
[controller.files].flatten.each{ |path| require(path) }
|
27
|
+
|
28
|
+
sub_suites = []
|
29
|
+
ObjectSpace.each_object(Class) do |klass|
|
30
|
+
if(Test::Unit::TestCase > klass)
|
31
|
+
sub_suites << klass.suite
|
32
|
+
end
|
33
|
+
end
|
34
|
+
suite = Test::Unit::TestSuite.new('') # FIXME: Name?
|
35
|
+
sub_suites.sort_by{|s|s.name}.each{|s| suite << s}
|
36
|
+
|
37
|
+
@t_reporter = controller.reporter
|
38
|
+
|
39
|
+
super(suite, output_level, $stdout)
|
40
|
+
end
|
41
|
+
|
42
|
+
# Is this needed?
|
43
|
+
alias :t_attach_to_mediator :attach_to_mediator
|
44
|
+
|
45
|
+
def attach_to_mediator
|
46
|
+
@mediator.add_listener(::Test::Unit::UI::TestRunnerMediator::STARTED, &method(:t_started))
|
47
|
+
@mediator.add_listener(::Test::Unit::UI::TestRunnerMediator::FINISHED, &method(:t_finished))
|
48
|
+
@mediator.add_listener(::Test::Unit::TestSuite::STARTED, &method(:t_case_started))
|
49
|
+
@mediator.add_listener(::Test::Unit::TestSuite::FINISHED, &method(:t_case_finished))
|
50
|
+
@mediator.add_listener(::Test::Unit::TestCase::STARTED, &method(:t_test_started))
|
51
|
+
@mediator.add_listener(::Test::Unit::TestCase::FINISHED, &method(:t_test_finished))
|
52
|
+
@mediator.add_listener(::Test::Unit::TestResult::FAULT, &method(:t_fault))
|
53
|
+
|
54
|
+
@io.sync = true
|
55
|
+
|
56
|
+
@t_result = nil
|
57
|
+
@t_fault = nil
|
58
|
+
|
59
|
+
@t_previous_run_count = 0
|
60
|
+
@t_previous_error_count = 0
|
61
|
+
@t_previous_failure_count = 0
|
62
|
+
@t_previous_assertion_count = 0
|
63
|
+
end
|
64
|
+
|
65
|
+
def t_started(result)
|
66
|
+
@t_suite = Turn::TestSuite.new #@suite
|
67
|
+
@t_suite.size = @suite.size
|
68
|
+
@t_result = result
|
69
|
+
@t_reporter.start_suite(@t_suite)
|
70
|
+
end
|
71
|
+
|
72
|
+
def t_case_started(name)
|
73
|
+
# Err.. why is testunit running this on the suite?
|
74
|
+
(@not_first_case = true; return) unless @not_first_case
|
75
|
+
@t_case = @t_suite.new_case(name)
|
76
|
+
@t_reporter.start_case(@t_case)
|
77
|
+
end
|
78
|
+
|
79
|
+
def t_test_started(name)
|
80
|
+
methname, tcase = name.scan(%r/^([^\(]+)\(([^\)]+)\)/o).flatten!
|
81
|
+
@t_test = @t_case.new_test(methname)
|
82
|
+
#@t_test.file = tcase
|
83
|
+
#@t_test.name = method
|
84
|
+
@t_reporter.start_test(@t_test)
|
85
|
+
end
|
86
|
+
|
87
|
+
def t_fault(fault)
|
88
|
+
case fault
|
89
|
+
when ::Test::Unit::Error
|
90
|
+
msg = ""
|
91
|
+
msg << fault.to_s.split("\n")[2..-1].join("\n")
|
92
|
+
@t_test.error!(msg)
|
93
|
+
@t_reporter.error(msg)
|
94
|
+
when ::Test::Unit::Failure
|
95
|
+
msg = ""
|
96
|
+
msg << fault.location[0] << "\n"
|
97
|
+
msg << fault.message #.gsub("\n","\n")
|
98
|
+
@t_test.fail!(msg)
|
99
|
+
@t_reporter.fail(msg)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def t_test_finished(name)
|
104
|
+
@t_reporter.pass if @t_test.pass?
|
105
|
+
@t_reporter.finish_test(@t_test)
|
106
|
+
end
|
107
|
+
|
108
|
+
def t_case_finished(name)
|
109
|
+
# Err.. why is testunit running this on the suite?
|
110
|
+
return if name=='' # FIXME skip suite call
|
111
|
+
|
112
|
+
#t = @t_result.run_count - @t_previous_run_count
|
113
|
+
#f = @t_result.failure_count - @t_previous_failure_count
|
114
|
+
#e = @t_result.error_count - @t_previous_error_count
|
115
|
+
a = @t_result.assertion_count - @t_previous_assertion_count
|
116
|
+
|
117
|
+
#@t_case.counts(t,a,f,e)
|
118
|
+
|
119
|
+
@t_case.count_assertions = a
|
120
|
+
|
121
|
+
#@t_previous_run_count = @t_result.run_count.to_i
|
122
|
+
#@t_previous_failure_count = @t_result.failure_count.to_i
|
123
|
+
#@t_previous_error_count = @t_result.error_count.to_i
|
124
|
+
@t_previous_assertion_count = @t_result.assertion_count.to_i
|
125
|
+
|
126
|
+
@t_reporter.finish_case(@t_case)
|
127
|
+
end
|
128
|
+
|
129
|
+
def t_finished(elapsed_time)
|
130
|
+
#@t_suite.count_tests = @t_result.run_count
|
131
|
+
#@t_suite.count_failures = @t_result.failure_count
|
132
|
+
#@t_suite.count_errors = @t_result.error_count
|
133
|
+
#@t_suite.count_passes = @t_result.run_count - @t_result.failure_count - @t_result.error_count
|
134
|
+
@t_suite.count_assertions = @t_result.assertion_count
|
135
|
+
|
136
|
+
@t_reporter.finish_suite(@t_suite)
|
137
|
+
end
|
138
|
+
|
139
|
+
# This is copied verbatim from test/unit/ui/console/testrunner.rb.
|
140
|
+
# It is here for one simple reason: to supress testunits output of
|
141
|
+
# "Loaded Suite".
|
142
|
+
def setup_mediator
|
143
|
+
@mediator = create_mediator(@suite)
|
144
|
+
suite_name = @suite.to_s
|
145
|
+
if ( @suite.kind_of?(Module) )
|
146
|
+
suite_name = @suite.name
|
147
|
+
end
|
148
|
+
#output("Loaded suite #{suite_name}")
|
149
|
+
end
|
150
|
+
|
151
|
+
end#class TestRunner
|
152
|
+
|
153
|
+
end#module Turn
|
154
|
+
|
data/test/test_sample.rb
ADDED
data/turn.gemspec
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{turn}
|
5
|
+
s.version = "0.5.1"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Tim Pease"]
|
9
|
+
s.date = %q{2009-03-26}
|
10
|
+
s.default_executable = %q{turn}
|
11
|
+
s.description = %q{TURN is a new way to view Test::Unit results. With longer running tests, it can be very frustrating to see a failure (....F...) and then have to wait till all the tests finish before you can see what the exact failure was. TURN displays each test on a separate line with failures being displayed immediately instead of at the end of the tests. If you have the 'facets' gem installed, then TURN output will be displayed in wonderful technicolor (but only if your terminal supports ANSI color codes). Well, the only colors are green and red, but that is still color.}
|
12
|
+
s.email = %q{tim.pease@gmail.com}
|
13
|
+
s.executables = ["turn"]
|
14
|
+
s.extra_rdoc_files = ["History.txt", "README.txt", "Release.txt", "bin/turn"]
|
15
|
+
s.files = ["History.txt", "README.txt", "Rakefile", "Release.txt", "VERSION", "bin/turn", "lib/turn.rb", "lib/turn/colorize.rb", "lib/turn/command.rb", "lib/turn/components/case.rb", "lib/turn/components/method.rb", "lib/turn/components/suite.rb", "lib/turn/controller.rb", "lib/turn/reporter.rb", "lib/turn/reporters/dot_reporter.rb", "lib/turn/reporters/marshal_reporter.rb", "lib/turn/reporters/outline_reporter.rb", "lib/turn/reporters/progress_reporter.rb", "lib/turn/runners/crossrunner.rb", "lib/turn/runners/isorunner.rb", "lib/turn/runners/loadrunner.rb", "lib/turn/runners/solorunner.rb", "lib/turn/runners/testrunner.rb", "test/test_example.rb", "test/test_sample.rb", "turn.gemspec", "work/quicktest.rb", "work/turn.rb"]
|
16
|
+
s.has_rdoc = true
|
17
|
+
s.homepage = %q{http://codeforpeople.rubyforge.org/turn}
|
18
|
+
s.rdoc_options = ["--main", "README.txt"]
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
s.rubyforge_project = %q{codeforpeople}
|
21
|
+
s.rubygems_version = %q{1.3.1}
|
22
|
+
s.summary = %q{Test::Unit Reporter (New) -- new output format for Test::Unit}
|
23
|
+
s.test_files = ["test/test_example.rb", "test/test_sample.rb"]
|
24
|
+
|
25
|
+
if s.respond_to? :specification_version then
|
26
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
27
|
+
s.specification_version = 2
|
28
|
+
|
29
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
30
|
+
s.add_development_dependency(%q<bones>, [">= 2.4.2"])
|
31
|
+
else
|
32
|
+
s.add_dependency(%q<bones>, [">= 2.4.2"])
|
33
|
+
end
|
34
|
+
else
|
35
|
+
s.add_dependency(%q<bones>, [">= 2.4.2"])
|
36
|
+
end
|
37
|
+
end
|
data/work/quicktest.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# Christian Neukirchen
|
2
|
+
|
3
|
+
# This could actually be quite usable if it weren't for one small problem:
|
4
|
+
# There is no way to close off blocks from the outside scope.
|
5
|
+
# This can cause interferance between separate tests.
|
6
|
+
# So while quicktest works for simple cases, it may well run into
|
7
|
+
# problems with anything sizable.
|
8
|
+
|
9
|
+
require 'test/unit'
|
10
|
+
|
11
|
+
$TCGEN = "000000"
|
12
|
+
$TGEN = "000000"
|
13
|
+
|
14
|
+
#$TS = []
|
15
|
+
$TC = [nil]
|
16
|
+
|
17
|
+
def testcase(name=nil, &block)
|
18
|
+
tc = Class.new(Test::Unit::TestCase)
|
19
|
+
#self.class.const_set("TC_#{(name||$TCGEN.succ!)}", tc)
|
20
|
+
$TC << tc
|
21
|
+
tc.class_eval &block
|
22
|
+
end
|
23
|
+
|
24
|
+
class Test::Unit::TestCase
|
25
|
+
def self.gen_test_name
|
26
|
+
@gen_test_name ||= "000000"
|
27
|
+
@gen_test_name.succ!
|
28
|
+
return "#{@gen_test_name}"
|
29
|
+
end
|
30
|
+
def self.test(name=nil, &block)
|
31
|
+
__send__(:define_method, "test_#{(name||gen_test_name)}", &block)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def test(name=nil, &block)
|
36
|
+
$TC[0] ||= Class.new(Test::Unit::TestCase)
|
37
|
+
self.class.const_set("TC#{$TCGEN.succ!}", $TC[0])
|
38
|
+
$TC[0].__send__(:define_method, "test_#{(name||$TGEN.succ!)}", &block)
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
#Test::Unit.run = !$DEBUG
|
data/work/turn.rb
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
require 'test/unit/ui/console/testrunner'
|
2
|
+
require 'turn/colorize'
|
3
|
+
|
4
|
+
require 'turn/components/suite.rb'
|
5
|
+
require 'turn/components/case.rb'
|
6
|
+
require 'turn/components/method.rb'
|
7
|
+
|
8
|
+
require 'turn/reporters/outline_reporter.rb'
|
9
|
+
require 'turn/reporters/progress_reporter.rb'
|
10
|
+
|
11
|
+
#$turn_reporter = Turn::ProgressReporter.new(@io)
|
12
|
+
$turn_reporter = Turn::OutlineReporter.new(@io)
|
13
|
+
|
14
|
+
module ::Test::Unit
|
15
|
+
module UI
|
16
|
+
module Console
|
17
|
+
class TestRunner
|
18
|
+
include Turn::Colorize
|
19
|
+
|
20
|
+
# Is this needed?
|
21
|
+
alias :t_attach_to_mediator :attach_to_mediator
|
22
|
+
|
23
|
+
def attach_to_mediator
|
24
|
+
@mediator.add_listener(TestRunnerMediator::STARTED, &method(:t_started))
|
25
|
+
@mediator.add_listener(TestRunnerMediator::FINISHED, &method(:t_finished))
|
26
|
+
@mediator.add_listener(TestSuite::STARTED, &method(:t_case_started))
|
27
|
+
@mediator.add_listener(TestSuite::FINISHED, &method(:t_case_finished))
|
28
|
+
@mediator.add_listener(TestCase::STARTED, &method(:t_test_started))
|
29
|
+
@mediator.add_listener(TestCase::FINISHED, &method(:t_test_finished))
|
30
|
+
@mediator.add_listener(TestResult::FAULT, &method(:t_fault))
|
31
|
+
|
32
|
+
@io.sync = true
|
33
|
+
|
34
|
+
@t_result = nil
|
35
|
+
@t_fault = nil
|
36
|
+
@t_reporter = $turn_reporter
|
37
|
+
|
38
|
+
@t_previous_run_count = 0
|
39
|
+
@t_previous_error_count = 0
|
40
|
+
@t_previous_failure_count = 0
|
41
|
+
@t_previous_assertion_count = 0
|
42
|
+
end
|
43
|
+
|
44
|
+
def t_started(result)
|
45
|
+
@t_suite = Turn::TestSuite.new #@suite
|
46
|
+
@t_suite.size = @suite.size
|
47
|
+
@t_result = result
|
48
|
+
@t_reporter.start_suite(@t_suite)
|
49
|
+
end
|
50
|
+
|
51
|
+
def t_case_started(name)
|
52
|
+
(@not_first_case = true; return) unless @not_first_case
|
53
|
+
@t_case = @t_suite.new_case(name)
|
54
|
+
@t_reporter.start_case(@t_case)
|
55
|
+
end
|
56
|
+
|
57
|
+
def t_test_started(name)
|
58
|
+
methname, tcase = name.scan(%r/^([^\(]+)\(([^\)]+)\)/o).flatten!
|
59
|
+
@t_test = @t_case.new_test(methname)
|
60
|
+
#@t_test.file = tcase
|
61
|
+
#@t_test.name = method
|
62
|
+
@t_reporter.start_test(@t_test)
|
63
|
+
end
|
64
|
+
|
65
|
+
def t_fault(fault)
|
66
|
+
case fault
|
67
|
+
when ::Test::Unit::Error
|
68
|
+
msg = "\t"
|
69
|
+
msg << fault.to_s.split("\n")[2..-1].join("\n\t")
|
70
|
+
msg = ::ANSICode.magenta(msg) if COLORIZE
|
71
|
+
@t_test.error!(msg)
|
72
|
+
@t_reporter.error(msg)
|
73
|
+
when ::Test::Unit::Failure
|
74
|
+
msg = "\t"
|
75
|
+
msg << fault.location[0] << "\n\t"
|
76
|
+
msg << fault.message.gsub("\n","\n\t")
|
77
|
+
msg = ::ANSICode.magenta(msg) if COLORIZE
|
78
|
+
@t_test.fail!(msg)
|
79
|
+
@t_reporter.fail(msg)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def t_test_finished(name)
|
84
|
+
@t_reporter.pass if @t_test.pass?
|
85
|
+
@t_reporter.finish_test(@t_test)
|
86
|
+
end
|
87
|
+
|
88
|
+
def t_case_finished(name)
|
89
|
+
t = @t_result.run_count - @t_previous_run_count
|
90
|
+
f = @t_result.failure_count - @t_previous_failure_count
|
91
|
+
e = @t_result.error_count - @t_previous_error_count
|
92
|
+
a = @t_result.assertion_count - @t_previous_assertion_count
|
93
|
+
|
94
|
+
@t_case.counts(t,a,f,e)
|
95
|
+
|
96
|
+
@t_previous_run_count = @t_result.run_count
|
97
|
+
@t_previous_failure_count = @t_result.failure_count
|
98
|
+
@t_previous_error_count = @t_result.error_count
|
99
|
+
@t_previous_assertion_count = @t_result.assertion_count
|
100
|
+
|
101
|
+
@t_reporter.finish_case(@t_case)
|
102
|
+
end
|
103
|
+
|
104
|
+
def t_finished(elapsed_time)
|
105
|
+
@t_suite.count_tests = @t_result.run_count
|
106
|
+
@t_suite.count_failures = @t_result.failure_count
|
107
|
+
@t_suite.count_errors = @t_result.error_count
|
108
|
+
@t_suite.count_passes = @t_result.run_count - @t_result.failure_count - @t_result.error_count
|
109
|
+
@t_suite.count_assertions = @t_result.assertion_count
|
110
|
+
|
111
|
+
@t_reporter.finish_suite(@t_suite)
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
# EOF
|
metadata
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: TwP-turn
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tim Pease
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-03-26 00:00:00 -07:00
|
13
|
+
default_executable: turn
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: bones
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 2.4.2
|
24
|
+
version:
|
25
|
+
description: TURN is a new way to view Test::Unit results. With longer running tests, it can be very frustrating to see a failure (....F...) and then have to wait till all the tests finish before you can see what the exact failure was. TURN displays each test on a separate line with failures being displayed immediately instead of at the end of the tests. If you have the 'facets' gem installed, then TURN output will be displayed in wonderful technicolor (but only if your terminal supports ANSI color codes). Well, the only colors are green and red, but that is still color.
|
26
|
+
email: tim.pease@gmail.com
|
27
|
+
executables:
|
28
|
+
- turn
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files:
|
32
|
+
- History.txt
|
33
|
+
- README.txt
|
34
|
+
- Release.txt
|
35
|
+
- bin/turn
|
36
|
+
files:
|
37
|
+
- History.txt
|
38
|
+
- README.txt
|
39
|
+
- Rakefile
|
40
|
+
- Release.txt
|
41
|
+
- VERSION
|
42
|
+
- bin/turn
|
43
|
+
- lib/turn.rb
|
44
|
+
- lib/turn/colorize.rb
|
45
|
+
- lib/turn/command.rb
|
46
|
+
- lib/turn/components/case.rb
|
47
|
+
- lib/turn/components/method.rb
|
48
|
+
- lib/turn/components/suite.rb
|
49
|
+
- lib/turn/controller.rb
|
50
|
+
- lib/turn/reporter.rb
|
51
|
+
- lib/turn/reporters/dot_reporter.rb
|
52
|
+
- lib/turn/reporters/marshal_reporter.rb
|
53
|
+
- lib/turn/reporters/outline_reporter.rb
|
54
|
+
- lib/turn/reporters/progress_reporter.rb
|
55
|
+
- lib/turn/runners/crossrunner.rb
|
56
|
+
- lib/turn/runners/isorunner.rb
|
57
|
+
- lib/turn/runners/loadrunner.rb
|
58
|
+
- lib/turn/runners/solorunner.rb
|
59
|
+
- lib/turn/runners/testrunner.rb
|
60
|
+
- test/test_example.rb
|
61
|
+
- test/test_sample.rb
|
62
|
+
- turn.gemspec
|
63
|
+
- work/quicktest.rb
|
64
|
+
- work/turn.rb
|
65
|
+
has_rdoc: true
|
66
|
+
homepage: http://codeforpeople.rubyforge.org/turn
|
67
|
+
post_install_message:
|
68
|
+
rdoc_options:
|
69
|
+
- --main
|
70
|
+
- README.txt
|
71
|
+
require_paths:
|
72
|
+
- lib
|
73
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: "0"
|
78
|
+
version:
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: "0"
|
84
|
+
version:
|
85
|
+
requirements: []
|
86
|
+
|
87
|
+
rubyforge_project: codeforpeople
|
88
|
+
rubygems_version: 1.2.0
|
89
|
+
signing_key:
|
90
|
+
specification_version: 2
|
91
|
+
summary: Test::Unit Reporter (New) -- new output format for Test::Unit
|
92
|
+
test_files:
|
93
|
+
- test/test_example.rb
|
94
|
+
- test/test_sample.rb
|