3
# Author:: Nathaniel Talbott.
4
# Copyright:: Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
5
# License:: Ruby license.
7
# Extended to support SharpDevelop
9
require 'test/unit/ui/testrunnermediator'
10
require 'test/unit/ui/testrunnerutilities'
11
require 'sdtestresultwriter'
12
require 'sdtestresult'
17
module SharpDevelopConsole
19
# Runs a Test::Unit::TestSuite on the console.
21
extend TestRunnerUtilities
23
# Creates a new TestRunner for running the passed
24
# suite. If quiet_mode is true, the output while
25
# running is limited to progress dots, errors and
26
# failures, and the final result. io specifies
27
# where runner output should go to; defaults to
29
def initialize(suite, output_level=NORMAL, io=STDOUT)
30
if (suite.respond_to?(:suite))
35
@output_level = output_level
37
@already_outputted = false
41
@test_result_writer = SharpDevelopTestResultWriter.new(resultsfile)
44
# Begins the test run.
53
@mediator = create_mediator(@suite)
54
suite_name = @suite.to_s
55
if ( @suite.kind_of?(Module) )
56
suite_name = @suite.name
58
output("Loaded suite #{suite_name}")
61
def create_mediator(suite)
62
return TestRunnerMediator.new(suite)
65
def attach_to_mediator
66
@mediator.add_listener(TestResult::FAULT, &method(:add_fault))
67
@mediator.add_listener(TestRunnerMediator::STARTED, &method(:started))
68
@mediator.add_listener(TestRunnerMediator::FINISHED, &method(:finished))
69
@mediator.add_listener(TestCase::STARTED, &method(:test_started))
70
@mediator.add_listener(TestCase::FINISHED, &method(:test_finished))
74
return @mediator.run_suite
78
@test_result.update_fault(fault)
80
output_single(fault.single_character_display, PROGRESS_ONLY)
81
@already_outputted = true
89
def finished(elapsed_time)
91
output("Finished in #{elapsed_time} seconds.")
92
@faults.each_with_index do |fault, index|
94
output("%3d) %s" % [index + 1, fault.long_display])
100
def test_started(name)
101
create_test_result(name)
102
output_single(name + ": ", VERBOSE)
105
def create_test_result(name)
106
@test_result = SharpDevelopTestResult.new(name)
109
def test_finished(name)
111
output_single(".", PROGRESS_ONLY) unless (@already_outputted)
113
@already_outputted = false
120
def output(something, level=NORMAL)
121
@io.puts(something) if (output?(level))
125
def output_single(something, level=NORMAL)
126
@io.write(something) if (output?(level))
131
level <= @output_level
134
def write_test_result()
135
@test_result_writer.write_test_result(@test_result)
144
Test::Unit::UI::SharpDevelopConsole::TestRunner.start_command_line_test