turn 0.8.1 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -14,7 +14,6 @@ Bones {
14
14
  url 'http://gemcutter.org/gems/turn'
15
15
  version File.read('Version.txt').strip
16
16
  ignore_file '.gitignore'
17
- rubyforge.name 'codeforpeople'
18
17
 
19
18
  exclude << '^work'
20
19
  rdoc.exclude << '^lib'
@@ -1 +1 @@
1
- 0.8.1
1
+ 0.8.2
@@ -1,6 +1,8 @@
1
1
  require 'minitest/unit'
2
2
  require 'turn'
3
3
 
4
+ MiniTest::Unit.use_natural_language_case_names = true
5
+
4
6
  class SampleCase1 < MiniTest::Unit::TestCase
5
7
  def test_sample_pass1
6
8
  assert_equal(1,1)
@@ -0,0 +1,17 @@
1
+ class FooTest < MiniTest::Unit::TestCase
2
+ def test_t1
3
+ assert true
4
+ end
5
+ end
6
+
7
+ class BarTest < MiniTest::Unit::TestCase
8
+ def test_t2
9
+ assert true
10
+ assert true
11
+ end
12
+ def test_t3
13
+ assert true
14
+ assert false
15
+ end
16
+ end
17
+
@@ -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 =~ /\/(.*)\// ? Regexp.new($1) : 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 " #{test}"
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 bar
39
- else ::ANSI::Code.red bar end
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(file) : file
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 << fault.location[0].to_s << "\n\t"
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 msg if COLORIZE
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
@@ -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
- @pattern = Regexp.new(pattern, Regexp::IGNORECASE)
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
 
@@ -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
- # File glob pattern of tests to run.
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
- # Files globs to specially exclude.
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
- #@reporter ||= OutlineReporter.new($stdout)
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 run(args = [])
57
- @verbose = true
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
- filter = if args.first =~ /^(-n|--name)$/ then
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
- #@@out.puts "Loaded suite #{$0.sub(/\.rb$/, '')}\nStarted"
67
+ if @turn_controller.matchcase
68
+ suites = suites.select{ |suite| @turn_controller.matchcase =~ suite.name }
69
+ end
68
70
 
69
- start = Time.now
71
+ result = suites.map { |suite| _run_suite(suite, type) }
70
72
 
71
- run_test_suites(filter)
73
+ @turn_logger.finish_suite(@turn_suite)
72
74
 
73
- return failures + errors if @test_count > 0 # or return nil...
75
+ return result
74
76
  end
75
77
 
76
- #
77
- def run_test_suites(filter = /./)
78
- @test_count, @assertion_count = 0, 0
79
- old_sync, @@out.sync = @@out.sync, true if @@out.respond_to? :sync=
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
- @turn_suite = Turn::TestSuite.new(@turn_suite_name)
82
- @turn_suite.size = ::MiniTest::Unit::TestCase.test_suites.size
83
- @turn_logger.start_suite(@turn_suite)
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
- ::MiniTest::Unit::TestCase.test_suites.each do |kase|
89
+ @turn_logger.start_case(@turn_case)
86
90
 
87
- test_cases = kase.test_methods.grep(filter)
91
+ header = "#{type}_suite_header"
92
+ puts send(header, suite) if respond_to? header
88
93
 
89
- @turn_case = @turn_suite.new_case(kase.name)
94
+ assertions = @turn_case.tests.map do |test|
95
+ @turn_test = test
96
+ @turn_logger.start_test(@turn_test)
90
97
 
91
- turn_cases = test_cases.map do |test|
92
- @turn_case.new_test(test)
93
- end
98
+ inst = suite.new(test.name) #method
99
+ inst._assertions = 0
94
100
 
95
- @turn_logger.start_case(@turn_case)
96
-
97
- turn_cases.each do |test|
98
- #methname, tcase = name.scan(%r/^([^\(]+)\(([^\)]+)\)/o).flatten!
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
- @turn_case.count_assertions = @assertion_count # for lack of a better appraoch
130
- @turn_logger.finish_case(@turn_case)
106
+
107
+ @turn_logger.finish_test(@turn_test)
108
+
109
+ inst._assertions
131
110
  end
132
- @turn_logger.finish_suite(@turn_suite)
133
- @@out.sync = old_sync if @@out.respond_to? :sync=
134
- [@test_count, @assertion_count]
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
- # Overwrite #puke method so that is stores a hash
138
- # with :message and :exception keys.
139
- def puke(klass, meth, e)
140
- result = nil
141
- msg = case e
142
- when ::MiniTest::Skip
143
- @skips += 1
144
- result = :skip
145
- e.message
146
- when ::MiniTest::Assertion
147
- @failures += 1
148
- result = :fail
149
- e.message
150
- else
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
- end
135
+ # To maintain compatibility with old versions of MiniTest.
136
+ if ::MiniTest::Unit::VERSION < '2.0'
161
137
 
162
- end
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
- class ::MiniTest::Unit::TestCase
165
- old_verbose, $VERBOSE = $VERBOSE, false
166
- # Overwrite #run method so that is uses symbols
167
- # as return values rather than characters.
168
- def run(runner)
169
- result = :pass
170
- begin
171
- @passed = nil
172
- self.setup
173
- self.__send__(self.__name__.to_s)
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
- result
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 = controller.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
- def t_case_finished(name)
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
 
@@ -0,0 +1,3 @@
1
+ module Turn
2
+ VERSION = "0.8.2"
3
+ end
@@ -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: 61
4
+ hash: 59
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 8
9
- - 1
10
- version: 0.8.1
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: 2010-09-10 00:00:00 -06:00
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: 31
45
+ hash: 23
46
46
  segments:
47
47
  - 1
48
48
  - 2
49
- - 0
50
- version: 1.2.0
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: 25
61
+ hash: 21
62
62
  segments:
63
63
  - 3
64
- - 4
65
- - 7
66
- version: 3.4.7
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: codeforpeople
163
+ rubyforge_project: turn
161
164
  rubygems_version: 1.3.7
162
165
  signing_key:
163
166
  specification_version: 3