turn 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -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
@@ -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
@@ -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
+
@@ -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
@@ -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.3.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
- test_files: []
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
- extra_rdoc_files:
41
- - README.txt
42
- executables:
43
- - turn
44
- extensions: []
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
- dependencies:
49
- - !ruby/object:Gem::Dependency
50
- name: hoe
51
- version_requirement:
52
- version_requirements: !ruby/object:Gem::Version::Requirement
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
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