Class | Test::Unit::UI::GTK2::TestRunner |
In: |
lib/test/unit/ui/gtk2/testrunner.rb
|
Parent: | Object |
# File lib/test/unit/ui/gtk2/testrunner.rb, line 443 443: def initialize(suite, output_level = NORMAL) 444: if suite.respond_to?(:suite) then 445: @suite = suite.suite 446: else 447: @suite = suite 448: end 449: @result = nil 450: 451: @runner = Thread.current 452: @restart_signal = Class.new(Exception) 453: @viewer = Thread.start do 454: @runner.join rescue @runner.run 455: Gtk.main 456: end 457: @viewer.join rescue nil # wait deadlock to handshake 458: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 237 237: def progress_panel 238: lazy_initialize(:progress_panel) do 239: @progress_panel = Gtk::HBox.new(false, 10) 240: @progress_panel.border_width = 10 241: @progress_panel.pack_start(test_progress_bar, true, true, 0) 242: end 243: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 245 245: def run_button 246: lazy_initialize(:run_button) do 247: @run_button = Gtk::Button.new("Run") 248: end 249: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 435 435: def start 436: setup_mediator 437: setup_ui 438: attach_to_mediator 439: start_ui 440: @result 441: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 330 330: def test_finished(result) 331: test_progress_bar.fraction += 1.0 / @count 332: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 358 358: def add_fault(fault) 359: if not @red then 360: test_progress_bar.style = red_style 361: @red = true 362: end 363: fault_list.add_fault(fault) 364: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 177 177: def assertion_count_label 178: lazy_initialize(:assertion_count_label) do 179: @assertion_count_label = Gtk::Label.new("0") 180: @assertion_count_label.justify = Gtk::JUSTIFY_LEFT 181: end 182: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 413 413: def attach_to_mediator 414: run_button.signal_connect("clicked", nil) { run_test } 415: @mediator.add_listener(TestRunnerMediator::RESET, &method(:reset_ui)) 416: @mediator.add_listener(TestRunnerMediator::STARTED, &method(:started)) 417: @mediator.add_listener(TestRunnerMediator::FINISHED, &method(:finished)) 418: @mediator.add_listener(TestResult::FAULT, &method(:add_fault)) 419: @mediator.add_listener(TestResult::CHANGED, &method(:result_changed)) 420: @mediator.add_listener(TestCase::STARTED, &method(:test_started)) 421: @mediator.add_listener(TestCase::FINISHED, &method(:test_finished)) 422: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 342 342: def clear_fault 343: raw_show_fault("") 344: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 125 125: def detail_panel 126: lazy_initialize(:detail_panel) do 127: @detail_panel = Gtk::HBox.new 128: @detail_panel.border_width = 10 129: @detail_panel.pack_start(detail_scrolled_window, true, true, 0) 130: end 131: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 114 114: def detail_scrolled_window 115: lazy_initialize(:detail_scrolled_window) do 116: @detail_scrolled_window = Gtk::ScrolledWindow.new 117: @detail_scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC) 118: @detail_scrolled_window. 119: set_size_request(400, @detail_scrolled_window.allocation.height) 120: @detail_scrolled_window.add_with_viewport(outer_detail_sub_panel) 121: end 122: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 161 161: def error_count_label 162: lazy_initialize(:error_count_label) do 163: @error_count_label = Gtk::Label.new("0") 164: @error_count_label.justify = Gtk::JUSTIFY_LEFT 165: end 166: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 169 169: def failure_count_label 170: lazy_initialize(:failure_count_label) do 171: @failure_count_label = Gtk::Label.new("0") 172: @failure_count_label.justify = Gtk::JUSTIFY_LEFT 173: end 174: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 84 84: def fault_detail_label 85: lazy_initialize(:fault_detail_label) do 86: @fault_detail_label = EnhancedLabel.new("") 87: # style = Gtk::Style.new 88: # font = Gdk::Font. 89: # font_load("-*-Courier 10 Pitch-medium-r-normal--*-120-*-*-*-*-*-*") 90: # style.set_font(font) 91: # @fault_detail_label.style = style 92: @fault_detail_label.justify = Gtk::JUSTIFY_LEFT 93: @fault_detail_label.wrap = false 94: end 95: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 134 134: def fault_list 135: lazy_initialize(:fault_list) do 136: @fault_list = FaultList.new 137: end 138: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 313 313: def finished(elapsed_time) 314: test_progress_bar.fraction = 1.0 315: output_status("Finished in #{elapsed_time} seconds") 316: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 209 209: def green_style 210: lazy_initialize(:green_style) do 211: @green_style = Gtk::Style.new 212: @green_style.set_bg(Gtk::STATE_PRELIGHT, 0x0000, 0xFFFF, 0x0000) 213: end 214: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 193 193: def info_panel 194: lazy_initialize(:info_panel) do 195: @info_panel = Gtk::HBox.new(false, 0) 196: @info_panel.border_width = 10 197: @info_panel.pack_start(Gtk::Label.new("Runs:"), false, false, 0) 198: @info_panel.pack_start(run_count_label, true, false, 0) 199: @info_panel.pack_start(Gtk::Label.new("Assertions:"), false, false, 0) 200: @info_panel.pack_start(assertion_count_label, true, false, 0) 201: @info_panel.pack_start(Gtk::Label.new("Failures:"), false, false, 0) 202: @info_panel.pack_start(failure_count_label, true, false, 0) 203: @info_panel.pack_start(Gtk::Label.new("Errors:"), false, false, 0) 204: @info_panel.pack_start(error_count_label, true, false, 0) 205: end 206: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 98 98: def inner_detail_sub_panel 99: lazy_initialize(:inner_detail_sub_panel) do 100: @inner_detail_sub_panel = Gtk::HBox.new 101: @inner_detail_sub_panel.pack_start(fault_detail_label, false, false, 0) 102: end 103: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 59 59: def lazy_initialize(symbol) 60: if !instance_eval("defined?(@#{symbol})") then 61: yield 62: end 63: return instance_eval("@#{symbol}") 64: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 152 152: def list_panel 153: lazy_initialize(:list_panel) do 154: @list_panel = Gtk::HBox.new 155: @list_panel.border_width = 10 156: @list_panel.pack_start(list_scrolled_window, true, true, 0) 157: end 158: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 141 141: def list_scrolled_window 142: lazy_initialize(:list_scrolled_window) do 143: @list_scrolled_window = Gtk::ScrolledWindow.new 144: @list_scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC) 145: @list_scrolled_window. 146: set_size_request(@list_scrolled_window.allocation.width, 150) 147: @list_scrolled_window.add_with_viewport(fault_list) 148: end 149: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 270 270: def main_panel 271: lazy_initialize(:main_panel) do 272: @main_panel = Gtk::VBox.new(false, 0) 273: @main_panel.pack_start(suite_panel, false, false, 0) 274: @main_panel.pack_start(progress_panel, false, false, 0) 275: @main_panel.pack_start(info_panel, false, false, 0) 276: @main_panel.pack_start(list_panel, false, false, 0) 277: @main_panel.pack_start(detail_panel, true, true, 0) 278: @main_panel.pack_start(status_panel, false, false, 0) 279: end 280: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 283 283: def main_window 284: lazy_initialize(:main_window) do 285: @main_window = Gtk::Window.new(Gtk::Window::TOPLEVEL) 286: @main_window.set_title("Test::Unit TestRunner") 287: @main_window.set_default_size(800, 600) 288: @main_window.set_resizable(true) 289: @main_window.add(main_panel) 290: end 291: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 106 106: def outer_detail_sub_panel 107: lazy_initialize(:outer_detail_sub_panel) do 108: @outer_detail_sub_panel = Gtk::VBox.new 109: @outer_detail_sub_panel.pack_start(inner_detail_sub_panel, false, false, 0) 110: end 111: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 308 308: def output_status(string) 309: status_entry.set_text(string) 310: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 347 347: def raw_show_fault(string) 348: fault_detail_label.set_text(string) 349: outer_detail_sub_panel.queue_resize 350: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 217 217: def red_style 218: lazy_initialize(:red_style) do 219: @red_style = Gtk::Style.new 220: @red_style.set_bg(Gtk::STATE_PRELIGHT, 0xFFFF, 0x0000, 0x0000) 221: end 222: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 367 367: def reset_ui(count) 368: test_progress_bar.style = green_style 369: test_progress_bar.fraction = 0.0 370: @count = count + 1 371: @red = false 372: 373: run_count_label.set_text("0") 374: assertion_count_label.set_text("0") 375: failure_count_label.set_text("0") 376: error_count_label.set_text("0") 377: 378: fault_list.clear 379: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 334 334: def result_changed(result) 335: run_count_label.label = result.run_count.to_s 336: assertion_count_label.label = result.assertion_count.to_s 337: failure_count_label.label = result.failure_count.to_s 338: error_count_label.label = result.error_count.to_s 339: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 185 185: def run_count_label 186: lazy_initialize(:run_count_label) do 187: @run_count_label = Gtk::Label.new("0") 188: @run_count_label.justify = Gtk::JUSTIFY_LEFT 189: end 190: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 387 387: def run_test 388: @runner.raise(@restart_signal) 389: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 425 425: def setup_mediator 426: @mediator = TestRunnerMediator.new(@suite) 427: suite_name = @suite.to_s 428: if @suite.kind_of?(Module) then 429: suite_name = @suite.name 430: end 431: suite_name_entry.set_text(suite_name) 432: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 294 294: def setup_ui 295: main_window.signal_connect("destroy", nil) { stop } 296: main_window.show_all 297: fault_list.selection.signal_connect("changed", nil) do 298: |selection, data| 299: if selection.selected then 300: show_fault(fault_list.get_fault(selection.selected)) 301: else 302: clear_fault 303: end 304: end 305: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 353 353: def show_fault(fault) 354: raw_show_fault(fault.long_display) 355: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 392 392: def start_ui 393: @viewer.run 394: running = false 395: begin 396: loop do 397: if (running ^= true) 398: run_button.child.text = "Stop" 399: @mediator.run_suite 400: else 401: run_button.child.text = "Run" 402: @viewer.join 403: break 404: end 405: end 406: rescue @restart_signal 407: retry 408: rescue 409: end 410: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 324 324: def started(result) 325: @result = result 326: output_status("Started...") 327: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 67 67: def status_entry 68: lazy_initialize(:status_entry) do 69: @status_entry = Gtk::Entry.new 70: @status_entry.editable = false 71: end 72: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 75 75: def status_panel 76: lazy_initialize(:status_panel) do 77: @status_panel = Gtk::HBox.new 78: @status_panel.border_width = 10 79: @status_panel.pack_start(status_entry, true, true, 0) 80: end 81: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 251 251: def suite_name_entry 252: lazy_initialize(:suite_name_entry) do 253: @suite_name_entry = Gtk::Entry.new 254: @suite_name_entry.editable = false 255: end 256: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 259 259: def suite_panel 260: lazy_initialize(:suite_panel) do 261: @suite_panel = Gtk::HBox.new(false, 10) 262: @suite_panel.border_width = 10 263: @suite_panel.pack_start(Gtk::Label.new("Suite:"), false, false, 0) 264: @suite_panel.pack_start(suite_name_entry, true, true, 0) 265: @suite_panel.pack_start(run_button, false, false, 0) 266: end 267: end
# File lib/test/unit/ui/gtk2/testrunner.rb, line 225 225: def test_progress_bar 226: lazy_initialize(:test_progress_bar) { 227: @test_progress_bar = Gtk::ProgressBar.new 228: @test_progress_bar.fraction = 0.0 229: @test_progress_bar. 230: set_size_request(@test_progress_bar.allocation.width, 231: info_panel.size_request[1]) 232: @test_progress_bar.style = green_style 233: } 234: end