Extended maintenance of Ruby versions 1.8.7 and 1.9.2 ended on July 31, 2014. Read more

In Files

  • test/unit/ui/fox/testrunner.rb

Test::Unit::UI::Fox::TestRunner

Runs a Test::Unit::TestSuite in a Fox UI. Obviously, this one requires you to have Fox (www.fox-toolkit.org/fox.html) and the Ruby Fox extension (fxruby.sourceforge.net/) installed.

Public Class Methods

new(suite, output_level = NORMAL) click to toggle source

Creates a new TestRunner for running the passed suite.

 
               # File test/unit/ui/fox/testrunner.rb, line 32
def initialize(suite, output_level = NORMAL)
  if (suite.respond_to?(:suite))
    @suite = suite.suite
  else
    @suite = suite
  end

  @result = nil
  @red = false
end
            

Public Instance Methods

add_fault(fault) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 97
def add_fault(fault)
  if ( ! @red )
    @test_progress_bar.barColor = RED_STYLE
    @red = true
  end
  item = FaultListItem.new(fault)
  @fault_list.appendItem(item)
end
            
attach_to_mediator() click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 61
def attach_to_mediator
  @mediator.add_listener(TestRunnerMediator::RESET, &method(:reset_ui))
  @mediator.add_listener(TestResult::FAULT, &method(:add_fault))
  @mediator.add_listener(TestResult::CHANGED, &method(:result_changed))
  @mediator.add_listener(TestRunnerMediator::STARTED, &method(:started))
  @mediator.add_listener(TestCase::STARTED, &method(:test_started))
  @mediator.add_listener(TestRunnerMediator::FINISHED, &method(:finished))
end
            
clear_fault() click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 114
def clear_fault
  raw_show_fault("")
end
            
create_application() click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 183
def create_application
  app = FXApp.new("TestRunner", "Test::Unit")
  app.init([])
  app
end
            
create_button(parent, text, action) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 207
def create_button(parent, text, action)
  FXButton.new(parent, text).connect(SEL_COMMAND, &action)
end
            
create_detail_panel(parent) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 239
def create_detail_panel(parent)
  FXHorizontalFrame.new(parent, LAYOUT_FILL_X | LAYOUT_FILL_Y | FRAME_SUNKEN | FRAME_THICK)
end
            
create_entry(parent) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 247
def create_entry(parent)
  entry = FXTextField.new(parent, 30, nil, 0, TEXTFIELD_NORMAL | LAYOUT_SIDE_BOTTOM | LAYOUT_FILL_X)
  entry.disable
  entry
end
            
create_fault_list(parent) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 227
def create_fault_list(parent)
  list = FXList.new(parent, 10, nil, 0, LIST_SINGLESELECT | LAYOUT_FILL_X) #, 0, 0, 0, 150)
  list.connect(SEL_COMMAND) do |sender, sel, ptr|
    if sender.retrieveItem(sender.currentItem).selected?
      show_fault(sender.retrieveItem(sender.currentItem).fault)
    else
      clear_fault
    end
  end
  list
end
            
create_info_panel(parent) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 215
def create_info_panel(parent)
  FXMatrix.new(parent, 1, MATRIX_BY_ROWS | LAYOUT_FILL_X)
end
            
create_label(parent, text) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 219
def create_label(parent, text)
  FXLabel.new(parent, text, nil, JUSTIFY_CENTER_X | LAYOUT_FILL_COLUMN)
end
            
create_list_panel(parent) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 223
def create_list_panel(parent)
  FXHorizontalFrame.new(parent, LAYOUT_FILL_X | FRAME_SUNKEN | FRAME_THICK)
end
            
create_main_panel(parent) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 197
def create_main_panel(parent)
  panel = FXVerticalFrame.new(parent, LAYOUT_FILL_X | LAYOUT_FILL_Y)
  panel.vSpacing = 10
  panel
end
            
create_progress_bar(parent) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 211
def create_progress_bar(parent)
  FXProgressBar.new(parent, nil, 0, PROGRESSBAR_NORMAL | LAYOUT_FILL_X)
end
            
