Class: Test::Unit::UI::TestRunnerMediator

Inherits:
Object
  • Object
show all
Includes:
Test::Unit::Util::Observable
Defined in:
lib/test/unit/ui/testrunnermediator.rb

Overview

Provides an interface to write any given UI against, hopefully making it easy to write new UIs.

Constant Summary collapse

RESET =
name + "::RESET"
STARTED =
name + "::STARTED"
FINISHED =
name + "::FINISHED"

Constants included from Test::Unit::Util::Observable

Test::Unit::Util::Observable::NOTHING

Instance Method Summary collapse

Methods included from Test::Unit::Util::Observable

#add_listener, #notify_listeners, #remove_listener

Constructor Details

#initialize(suite) ⇒ TestRunnerMediator

Creates a new TestRunnerMediator initialized to run the passed suite.



26
27
28
# File 'lib/test/unit/ui/testrunnermediator.rb', line 26

def initialize(suite)
  @suite = suite
end

Instance Method Details

#run_suiteObject

Runs the suite the TestRunnerMediator was created with.



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/test/unit/ui/testrunnermediator.rb', line 32

def run_suite
  Unit.run = true
  begin_time = Time.now
  notify_listeners(RESET, @suite.size)
  result = create_result
  notify_listeners(STARTED, result)
  result_listener = result.add_listener(TestResult::CHANGED) do |updated_result|
    notify_listeners(TestResult::CHANGED, updated_result)
  end
  
  fault_listener = result.add_listener(TestResult::FAULT) do |fault|
    notify_listeners(TestResult::FAULT, fault)
  end
  
  @suite.run(result) do |channel, value|
    notify_listeners(channel, value)
  end
  
  result.remove_listener(TestResult::FAULT, fault_listener)
  result.remove_listener(TestResult::CHANGED, result_listener)
  end_time = Time.now
  elapsed_time = end_time - begin_time
  notify_listeners(FINISHED, elapsed_time) #"Finished in #{elapsed_time} seconds.")
  return result
end