turn 0.8.2 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,10 @@
1
+ rvm:
2
+ - 1.8.6
3
+ - 1.8.7 # (current default)
4
+ - 1.9.2
5
+ - rbx
6
+ - rbx-2.0
7
+ - ree
8
+ - jruby
9
+ - ruby-head
10
+
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source :rubygems
2
+
3
+ gem "ansi", ">= 1.2.2"
4
+
5
+ group :development do
6
+ gem "bones"', ">= 3.6.5"
7
+ gem "bones-get"', ">= 1.2.4"
8
+ end
9
+
@@ -1,5 +1,30 @@
1
+ == 0.8.3 / 2011-10-10
2
+ * Merge pull request #56 from codeinvain/master
3
+ * Merge pull request #52 from markburns/patch-2
4
+ * Merge pull request #51 from markburns/patch-1
5
+ * Merge pull request #50 from tpope/stdout_tty
6
+ * Switch COLORIZE to method for easier testing
7
+ * Don't show colors if stdout is not a tty
8
+ * Use global config.
9
+ * Autoload Test::Unit and MiniTest.
10
+ * Autorun uses Turn's runner classes.
11
+ * minitest changed Unit#run, set Unit.runner= if method exists
12
+ * Merge pull request #39 from dubek/fix_term_detection_for_ruby_19
13
+ * Merge pull request #38 from cameel/fix-minitest-run-monkeypatch-no-trace
14
+ * Merge pull request #36 from yalab/master
15
+ * Don't use ANSI codes on dumb terminals in Ruby 1.9
16
+ * Make Turn work with gems that monkey-patch MiniTest::Unit::TestCase.run()
17
+ * Fixed pretty_reporter to use 'trace' option.
18
+ * Fixed dot_reporter to use 'trace' option.
19
+ * Fixed outline_reporter to use 'trace' option.
20
+ * Add -t or --trace option for display all stacktrace.
21
+ * missing #skip! method in TestMethod
22
+ * Merge branch 'master' of github.com:TwP/turn
23
+ * use autoload to load MiniTests emulation of TestUnit
24
+ * do not use color if in a VIM session
25
+
1
26
  == 0.8.2 / 2011-03-31
2
- * Add version in code and cli option to diplay it.
27
+ * Add version in code and cli option to display it.
3
28
  * Fix for files lookup controller bug
4
29
  * Limit default test matching to *.rb files.
5
30
  * Show first line from the test file when showing stack traces [F. Morgan Whitney]
@@ -0,0 +1,35 @@
1
+ = Copyright Notices
2
+
3
+ == Turn
4
+
5
+ Copyright:: (c) 2006-2008 Tim Pease
6
+ License:: MIT License
7
+
8
+ See license/MIT-LICENSE.txt for license details.
9
+
10
+
11
+ == MiniTest
12
+
13
+ Copyright:: (c) Ryan Davis, Seattle.rb
14
+ License:: MIT License
15
+
16
+ See license/MIT-LICENSE.txt for license details.
17
+
18
+ Turn tightly couples with MiniTest which means in some cases
19
+ MiniTest code might be reused and modified so Turn will
20
+ interface with MiniTest effectively.
21
+
22
+
23
+ == TestUnit
24
+
25
+ Copyright:: (c) Nathaniel Talbott
26
+ License:: The Ruby License
27
+
28
+ This software is distributed under the same terms as ruby.
29
+
30
+ See license/RUBY-LICENSE.txt for detiails.
31
+
32
+ Turn tightly couples with TesUnit which means in some cases
33
+ TestUnit code might be reused and modified so Turn will
34
+ interface with TestUnit effectively.
35
+
@@ -1,8 +1,8 @@
1
- = TURN - Test::Unit Reporter (New)
1
+ # TURN - Test::Unit Reporter (New)
2
2
  by Tim Pease
3
3
  http://codeforpeople.rubyforge.org/turn
4
4
 