create_suite_panel(parent) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 203
def create_suite_panel(parent)
  FXHorizontalFrame.new(parent, LAYOUT_SIDE_LEFT | LAYOUT_FILL_X)
end
            
create_text(parent) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 243
def create_text(parent)
  FXText.new(parent, nil, 0, TEXT_READONLY | LAYOUT_FILL_X | LAYOUT_FILL_Y)
end
            
create_tooltip(app) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 193
def create_tooltip(app)
  FXTooltip.new(app)
end
            
create_window(app) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 189
def create_window(app)
  FXMainWindow.new(app, "Test::Unit TestRunner", nil, nil, DECOR_ALL, 0, 0, 450)
end
            
finished(elapsed_time) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 140
def finished(elapsed_time)
  output_status("Finished in #{elapsed_time} seconds")
end
            
output_status(string) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 144
def output_status(string)
  @status_entry.text = string
  @status_entry.repaint
end
            
raw_show_fault(string) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 110
def raw_show_fault(string)
  @detail_text.setText(string)
end
            
reset_ui(count) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 83
def reset_ui(count)
  @test_progress_bar.barColor = GREEN_STYLE
  @test_progress_bar.total = count
  @test_progress_bar.progress = 0
  @red = false
  
  @test_count_label.text = "0"
  @assertion_count_label.text = "0"
  @failure_count_label.text = "0"
  @error_count_label.text = "0"
  
  @fault_list.clearItems
end
            
result_changed(result) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 118
def result_changed(result)
  @test_progress_bar.progress = result.run_count
  
  @test_count_label.text = result.run_count.to_s
  @assertion_count_label.text = result.assertion_count.to_s
  @failure_count_label.text = result.failure_count.to_s
  @error_count_label.text = result.error_count.to_s

   # repaint now!
   @info_panel.repaint
   @application.flush
end
            
setup_mediator() click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 52
def setup_mediator
  @mediator = TestRunnerMediator.new(@suite)
  suite_name = @suite.to_s
  if ( @suite.kind_of?(Module) )
    suite_name = @suite.name
  end
  @suite_name_entry.text = suite_name
end
            
setup_ui() click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 149
def setup_ui
  @application = create_application
  create_tooltip(@application)

  @window = create_window(@application)
  
  @status_entry = create_entry(@window)
  
  main_panel = create_main_panel(@window)
  
  suite_panel = create_suite_panel(main_panel)
  create_label(suite_panel, "Suite:")
  @suite_name_entry = create_entry(suite_panel)
  create_button(suite_panel, "&Run\tRun the current suite", proc { @mediator.run_suite })
  
  @test_progress_bar = create_progress_bar(main_panel)
  
  @info_panel = create_info_panel(main_panel)
  create_label(@info_panel, "Tests:")
  @test_count_label = create_label(@info_panel, "0")
  create_label(@info_panel, "Assertions:")
  @assertion_count_label = create_label(@info_panel, "0")
  create_label(@info_panel, "Failures:")
  @failure_count_label = create_label(@info_panel, "0")
  create_label(@info_panel, "Errors:")
  @error_count_label = create_label(@info_panel, "0")
  
  list_panel = create_list_panel(main_panel)
  @fault_list = create_fault_list(list_panel)
  
  detail_panel = create_detail_panel(main_panel)
  @detail_text = create_text(detail_panel)
end
            
show_fault(fault) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 106
def show_fault(fault)
  raw_show_fault(fault.long_display)
end
            
start() click to toggle source

Begins the test run.

 
               # File test/unit/ui/fox/testrunner.rb, line 44
def start
  setup_ui
  setup_mediator
  attach_to_mediator
  start_ui
  @result
end
            
start_ui() click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 70
def start_ui
  @application.create
  @window.show(PLACEMENT_SCREEN)
  @application.addTimeout(1) do
    @mediator.run_suite
  end
  @application.run
end
            
started(result) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 131
def started(result)
  @result = result
  output_status("Started...")
end
            
stop() click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 79
def stop
  @application.exit(0)
end
            
test_started(test_name) click to toggle source
 
               # File test/unit/ui/fox/testrunner.rb, line 136
def test_started(test_name)
  output_status("Running #{test_name}...")
end
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.

blog comments powered by Disqus