turn 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/History.txt +20 -0
- data/Manifest.txt +29 -0
- data/README.txt +101 -29
- data/Rakefile +24 -0
- data/Release.txt +29 -0
- data/VERSION +1 -0
- data/bin/turn +1 -11
- data/lib/turn.rb +7 -28
- data/lib/turn/colorize.rb +29 -0
- data/lib/turn/command.rb +159 -0
- data/lib/turn/components/case.rb +98 -0
- data/lib/turn/components/method.rb +32 -0
- data/lib/turn/components/suite.rb +82 -0
- data/lib/turn/controller.rb +146 -0
- data/lib/turn/reporter.rb +56 -0
- data/lib/turn/reporters/dot_reporter.rb +78 -0
- data/lib/turn/reporters/marshal_reporter.rb +64 -0
- data/lib/turn/reporters/outline_reporter.rb +85 -0
- data/lib/turn/reporters/progress_reporter.rb +117 -0
- data/lib/turn/runners/crossrunner.rb +40 -0
- data/lib/turn/runners/isorunner.rb +129 -0
- data/lib/turn/runners/loadrunner.rb +48 -0
- data/lib/turn/runners/solorunner.rb +8 -0
- data/lib/turn/runners/testrunner.rb +154 -0
- data/tasks/ann.rake +80 -0
- data/tasks/bones.rake +20 -0
- data/tasks/gem.rake +192 -0
- data/tasks/git.rake +40 -0
- data/tasks/manifest.rake +48 -0
- data/tasks/notes.rake +27 -0
- data/tasks/post_load.rake +39 -0
- data/tasks/rdoc.rake +50 -0
- data/tasks/rubyforge.rake +55 -0
- data/tasks/setup.rb +279 -0
- data/tasks/spec.rake +54 -0
- data/tasks/svn.rake +47 -0
- data/tasks/test.rake +40 -0
- data/test/test_example.rb +15 -0
- data/test/test_sample.rb +15 -0
- data/work/quicktest.rb +42 -0
- data/work/turn.rb +119 -0
- metadata +93 -42
data/tasks/spec.rake
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
|
2
|
+
if HAVE_SPEC_RAKE_SPECTASK and not PROJ.spec.files.to_a.empty?
|
3
|
+
require 'spec/rake/verify_rcov'
|
4
|
+
|
5
|
+
namespace :spec do
|
6
|
+
|
7
|
+
desc 'Run all specs with basic output'
|
8
|
+
Spec::Rake::SpecTask.new(:run) do |t|
|
9
|
+
t.ruby_opts = PROJ.ruby_opts
|
10
|
+
t.spec_opts = PROJ.spec.opts
|
11
|
+
t.spec_files = PROJ.spec.files
|
12
|
+
t.libs += PROJ.libs
|
13
|
+
end
|
14
|
+
|
15
|
+
desc 'Run all specs with text output'
|
16
|
+
Spec::Rake::SpecTask.new(:specdoc) do |t|
|
17
|
+
t.ruby_opts = PROJ.ruby_opts
|
18
|
+
t.spec_opts = PROJ.spec.opts + ['--format', 'specdoc']
|
19
|
+
t.spec_files = PROJ.spec.files
|
20
|
+
t.libs += PROJ.libs
|
21
|
+
end
|
22
|
+
|
23
|
+
if HAVE_RCOV
|
24
|
+
desc 'Run all specs with RCov'
|
25
|
+
Spec::Rake::SpecTask.new(:rcov) do |t|
|
26
|
+
t.ruby_opts = PROJ.ruby_opts
|
27
|
+
t.spec_opts = PROJ.spec.opts
|
28
|
+
t.spec_files = PROJ.spec.files
|
29
|
+
t.libs += PROJ.libs
|
30
|
+
t.rcov = true
|
31
|
+
t.rcov_dir = PROJ.rcov.dir
|
32
|
+
t.rcov_opts = PROJ.rcov.opts + ['--exclude', 'spec']
|
33
|
+
end
|
34
|
+
|
35
|
+
RCov::VerifyTask.new(:verify) do |t|
|
36
|
+
t.threshold = PROJ.rcov.threshold
|
37
|
+
t.index_html = File.join(PROJ.rcov.dir, 'index.html')
|
38
|
+
t.require_exact_threshold = PROJ.rcov.threshold_exact
|
39
|
+
end
|
40
|
+
|
41
|
+
task :verify => :rcov
|
42
|
+
remove_desc_for_task %w(spec:clobber_rcov)
|
43
|
+
end
|
44
|
+
|
45
|
+
end # namespace :spec
|
46
|
+
|
47
|
+
desc 'Alias to spec:run'
|
48
|
+
task :spec => 'spec:run'
|
49
|
+
|
50
|
+
task :clobber => 'spec:clobber_rcov' if HAVE_RCOV
|
51
|
+
|
52
|
+
end # if HAVE_SPEC_RAKE_SPECTASK
|
53
|
+
|
54
|
+
# EOF
|
data/tasks/svn.rake
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
|
2
|
+
if HAVE_SVN
|
3
|
+
|
4
|
+
unless PROJ.svn.root
|
5
|
+
info = %x/svn info ./
|
6
|
+
m = %r/^Repository Root:\s+(.*)$/.match(info)
|
7
|
+
PROJ.svn.root = (m.nil? ? '' : m[1])
|
8
|
+
end
|
9
|
+
PROJ.svn.root = File.join(PROJ.svn.root, PROJ.svn.path) unless PROJ.svn.path.empty?
|
10
|
+
|
11
|
+
namespace :svn do
|
12
|
+
|
13
|
+
# A prerequisites task that all other tasks depend upon
|
14
|
+
task :prereqs
|
15
|
+
|
16
|
+
desc 'Show tags from the SVN repository'
|
17
|
+
task :show_tags => 'svn:prereqs' do |t|
|
18
|
+
tags = %x/svn list #{File.join(PROJ.svn.root, PROJ.svn.tags)}/
|
19
|
+
tags.gsub!(%r/\/$/, '')
|
20
|
+
tags = tags.split("\n").sort {|a,b| b <=> a}
|
21
|
+
puts tags
|
22
|
+
end
|
23
|
+
|
24
|
+
desc 'Create a new tag in the SVN repository'
|
25
|
+
task :create_tag => 'svn:prereqs' do |t|
|
26
|
+
v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
|
27
|
+
abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
|
28
|
+
|
29
|
+
svn = PROJ.svn
|
30
|
+
trunk = File.join(svn.root, svn.trunk)
|
31
|
+
tag = "%s-%s" % [PROJ.name, PROJ.version]
|
32
|
+
tag = File.join(svn.root, svn.tags, tag)
|
33
|
+
msg = "Creating tag for #{PROJ.name} version #{PROJ.version}"
|
34
|
+
|
35
|
+
puts "Creating SVN tag '#{tag}'"
|
36
|
+
unless system "svn cp -m '#{msg}' #{trunk} #{tag}"
|
37
|
+
abort "Tag creation failed"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end # namespace :svn
|
42
|
+
|
43
|
+
task 'gem:release' => 'svn:create_tag'
|
44
|
+
|
45
|
+
end # if PROJ.svn.path
|
46
|
+
|
47
|
+
# EOF
|
data/tasks/test.rake
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
|
2
|
+
if test(?e, PROJ.test.file) or not PROJ.test.files.to_a.empty?
|
3
|
+
require 'rake/testtask'
|
4
|
+
|
5
|
+
namespace :test do
|
6
|
+
|
7
|
+
Rake::TestTask.new(:run) do |t|
|
8
|
+
t.libs = PROJ.libs
|
9
|
+
t.test_files = if test(?f, PROJ.test.file) then [PROJ.test.file]
|
10
|
+
else PROJ.test.files end
|
11
|
+
t.ruby_opts += PROJ.ruby_opts
|
12
|
+
t.ruby_opts += PROJ.test.opts
|
13
|
+
end
|
14
|
+
|
15
|
+
if HAVE_RCOV
|
16
|
+
desc 'Run rcov on the unit tests'
|
17
|
+
task :rcov => :clobber_rcov do
|
18
|
+
opts = PROJ.rcov.opts.dup << '-o' << PROJ.rcov.dir
|
19
|
+
opts = opts.join(' ')
|
20
|
+
files = if test(?f, PROJ.test.file) then [PROJ.test.file]
|
21
|
+
else PROJ.test.files end
|
22
|
+
files = files.join(' ')
|
23
|
+
sh "#{RCOV} #{files} #{opts}"
|
24
|
+
end
|
25
|
+
|
26
|
+
task :clobber_rcov do
|
27
|
+
rm_r 'coverage' rescue nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end # namespace :test
|
32
|
+
|
33
|
+
desc 'Alias to test:run'
|
34
|
+
task :test => 'test:run'
|
35
|
+
|
36
|
+
task :clobber => 'test:clobber_rcov' if HAVE_RCOV
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
# EOF
|
data/test/test_sample.rb
ADDED
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
CHANGED
@@ -1,57 +1,108 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.4
|
3
|
-
specification_version: 1
|
4
2
|
name: turn
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2007-12-11 00:00:00 -07:00
|
8
|
-
summary: Test::Unit Reporter (New) -- new output format for Test::Unit
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: tim.pease@gmail.com
|
12
|
-
homepage:
|
13
|
-
rubyforge_project: codeforpeople
|
14
|
-
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. Sample output: TestMyClass test_alt PASS test_alt_eq PASS test_bad FAIL ./test/test_my_class.rb:64:in `test_bad' <false> is not true. test_foo PASS test_foo_eq PASS TestYourClass test_method_a PASS test_method_b PASS test_method_c PASS ============================================================================ pass: 7, fail: 1, error: 0 total: 15 tests with 42 assertions in 0.018 seconds ============================================================================"
|
15
|
-
autorequire:
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 0.4.0
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
7
|
- Tim Pease
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-11-27 00:00:00 -07:00
|
13
|
+
default_executable:
|
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.1.0
|
24
|
+
version:
|
25
|
+
description: "== DESCRIPTION:"
|
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
|
31
36
|
files:
|
37
|
+
- .gitignore
|
38
|
+
- History.txt
|
39
|
+
- Manifest.txt
|
32
40
|
- README.txt
|
41
|
+
- Rakefile
|
42
|
+
- Release.txt
|
43
|
+
- VERSION
|
33
44
|
- bin/turn
|
34
45
|
- lib/turn.rb
|
35
|
-
|
36
|
-
|
46
|
+
- lib/turn/colorize.rb
|
47
|
+
- lib/turn/command.rb
|
48
|
+
- lib/turn/components/case.rb
|
49
|
+
- lib/turn/components/method.rb
|
50
|
+
- lib/turn/components/suite.rb
|
51
|
+
- lib/turn/controller.rb
|
52
|
+
- lib/turn/reporter.rb
|
53
|
+
- lib/turn/reporters/dot_reporter.rb
|
54
|
+
- lib/turn/reporters/marshal_reporter.rb
|
55
|
+
- lib/turn/reporters/outline_reporter.rb
|
56
|
+
- lib/turn/reporters/progress_reporter.rb
|
57
|
+
- lib/turn/runners/crossrunner.rb
|
58
|
+
- lib/turn/runners/isorunner.rb
|
59
|
+
- lib/turn/runners/loadrunner.rb
|
60
|
+
- lib/turn/runners/solorunner.rb
|
61
|
+
- lib/turn/runners/testrunner.rb
|
62
|
+
- tasks/ann.rake
|
63
|
+
- tasks/bones.rake
|
64
|
+
- tasks/gem.rake
|
65
|
+
- tasks/git.rake
|
66
|
+
- tasks/manifest.rake
|
67
|
+
- tasks/notes.rake
|
68
|
+
- tasks/post_load.rake
|
69
|
+
- tasks/rdoc.rake
|
70
|
+
- tasks/rubyforge.rake
|
71
|
+
- tasks/setup.rb
|
72
|
+
- tasks/spec.rake
|
73
|
+
- tasks/svn.rake
|
74
|
+
- tasks/test.rake
|
75
|
+
- test/test_example.rb
|
76
|
+
- test/test_sample.rb
|
77
|
+
- work/quicktest.rb
|
78
|
+
- work/turn.rb
|
79
|
+
has_rdoc: true
|
80
|
+
homepage: http://codeforpeople.rubyforge.org/turn
|
81
|
+
post_install_message:
|
37
82
|
rdoc_options:
|
38
83
|
- --main
|
39
84
|
- README.txt
|
40
|
-
|
41
|
-
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
85
|
+
require_paths:
|
86
|
+
- lib
|
87
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: "0"
|
92
|
+
version:
|
93
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: "0"
|
98
|
+
version:
|
46
99
|
requirements: []
|
47
100
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
version: 1.3.0
|
57
|
-
version:
|
101
|
+
rubyforge_project: codeforpeople
|
102
|
+
rubygems_version: 1.3.1
|
103
|
+
signing_key:
|
104
|
+
specification_version: 2
|
105
|
+
summary: Test::Unit Reporter (New) -- new output format for Test::Unit
|
106
|
+
test_files:
|
107
|
+
- test/test_example.rb
|
108
|
+
- test/test_sample.rb
|