TwP-turn 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,8 @@
1
+ module Turn
2
+ require 'turn/runners/isorunner'
3
+
4
+ class SoloRunner < IsoRunner
5
+ end
6
+
7
+ end
8
+
@@ -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
+
@@ -0,0 +1,15 @@
1
+ require 'test/unit'
2
+ #require 'turn'
3
+
4
+ class TC_Example < Test::Unit::TestCase
5
+
6
+ def test_example_pass
7
+ assert_equal(4,4)
8
+ end
9
+
10
+ def test_example_fail
11
+ assert_equal(2,3)
12
+ end
13
+
14
+ end
15
+
@@ -0,0 +1,15 @@
1
+ require 'test/unit'
2
+ require 'turn'
3
+
4
+ class TC_Sample < Test::Unit::TestCase
5
+
6
+ def test_sample_pass
7
+ assert_equal(1,1)
8
+ end
9
+
10
+ def test_sample_fail
11
+ assert_equal(1,2)
12
+ end
13
+
14
+ end
15
+
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