class Grntest::TestSuitesRunner
Public Class Methods
new(tester)
click to toggle source
# File lib/grntest/test-suites-runner.rb, line 83 def initialize(tester) @tester = tester @reporter = create_reporter @result = TestSuitesResult.new end
Public Instance Methods
run(test_suites)
click to toggle source
# File lib/grntest/test-suites-runner.rb, line 89 def run(test_suites) succeeded = true @result.measure do succeeded = run_test_suites(test_suites) end @reporter.on_finish(@result) succeeded end
Private Instance Methods
create_reporter()
click to toggle source
# File lib/grntest/test-suites-runner.rb, line 143 def create_reporter Reporters.create_reporter(@tester) end
run_test_suites(test_suites)
click to toggle source
# File lib/grntest/test-suites-runner.rb, line 101 def run_test_suites(test_suites) queue = Queue.new test_suites.each do |suite_name, test_script_paths| next unless @tester.target_test_suite?(suite_name) test_script_paths.each do |test_script_path| test_name = test_script_path.basename(".*").to_s next unless @tester.target_test?(test_name) queue << [suite_name, test_script_path, test_name] @result.n_total_tests += 1 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 @result.workers = workers @reporter.on_start(@result) succeeded = true worker_threads = [] @tester.n_workers.times do |i| worker = workers[i] worker_threads << Thread.new do succeeded = false unless worker.run(queue) end end begin worker_threads.each(&:join) rescue Interrupt workers.each do |worker| worker.interrupt end end succeeded end