turn 0.8.1 → 0.8.2
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/History.txt +7 -0
- data/Rakefile +0 -1
- data/Version.txt +1 -1
- data/demo/test_autorun_minitest.rb +2 -0
- data/demo/test_counts.rb +17 -0
- data/lib/turn/autorun/minitest.rb +20 -2
- data/lib/turn/autorun/testunit.rb +19 -5
- data/lib/turn/command.rb +24 -2
- data/lib/turn/controller.rb +16 -5
- data/lib/turn/runners/minirunner.rb +89 -113
- data/lib/turn/runners/testrunner.rb +8 -3
- data/lib/turn/version.rb +3 -0
- data/turn.gemspec +49 -0
- metadata +15 -12
data/History.txt
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
== 0.8.2 / 2011-03-31
|
2
|
+
* Add version in code and cli option to diplay it.
|
3
|
+
* Fix for files lookup controller bug
|
4
|
+
* Limit default test matching to *.rb files.
|
5
|
+
* Show first line from the test file when showing stack traces [F. Morgan Whitney]
|
6
|
+
* Make minitest output compatible with natural language case naming [David Heinemeier Hansson]
|
7
|
+
|
1
8
|
== 0.8.1 / 2010-09-10
|
2
9
|
* Fix misspelling of "raised" which prevented proper recording of errors.
|
3
10
|
* Fix IsoRunner so it passes error, not just error message.
|
data/Rakefile
CHANGED
data/Version.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.8.
|
1
|
+
0.8.2
|
data/demo/test_counts.rb
ADDED
@@ -7,6 +7,16 @@ class MiniTest::Unit
|
|
7
7
|
include ANSI::Code
|
8
8
|
|
9
9
|
PADDING_SIZE = 4
|
10
|
+
|
11
|
+
@@use_natural_language_case_names = false
|
12
|
+
def self.use_natural_language_case_names=(boolean)
|
13
|
+
@use_natural_language_case_names = boolean
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.use_natural_language_case_names?
|
17
|
+
@use_natural_language_case_names
|
18
|
+
end
|
19
|
+
|
10
20
|
|
11
21
|
def run(args = [])
|
12
22
|
@verbose = true
|
@@ -14,7 +24,14 @@ class MiniTest::Unit
|
|
14
24
|
filter = if args.first =~ /^(-n|--name)$/ then
|
15
25
|
args.shift
|
16
26
|
arg = args.shift
|
17
|
-
arg =~ /\/(.*)\//
|
27
|
+
if arg =~ /\/(.*)\//
|
28
|
+
Regexp.new($1)
|
29
|
+
elsif MiniTest::Unit.use_natural_language_case_names?
|
30
|
+
# Turn 'sample error1' into 'test_sample_error1'
|
31
|
+
arg[0..4] == "test_" ? arg.gsub(" ", "_") : "test_" + arg.gsub(" ", "_")
|
32
|
+
else
|
33
|
+
arg
|
34
|
+
end
|
18
35
|
else
|
19
36
|
/./ # anything - ^test_ already filtered by #tests
|
20
37
|
end
|
@@ -73,7 +90,8 @@ class MiniTest::Unit
|
|
73
90
|
end)
|
74
91
|
|
75
92
|
|
76
|
-
@@out.print
|
93
|
+
@@out.print MiniTest::Unit.use_natural_language_case_names? ?
|
94
|
+
" #{test.gsub("test_", "").gsub(/_/, " ")}" : " #{test}"
|
77
95
|
@@out.print " (%.2fs) " % (Time.now - t)
|
78
96
|
|
79
97
|
if @broken
|
@@ -35,8 +35,8 @@ module Console
|
|
35
35
|
|
36
36
|
bar = '=' * 78
|
37
37
|
if COLORIZE
|
38
|
-
bar = if pass == total then ::ANSI::Code.green
|
39
|
-
else ::ANSI::Code.red
|
38
|
+
bar = if pass == total then ::ANSI::Code.green{bar}
|
39
|
+
else ::ANSI::Code.red{bar} end
|
40
40
|
end
|
41
41
|
|
42
42
|
turn_out.puts bar
|
@@ -49,7 +49,7 @@ module Console
|
|
49
49
|
method, file = name.scan(%r/^([^\(]+)\(([^\)]+)\)/o).flatten!
|
50
50
|
if @t_cur_file != file
|
51
51
|
@t_cur_file = file
|
52
|
-
file = COLORIZE ? ::ANSI::Code.yellow
|
52
|
+
file = COLORIZE ? ::ANSI::Code.yellow{file} : file
|
53
53
|
turn_out.puts file
|
54
54
|
end
|
55
55
|
turn_out.print " %-69s" % method
|
@@ -69,16 +69,30 @@ module Console
|
|
69
69
|
turn_out.puts ERROR
|
70
70
|
msg << fault.to_s.split("\n")[2..-1].join("\n\t")
|
71
71
|
when ::Test::Unit::Failure
|
72
|
+
test_name = underscore(fault.test_name.match(/\((.*)\)/)[1])
|
73
|
+
better_location = fault.location.detect{|line|line.include?(test_name)} || fault.location[0]
|
72
74
|
turn_out.puts " #{FAIL}"
|
73
|
-
msg <<
|
75
|
+
msg << better_location.to_s << "\n\t"
|
74
76
|
msg << fault.message.gsub("\n","\n\t")
|
75
77
|
end
|
76
78
|
|
77
|
-
msg = ::ANSI::Code.magenta
|
79
|
+
msg = ::ANSI::Code.magenta{msg} if COLORIZE
|
78
80
|
turn_out.puts msg
|
79
81
|
end
|
80
82
|
|
81
83
|
private
|
84
|
+
|
85
|
+
# Taken from ActiveSupport::Inflector
|
86
|
+
def underscore(camel_cased_word)
|
87
|
+
word = camel_cased_word.to_s.dup
|
88
|
+
word.gsub!(/::/, '/')
|
89
|
+
word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
|
90
|
+
word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
|
91
|
+
word.tr!("-", "_")
|
92
|
+
word.downcase!
|
93
|
+
word
|
94
|
+
end
|
95
|
+
|
82
96
|
def setup_mediator
|
83
97
|
@mediator = create_mediator(@suite)
|
84
98
|
suite_name = @suite.to_s
|
data/lib/turn/command.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'optparse'
|
2
|
-
require 'turn/controller'
|
3
2
|
|
4
3
|
module Turn
|
4
|
+
require 'turn/controller'
|
5
5
|
|
6
6
|
# Turn - Pretty Unit Test Runner for Ruby
|
7
7
|
#
|
@@ -46,6 +46,9 @@ module Turn
|
|
46
46
|
# Only run tests matching this pattern.
|
47
47
|
attr :pattern
|
48
48
|
|
49
|
+
# Only run testcases matching this pattern.
|
50
|
+
attr :matchcase
|
51
|
+
|
49
52
|
# List of paths to add to $LOAD_PATH
|
50
53
|
attr :loadpath
|
51
54
|
|
@@ -66,6 +69,7 @@ module Turn
|
|
66
69
|
@live = nil
|
67
70
|
@log = nil
|
68
71
|
@pattern = nil
|
72
|
+
@matchcase = nil
|
69
73
|
@loadpath = []
|
70
74
|
@requires = []
|
71
75
|
@runmode = nil
|
@@ -95,7 +99,19 @@ module Turn
|
|
95
99
|
end
|
96
100
|
|
97
101
|
opts.on('-n', '--name=PATTERN', "only run tests that match PATTERN") do |pattern|
|
98
|
-
|
102
|
+
if pattern =~ /\/(.*)\//
|
103
|
+
@pattern = Regexp.new($1)
|
104
|
+
else
|
105
|
+
@pattern = Regexp.new(pattern, Regexp::IGNORECASE)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
opts.on('-t', '--testcase=PATTERN', "only run testcases that match PATTERN") do |pattern|
|
110
|
+
if pattern =~ /\/(.*)\//
|
111
|
+
@matchcase = Regexp.new($1)
|
112
|
+
else
|
113
|
+
@matchcase = Regexp.new(pattern, Regexp::IGNORECASE)
|
114
|
+
end
|
99
115
|
end
|
100
116
|
|
101
117
|
opts.on('-m', '--minitest', "Force use of MiniTest framework") do
|
@@ -169,6 +185,11 @@ module Turn
|
|
169
185
|
$DEBUG = true
|
170
186
|
end
|
171
187
|
|
188
|
+
opts.on_tail('--version', "display version") do
|
189
|
+
puts VERSION
|
190
|
+
exit
|
191
|
+
end
|
192
|
+
|
172
193
|
opts.on_tail('--help', '-h', "display this help information") do
|
173
194
|
puts opts
|
174
195
|
exit
|
@@ -193,6 +214,7 @@ module Turn
|
|
193
214
|
c.runmode = runmode
|
194
215
|
c.format = outmode
|
195
216
|
c.pattern = pattern
|
217
|
+
c.matchcase = matchcase
|
196
218
|
c.framework = framework
|
197
219
|
end
|
198
220
|
|
data/lib/turn/controller.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
|
3
3
|
module Turn
|
4
|
+
require 'turn/version'
|
4
5
|
require 'turn/components/suite.rb'
|
5
6
|
require 'turn/components/case.rb'
|
6
7
|
require 'turn/components/method.rb'
|
@@ -12,17 +13,20 @@ module Turn
|
|
12
13
|
#++
|
13
14
|
class Controller
|
14
15
|
|
15
|
-
#
|
16
|
-
# Can be an array of files/globs.
|
16
|
+
# List of if file names or glob pattern of tests to run.
|
17
17
|
attr_accessor :tests
|
18
18
|
|
19
|
-
#
|
19
|
+
# List of file names or globs to exclude from +tests+ list.
|
20
20
|
attr_accessor :exclude
|
21
21
|
|
22
22
|
# Regexp pattern that all test name's must
|
23
23
|
# match to be eligible to run.
|
24
24
|
attr_accessor :pattern
|
25
25
|
|
26
|
+
# Regexp pattern that all test cases must
|
27
|
+
# match to be eligible to run.
|
28
|
+
attr_accessor :matchcase
|
29
|
+
|
26
30
|
# Add these folders to the $LOAD_PATH.
|
27
31
|
attr_accessor :loadpath
|
28
32
|
|
@@ -60,12 +64,12 @@ module Turn
|
|
60
64
|
#
|
61
65
|
def initialize_defaults
|
62
66
|
@loadpath ||= ['lib']
|
63
|
-
@tests ||= "test/**/{test,}*{,test}"
|
67
|
+
@tests ||= ["test/**/{test,}*{,test}.rb"]
|
64
68
|
@exclude ||= []
|
65
69
|
@requires ||= []
|
66
70
|
@live ||= false
|
67
71
|
@log ||= true
|
68
|
-
#@
|
72
|
+
#@format ||= nil
|
69
73
|
#@runner ||= RUBY_VERSION >= "1.9" ? MiniRunner : TestRunner
|
70
74
|
@pattern ||= /.*/
|
71
75
|
end
|
@@ -100,6 +104,10 @@ module Turn
|
|
100
104
|
|
101
105
|
public
|
102
106
|
|
107
|
+
def tests=(paths)
|
108
|
+
@tests = list_option(paths)
|
109
|
+
end
|
110
|
+
|
103
111
|
def loadpath=(paths)
|
104
112
|
@loadpath = list_option(paths)
|
105
113
|
end
|
@@ -112,16 +120,19 @@ module Turn
|
|
112
120
|
@requires = list_option(paths)
|
113
121
|
end
|
114
122
|
|
123
|
+
# Test files.
|
115
124
|
def files
|
116
125
|
@files ||= (
|
117
126
|
fs = tests.map do |t|
|
118
127
|
File.directory?(t) ? Dir[File.join(t, '**', '*')] : Dir[t]
|
119
128
|
end
|
120
129
|
fs = fs.flatten.reject{ |f| File.directory?(f) }
|
130
|
+
|
121
131
|
ex = exclude.map do |x|
|
122
132
|
File.directory?(x) ? Dir[File.join(x, '**', '*')] : Dir[x]
|
123
133
|
end
|
124
134
|
ex = ex.flatten.reject{ |f| File.directory?(f) }
|
135
|
+
|
125
136
|
(fs - ex).uniq.map{ |f| File.expand_path(f) }
|
126
137
|
)
|
127
138
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require 'stringio'
|
2
2
|
|
3
3
|
# Becuase of some wierdness in MiniTest
|
4
4
|
debug, $DEBUG = $DEBUG, false
|
@@ -13,8 +13,9 @@ module Turn
|
|
13
13
|
#
|
14
14
|
class MiniRunner < ::MiniTest::Unit
|
15
15
|
|
16
|
-
#
|
16
|
+
# Override initialize to take controller argument.
|
17
17
|
def initialize(controller)
|
18
|
+
@turn_controller = controller
|
18
19
|
|
19
20
|
controller.loadpath.each{ |path| $: << path } unless controller.live?
|
20
21
|
controller.requires.each{ |path| require(path) }
|
@@ -44,146 +45,121 @@ module Turn
|
|
44
45
|
@turn_logger = controller.reporter
|
45
46
|
|
46
47
|
super()
|
48
|
+
|
49
|
+
# route minitests traditional output to nowhere
|
50
|
+
# (instead of overriding #puts and #print)
|
51
|
+
@@out = ::StringIO.new
|
47
52
|
end
|
48
53
|
|
49
|
-
#
|
54
|
+
# Turn calls this method to start the test run.
|
50
55
|
def start(args=[])
|
51
56
|
run(args)
|
52
57
|
return @turn_suite
|
53
58
|
end
|
54
59
|
|
55
|
-
#
|
56
|
-
def
|
57
|
-
@
|
60
|
+
# Override #_run_suite to setup Turn.
|
61
|
+
def _run_suites suites, type
|
62
|
+
@turn_suite = Turn::TestSuite.new(@turn_suite_name)
|
63
|
+
@turn_suite.size = ::MiniTest::Unit::TestCase.test_suites.size
|
58
64
|
|
59
|
-
|
60
|
-
args.shift
|
61
|
-
arg = args.shift
|
62
|
-
arg =~ /\/(.*)\// ? Regexp.new($1) : arg
|
63
|
-
else
|
64
|
-
/./ # anything - ^test_ already filtered by #tests
|
65
|
-
end
|
65
|
+
@turn_logger.start_suite(@turn_suite)
|
66
66
|
|
67
|
-
|
67
|
+
if @turn_controller.matchcase
|
68
|
+
suites = suites.select{ |suite| @turn_controller.matchcase =~ suite.name }
|
69
|
+
end
|
68
70
|
|
69
|
-
|
71
|
+
result = suites.map { |suite| _run_suite(suite, type) }
|
70
72
|
|
71
|
-
|
73
|
+
@turn_logger.finish_suite(@turn_suite)
|
72
74
|
|
73
|
-
return
|
75
|
+
return result
|
74
76
|
end
|
75
77
|
|
76
|
-
#
|
77
|
-
def
|
78
|
-
|
79
|
-
|
78
|
+
# Override #_run_suite to iterate tests via Turn.
|
79
|
+
def _run_suite suite, type
|
80
|
+
# suites are cases in minitest
|
81
|
+
@turn_case = @turn_suite.new_case(suite.name)
|
80
82
|
|
81
|
-
|
82
|
-
|
83
|
-
|
83
|
+
filter = @turn_controller.pattern || /./
|
84
|
+
|
85
|
+
suite.send("#{type}_methods").grep(filter).each do |test|
|
86
|
+
@turn_case.new_test(test)
|
87
|
+
end
|
84
88
|
|
85
|
-
|
89
|
+
@turn_logger.start_case(@turn_case)
|
86
90
|
|
87
|
-
|
91
|
+
header = "#{type}_suite_header"
|
92
|
+
puts send(header, suite) if respond_to? header
|
88
93
|
|
89
|
-
|
94
|
+
assertions = @turn_case.tests.map do |test|
|
95
|
+
@turn_test = test
|
96
|
+
@turn_logger.start_test(@turn_test)
|
90
97
|
|
91
|
-
|
92
|
-
|
93
|
-
end
|
98
|
+
inst = suite.new(test.name) #method
|
99
|
+
inst._assertions = 0
|
94
100
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
@turn_test = test #@turn_case.new_test(test)
|
100
|
-
@turn_logger.start_test(@turn_test)
|
101
|
-
|
102
|
-
inst = kase.new(test.name)
|
103
|
-
inst._assertions = 0
|
104
|
-
|
105
|
-
result = inst.run(self)
|
106
|
-
report = @report.last
|
107
|
-
|
108
|
-
case result
|
109
|
-
when :pass
|
110
|
-
@turn_logger.pass
|
111
|
-
when :error
|
112
|
-
#trace = ::MiniTest::filter_backtrace(report[:exception].backtrace).first
|
113
|
-
@turn_test.error!(report)
|
114
|
-
@turn_logger.error(report)
|
115
|
-
when :fail
|
116
|
-
#trace = ::MiniTest::filter_backtrace(report[:exception].backtrace).first
|
117
|
-
@turn_test.fail!(report)
|
118
|
-
@turn_logger.fail(report)
|
119
|
-
when :skip
|
120
|
-
@turn_test.skip! #(report)
|
121
|
-
@turn_logger.skip #(report)
|
122
|
-
end
|
123
|
-
|
124
|
-
@turn_logger.finish_test(@turn_test)
|
125
|
-
|
126
|
-
@test_count += 1
|
127
|
-
@assertion_count += inst._assertions
|
101
|
+
result = inst.run self
|
102
|
+
|
103
|
+
if result == "."
|
104
|
+
@turn_logger.pass
|
128
105
|
end
|
129
|
-
|
130
|
-
@turn_logger.
|
106
|
+
|
107
|
+
@turn_logger.finish_test(@turn_test)
|
108
|
+
|
109
|
+
inst._assertions
|
131
110
|
end
|
132
|
-
|
133
|
-
|
134
|
-
|
111
|
+
|
112
|
+
@turn_case.count_assertions = assertions.inject(0) { |sum, n| sum + n }
|
113
|
+
|
114
|
+
@turn_logger.finish_case(@turn_case)
|
115
|
+
|
116
|
+
return assertions.size, assertions.inject(0) { |sum, n| sum + n }
|
135
117
|
end
|
136
118
|
|
137
|
-
#
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
@errors += 1
|
152
|
-
result = :error
|
153
|
-
"#{e.class}: #{e.message}\n"
|
154
|
-
end
|
155
|
-
|
156
|
-
@report << e #{:message => msg, :exception => e}
|
157
|
-
result
|
119
|
+
# Override #puke to update Turn's internals and reporter.
|
120
|
+
def puke(klass, meth, err)
|
121
|
+
case err
|
122
|
+
when MiniTest::Skip
|
123
|
+
@turn_test.skip!
|
124
|
+
@turn_logger.skip #(e)
|
125
|
+
when MiniTest::Assertion
|
126
|
+
@turn_test.fail!(err)
|
127
|
+
@turn_logger.fail(err)
|
128
|
+
else
|
129
|
+
@turn_test.error!(err)
|
130
|
+
@turn_logger.error(err)
|
131
|
+
end
|
132
|
+
super(klass, meth, err)
|
158
133
|
end
|
159
134
|
|
160
|
-
|
135
|
+
# To maintain compatibility with old versions of MiniTest.
|
136
|
+
if ::MiniTest::Unit::VERSION < '2.0'
|
161
137
|
|
162
|
-
|
138
|
+
#attr_accessor :options
|
139
|
+
|
140
|
+
#
|
141
|
+
def run(args=[])
|
142
|
+
suites = ::MiniTest::Unit::TestCase.test_suites
|
143
|
+
return if suites.empty?
|
144
|
+
|
145
|
+
@test_count, @assertion_count = 0, 0
|
146
|
+
sync = @@out.respond_to? :"sync=" # stupid emacs
|
147
|
+
old_sync, @@out.sync = @@out.sync, true if sync
|
163
148
|
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
@passed = true
|
175
|
-
rescue Exception => e
|
176
|
-
@passed = false
|
177
|
-
result = runner.puke(self.class, self.__name__.to_s, e)
|
178
|
-
ensure
|
179
|
-
begin
|
180
|
-
self.teardown
|
181
|
-
rescue Exception => e
|
182
|
-
result = runner.puke(self.class, self.__name__.to_s, e)
|
149
|
+
results = _run_suites suites, :test #type
|
150
|
+
|
151
|
+
@test_count = results.inject(0) { |sum, (tc, _)| sum + tc }
|
152
|
+
@assertion_count = results.inject(0) { |sum, (_, ac)| sum + ac }
|
153
|
+
|
154
|
+
@@out.sync = old_sync if sync
|
155
|
+
|
156
|
+
return failures + errors if @test_count > 0 # or return nil...
|
157
|
+
rescue Interrupt
|
158
|
+
abort 'Interrupted'
|
183
159
|
end
|
160
|
+
|
184
161
|
end
|
185
|
-
|
162
|
+
|
186
163
|
end
|
187
|
-
$VERBOSE = old_verbose
|
188
|
-
end
|
189
164
|
|
165
|
+
end
|
@@ -38,11 +38,16 @@ module Turn
|
|
38
38
|
end
|
39
39
|
suite = Test::Unit::TestSuite.new(name)
|
40
40
|
|
41
|
+
matchcase = controller.matchcase
|
42
|
+
pattern = controller.pattern
|
43
|
+
|
44
|
+
if matchcase
|
45
|
+
sub_suites = sub_suites.select{|s| matchcase =~ s.name}
|
46
|
+
end
|
41
47
|
sub_suites.sort_by{|s|s.name}.each{|s| suite << s}
|
42
48
|
|
43
49
|
suite.tests.each do |c|
|
44
|
-
pattern
|
45
|
-
c.tests.reject! { |t| pattern !~ t.method_name }
|
50
|
+
c.tests.reject!{ |t| pattern !~ t.method_name }
|
46
51
|
end
|
47
52
|
|
48
53
|
@t_reporter = controller.reporter
|
@@ -118,7 +123,7 @@ module Turn
|
|
118
123
|
@t_reporter.finish_test(@t_test)
|
119
124
|
end
|
120
125
|
|
121
|
-
|
126
|
+
def t_case_finished(name)
|
122
127
|
# Err.. why is testunit running this on the suite?
|
123
128
|
return if name=='' # FIXME skip suite call
|
124
129
|
|
data/lib/turn/version.rb
ADDED
data/turn.gemspec
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{turn}
|
5
|
+
s.version = "0.8.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{2010-09-09}
|
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
|
12
|
+
can be very frustrating to see a failure (....F...) and then have to wait till
|
13
|
+
all the tests finish before you can see what the exact failure was. TURN
|
14
|
+
displays each test on a separate line with failures being displayed
|
15
|
+
immediately instead of at the end of the tests.
|
16
|
+
|
17
|
+
If you have the 'ansi' gem installed, then TURN output will be displayed in
|
18
|
+
wonderful technicolor (but only if your terminal supports ANSI color codes).
|
19
|
+
Well, the only colors are green and red, but that is still color.}
|
20
|
+
s.email = %q{tim.pease@gmail.com}
|
21
|
+
s.executables = ["turn"]
|
22
|
+
s.extra_rdoc_files = ["History.txt", "README.txt", "Release.txt", "Version.txt", "bin/turn"]
|
23
|
+
s.files = ["History.txt", "README.txt", "Rakefile", "Release.txt", "Version.txt", "bin/turn", "demo/test_autorun_minitest.rb", "demo/test_autorun_testunit.rb", "demo/test_sample.rb", "demo/test_sample2.rb", "lib/turn.rb", "lib/turn/autorun/minitest.rb", "lib/turn/autorun/testunit.rb", "lib/turn/bin.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/core_ext.rb", "lib/turn/reporter.rb", "lib/turn/reporters/cue_reporter.rb", "lib/turn/reporters/dot_reporter.rb", "lib/turn/reporters/marshal_reporter.rb", "lib/turn/reporters/outline_reporter.rb", "lib/turn/reporters/pretty_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/minirunner.rb", "lib/turn/runners/solorunner.rb", "lib/turn/runners/testrunner.rb", "test/helper.rb", "test/runner", "test/test_framework.rb", "test/test_reporters.rb", "test/test_runners.rb"]
|
24
|
+
s.homepage = %q{http://gemcutter.org/gems/turn}
|
25
|
+
s.rdoc_options = ["--main", "README.txt"]
|
26
|
+
s.require_paths = ["lib"]
|
27
|
+
s.rubyforge_project = %q{codeforpeople}
|
28
|
+
s.rubygems_version = %q{1.5.2}
|
29
|
+
s.summary = %q{Test::Unit Reporter (New) -- new output format for Test::Unit}
|
30
|
+
s.test_files = ["test/test_framework.rb", "test/test_reporters.rb", "test/test_runners.rb"]
|
31
|
+
|
32
|
+
if s.respond_to? :specification_version then
|
33
|
+
s.specification_version = 3
|
34
|
+
|
35
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
36
|
+
s.add_runtime_dependency(%q<ansi>, [">= 1.2.2"])
|
37
|
+
s.add_development_dependency(%q<bones-git>, [">= 1.2.0"])
|
38
|
+
s.add_development_dependency(%q<bones>, [">= 3.4.7"])
|
39
|
+
else
|
40
|
+
s.add_dependency(%q<ansi>, [">= 1.2.2"])
|
41
|
+
s.add_dependency(%q<bones-git>, [">= 1.2.0"])
|
42
|
+
s.add_dependency(%q<bones>, [">= 3.4.7"])
|
43
|
+
end
|
44
|
+
else
|
45
|
+
s.add_dependency(%q<ansi>, [">= 1.2.2"])
|
46
|
+
s.add_dependency(%q<bones-git>, [">= 1.2.0"])
|
47
|
+
s.add_dependency(%q<bones>, [">= 3.4.7"])
|
48
|
+
end
|
49
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: turn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 59
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 8
|
9
|
-
-
|
10
|
-
version: 0.8.
|
9
|
+
- 2
|
10
|
+
version: 0.8.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tim Pease
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-03-31 00:00:00 -06:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -42,12 +42,12 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ">="
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
hash:
|
45
|
+
hash: 23
|
46
46
|
segments:
|
47
47
|
- 1
|
48
48
|
- 2
|
49
|
-
-
|
50
|
-
version: 1.2.
|
49
|
+
- 4
|
50
|
+
version: 1.2.4
|
51
51
|
type: :development
|
52
52
|
version_requirements: *id002
|
53
53
|
- !ruby/object:Gem::Dependency
|
@@ -58,12 +58,12 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
hash:
|
61
|
+
hash: 21
|
62
62
|
segments:
|
63
63
|
- 3
|
64
|
-
-
|
65
|
-
-
|
66
|
-
version: 3.
|
64
|
+
- 6
|
65
|
+
- 5
|
66
|
+
version: 3.6.5
|
67
67
|
type: :development
|
68
68
|
version_requirements: *id003
|
69
69
|
description: |-
|
@@ -96,6 +96,7 @@ files:
|
|
96
96
|
- bin/turn
|
97
97
|
- demo/test_autorun_minitest.rb
|
98
98
|
- demo/test_autorun_testunit.rb
|
99
|
+
- demo/test_counts.rb
|
99
100
|
- demo/test_sample.rb
|
100
101
|
- demo/test_sample2.rb
|
101
102
|
- lib/turn.rb
|
@@ -122,11 +123,13 @@ files:
|
|
122
123
|
- lib/turn/runners/minirunner.rb
|
123
124
|
- lib/turn/runners/solorunner.rb
|
124
125
|
- lib/turn/runners/testrunner.rb
|
126
|
+
- lib/turn/version.rb
|
125
127
|
- test/helper.rb
|
126
128
|
- test/runner
|
127
129
|
- test/test_framework.rb
|
128
130
|
- test/test_reporters.rb
|
129
131
|
- test/test_runners.rb
|
132
|
+
- turn.gemspec
|
130
133
|
has_rdoc: true
|
131
134
|
homepage: http://gemcutter.org/gems/turn
|
132
135
|
licenses: []
|
@@ -157,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
160
|
version: "0"
|
158
161
|
requirements: []
|
159
162
|
|
160
|
-
rubyforge_project:
|
163
|
+
rubyforge_project: turn
|
161
164
|
rubygems_version: 1.3.7
|
162
165
|
signing_key:
|
163
166
|
specification_version: 3
|