5
- == DESCRIPTION:
5
+ ## DESCRIPTION:
6
6
 
7
7
  TURN is a new way to view Test::Unit results. With longer running tests, it
8
8
  can be very frustrating to see a failure (....F...) and then have to wait till
@@ -14,40 +14,44 @@ If you have the 'ansi' gem installed, then TURN output will be displayed in
14
14
  wonderful technicolor (but only if your terminal supports ANSI color codes).
15
15
  Well, the only colors are green and red, but that is still color.
16
16
 
17
- == FEATURES:
17
+ <b>Interested in improving Turn?</b> Please read this[https://github.com/TwP/turn/wiki/Implementation].
18
+
19
+ ## FEATURES:
18
20
 
19
21
  General usage provides better test output. Here is some sample output:
20
22
 
21
- TestMyClass
22
- test_alt PASS
23
- test_alt_eq PASS
24
- test_bad FAIL
25
- ./test/test_my_class.rb:64:in `test_bad'
26
- <false> is not true.
27
- test_foo PASS
28
- test_foo_eq PASS
29
- TestYourClass
30
- test_method_a PASS
31
- test_method_b PASS
32
- test_method_c PASS
33
- ============================================================================
34
- pass: 7, fail: 1, error: 0
35
- total: 15 tests with 42 assertions in 0.018 seconds
36
- ============================================================================
23
+
24
+ TestMyClass
25
+ test_alt PASS
26
+ test_alt_eq PASS
27
+ test_bad FAIL
28
+ ./test/test_my_class.rb:64:in `test_bad'
29
+ <false> is not true.
30
+ test_foo PASS
31
+ test_foo_eq PASS
32
+ TestYourClass
33
+ test_method_a PASS
34
+ test_method_b PASS
35
+ test_method_c PASS
36
+ ============================================================================
37
+ pass: 7, fail: 1, error: 0
38
+ total: 15 tests with 42 assertions in 0.018 seconds
39
+ ============================================================================
40
+
37
41
 
38
42
  Turn also provides solo and cross test modes when run from the *turn* commandline
39
43
  application.
40
44
 
41
- == SYNOPSIS:
45
+ ## SYNOPSIS:
42
46
 
43
47
  Turn can be using from the command-line or via require. The command-line tool
44
48
  offers additional options for how one runs tests.
45
49
 
46
- === Command Line
50
+ ### Command Line
47
51
 
48
52
  You can use the *turn* executable in place of the *ruby* interpreter.
49
53
 
50
- turn -Ilib test/test_all.rb
54
+ $ turn -Ilib test/test_all.rb
51
55
 
52
56
  This will invoke the ruby interpreter and automatically require the turn
53
57
  formatting library. All command line arguments are passed "as is" to the
@@ -55,41 +59,41 @@ ruby interpreter.
55
59
 
56
60
  To use the solo runner.
57
61
 
58
- turn --solo -Ilib test/
62
+ $ turn --solo -Ilib test/
59
63
 
60
64
  This will run all tests in the test/ directory in a separate process.
61
65
  Likewise for the cross runner.
62
66
 
63
- turn --cross -Ilib test/
67
+ $ turn --cross -Ilib test/
64
68
 
65
69
  This will run every pairing of tests in a separate process.
66
70
 
67
- === Require
71
+ ### Require
68
72
 
69
73
  Simply require the TURN package from within your test suite.
70
74
 
71
- require 'turn'
75
+ $ require 'turn'
72
76
 
73
77
  This will configure Test::Unit to use TURN formatting for displaying test
74
78
  restuls. A better line to use, though, is the following:
75
79
 
76
- begin; require 'turn'; rescue LoadError; end
80
+ begin; require 'turn'; rescue LoadError; end
77
81
 
78
82
  When you distribute your code, the test suite can be run without requiring
79
83
  the end user to install the TURN package.
80
84
 
81
85
  For a Rails application, put the require line into the 'test/test_helper.rb'
82
- scipt. Now your Rails tests will use TURN formatting.
86
+ script. Now your Rails tests will use TURN formatting.
83
87
 
84
- == REQUIREMENTS:
88
+ ## REQUIREMENTS:
85
89
 
86
- * ansi 1.1+ (for colorized output and progressbar output mode)
90
+ * ansi 1.1+ (for colorized output and progress bar output mode)
87
91
 
88
- == INSTALL:
92
+ ## INSTALL:
89
93
 
90
94
  * sudo gem install turn
91
95
 
92
- == LICENSE:
96
+ ## LICENSE:
93
97
 
94
98
  MIT License
95
99
 
@@ -113,4 +117,3 @@ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
113
117
  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
114
118
  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
115
119
  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
116
-
@@ -1 +1 @@
1
- 0.8.2
1
+ 0.8.3
@@ -1,7 +1,9 @@
1
1
  require 'minitest/unit'
2
2
  require 'turn'
3
3
 
4
- MiniTest::Unit.use_natural_language_case_names = true
4
+ Turn.config do |c|
5
+ c.natural = true
6
+ end
5
7
 
6
8
  class SampleCase1 < MiniTest::Unit::TestCase
7
9
  def test_sample_pass1
@@ -15,7 +17,7 @@ class SampleCase1 < MiniTest::Unit::TestCase
15
17
  assert_equal(1,2)
16
18
  end
17
19
  def test_sample_fail2
18
- assert_include(1,[])
20
+ assert_includes(1,[])
19
21
  end
20
22
 
21
23
  def test_sample_error1
@@ -6,6 +6,8 @@ module Turn
6
6
  end
7
7
  end
8
8
 
9
+ require 'turn/autoload'
10
+
9
11
  unless defined?(Turn::Command)
10
12
  if Turn.minitest?
11
13
  require 'turn/autorun/minitest'
@@ -13,7 +15,5 @@ unless defined?(Turn::Command)
13
15
  else
14
16
  require 'turn/autorun/testunit'
15
17
  end
16
- #autoload :Test, 'turn/autorun/testunit'
17
- #autoload :MiniTest, 'turn/autorun/minitest'
18
18
  end
19
19
 
@@ -0,0 +1,6 @@
1
+ # This is a "dirty trick" to load `test/unit` or `minitest/unit` if sought.
2
+ # Eventually a way to handle this more robustly (without autoreload)
3
+ # should be worked out.
4
+ autoload "Test", 'test/unit'
5
+ autoload "MiniTest", 'minitest/unit'
6
+
@@ -1,173 +1,17 @@
1
+ require 'turn/autoload'
2
+
1
3
  require 'minitest/unit'
2
4
  require 'minitest/spec'
3
- #require 'rubygems'
4
- require 'ansi'
5
-
6
- class MiniTest::Unit
7
- include ANSI::Code
8
-
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
-
20
-
21
- def run(args = [])
22
- @verbose = true
23
-
24
- filter = if args.first =~ /^(-n|--name)$/ then
25
- args.shift
26
- arg = args.shift
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
35
- else
36
- /./ # anything - ^test_ already filtered by #tests
37
- end
38
-
39
- @@out.puts "Loaded suite #{$0.sub(/\.rb$/, '')}\nStarted"
40
-
41
- start = Time.now
42
- run_test_suites filter
43
-
44
- @@out.puts
45
- @@out.puts "Finished in #{'%.6f' % (Time.now - start)} seconds."
46
-
47
- @@out.puts
48
-
49
- @@out.print "%d tests, " % test_count
50
- @@out.print "%d assertions, " % assertion_count
51
- @@out.print red { "%d failures, " % failures }
52
- @@out.print yellow { "%d errors, " % errors }
53
- @@out.puts cyan { "%d skips" % skips}
54
-
55
- return failures + errors if @test_count > 0 # or return nil...
56
- end
57
-
58
- # Overwrite #run_test_suites so that it prints out reports
59
- # as errors are generated.
60
- def run_test_suites(filter = /./)
61
- @test_count, @assertion_count = 0, 0
62
- old_sync, @@out.sync = @@out.sync, true if @@out.respond_to? :sync=
63
- TestCase.test_suites.each do |suite|
64
- test_cases = suite.test_methods.grep(filter)
65
- if test_cases.size > 0
66
- @@out.print "\n#{suite}:\n"
67
- end
68
-
69
- test_cases.each do |test|
70
- inst = suite.new test
71
- inst._assertions = 0
72
-
73
- t = Time.now
74
-
75
- @broken = nil
76
-
77
- @@out.print(case inst.run(self)
78
- when :pass
79
- @broken = false
80
- green { pad_with_size "PASS" }
81
- when :error
82
- @broken = true
83
- yellow { pad_with_size "ERROR" }
84
- when :fail
85
- @broken = true
86
- red { pad_with_size "FAIL" }
87
- when :skip
88
- @broken = false
89
- cyan { pad_with_size "SKIP" }
90
- end)
91
-
92
-
93
- @@out.print MiniTest::Unit.use_natural_language_case_names? ?
94
- " #{test.gsub("test_", "").gsub(/_/, " ")}" : " #{test}"
95
- @@out.print " (%.2fs) " % (Time.now - t)
96
-
97
- if @broken
98
- @@out.puts
99
-
100
- report = @report.last
101
- @@out.puts pad(report[:message], 10)
102
- trace = MiniTest::filter_backtrace(report[:exception].backtrace).first
103
- @@out.print pad(trace, 10)
104
-
105
- @@out.puts
106
- end
107
-
108
- @@out.puts
109
- @test_count += 1
110
- @assertion_count += inst._assertions
111
- end
112
- end
113
- @@out.sync = old_sync if @@out.respond_to? :sync=
114
- [@test_count, @assertion_count]
115
- end
116
-
117
- def pad(str, size=PADDING_SIZE)
118
- " " * size + str
119
- end
120
-
121
- def pad_with_size(str)
122
- pad("%5s" % str)
123
- end
124
-
125
- # Overwrite #puke method so that is stores a hash
126
- # with :message and :exception keys.
127
- def puke(klass, meth, e)
128
- result = nil
129
- msg = case e
130
- when MiniTest::Skip
131
- @skips += 1
132
- result = :skip
133
- e.message
134
- when MiniTest::Assertion
135
- @failures += 1
136
- result = :fail
137
- e.message
138
- else
139
- @errors += 1
140
- result = :error
141
- "#{e.class}: #{e.message}\n"
142
- end
143
-
144
- @report << {:message => msg, :exception => e}
145
- result
146
- end
147
5
 
6
+ require 'turn/colorize'
7
+ require 'turn/controller'
8
+ require 'turn/runners/minirunner'
148
9
 
149
- class TestCase
150
- # Overwrite #run method so that is uses symbols
151
- # as return values rather than characters.
152
- def run(runner)
153
- result = :pass
154
- begin
155
- @passed = nil
156
- self.setup
157
- self.__send__ self.__name__
158
- @passed = true
159
- rescue Exception => e
160
- @passed = false
161
- result = runner.puke(self.class, self.__name__, e)
162
- ensure
163
- begin
164
- self.teardown
165
- rescue Exception => e
166
- result = runner.puke(self.class, self.__name__, e)
167
- end
168
- end
169
- result
170
- end
171
- end
10
+ if MiniTest::Unit.respond_to?(:runner=)
11
+ MiniTest::Unit.runner = Turn::MiniRunner.new
12
+ else
13
+ raise "MiniTest v#{MiniTest::Unit::VERSION} is out of date.\n" \
14
+ "`gem install minitest` and add `gem 'minitest' to you test helper."
15
+ #MiniTest::Unit = Turn::MiniRunner
172
16
  end
173
17