Kouhei Sutou
null+****@clear*****
Sat Aug 11 16:30:50 JST 2012
Kouhei Sutou 2012-08-11 16:30:50 +0900 (Sat, 11 Aug 2012) New Revision: c79a3a105c71502b0f6ad0529bd28ae8a90bbb10 https://github.com/groonga/grntest/commit/c79a3a105c71502b0f6ad0529bd28ae8a90bbb10 Log: Show progress line Modified files: lib/groonga/tester.rb Modified: lib/groonga/tester.rb (+41 -7) =================================================================== --- lib/groonga/tester.rb 2012-08-11 16:10:34 +0900 (f225c20) +++ lib/groonga/tester.rb 2012-08-11 16:30:50 +0900 (2f50257) @@ -231,6 +231,8 @@ module Groonga class Worker attr_reader :id, :tester, :test_suites_rusult, :reporter attr_reader :suite_name, :test_script_path, :status + attr_reader :n_tests, :n_passed_tests, :n_failed_tests + attr_reader :n_not_checked_tests, :elapsed_time def initialize(id, tester, test_suites_result, reporter) @id = id @tester = tester @@ -434,15 +436,16 @@ module Groonga queue << [suite_name, test_script_path] end end - @tester.n_workers.times do - queue << nil - end workers = [] @tester.n_workers.times do |i| workers << Worker.new(i, @tester, @result, @reporter) end - @reporter.start(workers.dup) + @reporter.start(workers.dup, queue.size) + + @tester.n_workers.times do + queue << nil + end succeeded = true worker_threads = [] @@ -1378,7 +1381,7 @@ EOF super end - def start(workers) + def start(workers, n_tests) end def start_worker(worker) @@ -1439,8 +1442,9 @@ EOF @workers = nil end - def start(workers) + def start(workers, n_tests) @workers = workers + @n_tests = n_tests end def start_worker(worker) @@ -1496,6 +1500,7 @@ EOF draw_status_line(worker) draw_test_line(worker) end + draw_progress_line end def draw_status_line(worker) @@ -1518,6 +1523,27 @@ EOF puts(justify(label, @term_width)) end + def draw_progress_line + n_done_tests =****@worke*****(&:n_tests).inject(&:+) + finished_test_ratio = n_done_tests.to_f / @n_tests + + start_mark = "|" + finish_mark = "|" + statistics = " [%3d%%]" % (finished_test_ratio * 100) + + progress_width = @term_width + progress_width -= start_mark.bytesize + progress_width -= finish_mark.bytesize + progress_width -= statistics.bytesize + if n_done_tests == @n_tests + progress = "=" * progress_width + else + progress = "=" * (progress_width * finished_test_ratio).ceil + ">" + progress = progress.ljust(progress_width) + end + puts("#{start_mark}#{progress}#{finish_mark}#{statistics}") + end + def redraw @mutex.synchronize do draw @@ -1540,7 +1566,15 @@ EOF end def n_using_lines - 2 * n_workers + n_worker_lines * n_workers + n_progress_lines + end + + def n_worker_lines + 2 + end + + def n_progress_lines + 1 end def n_workers -------------- next part -------------- HTML����������������������������...Download