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.
@@ -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