Class: TurboTests::Runner
- Inherits:
- 
      Object
      
        - Object
- TurboTests::Runner
 
- Defined in:
- lib/turbo_tests/runner.rb
Class Method Summary collapse
Instance Method Summary collapse
- 
  
    
      #initialize(opts)  ⇒ Runner 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of Runner. 
- #run ⇒ Object
Constructor Details
#initialize(opts) ⇒ Runner
Returns a new instance of Runner.
| 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | # File 'lib/turbo_tests/runner.rb', line 44 def initialize(opts) @reporter = opts[:reporter] @files = opts[:files] @tags = opts[:tags] @runtime_log = opts[:runtime_log] || "tmp/turbo_rspec_runtime.log" @verbose = opts[:verbose] @fail_fast = opts[:fail_fast] @count = opts[:count] @seed = opts[:seed] @seed_used = opts[:seed_used] @load_time = 0 @load_count = 0 @failure_count = 0 @messages = Thread::Queue.new @threads = [] @error = false end | 
Class Method Details
.run(opts = {}) ⇒ Object
| 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | # File 'lib/turbo_tests/runner.rb', line 12 def self.run(opts = {}) files = opts[:files] formatters = opts[:formatters] = opts[:tags] start_time = opts.fetch(:start_time) { RSpec::Core::Time.now } runtime_log = opts.fetch(:runtime_log, nil) verbose = opts.fetch(:verbose, false) fail_fast = opts.fetch(:fail_fast, nil) count = opts.fetch(:count, nil) seed = opts.fetch(:seed) seed_used = !seed.nil? if verbose warn "VERBOSE" end reporter = Reporter.from_config(formatters, start_time, seed, seed_used) new( reporter: reporter, files: files, tags: , runtime_log: runtime_log, verbose: verbose, fail_fast: fail_fast, count: count, seed: seed, seed_used: seed_used, ).run end | 
Instance Method Details
#run ⇒ Object
| 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | # File 'lib/turbo_tests/runner.rb', line 64 def run @num_processes = [ ParallelTests.determine_number_of_processes(@count), ParallelTests::RSpec::Runner.tests_with_size(@files, {}).size ].min use_runtime_info = @files == ["spec"] group_opts = {} if use_runtime_info group_opts[:runtime_log] = @runtime_log else group_opts[:group_by] = :filesize end tests_in_groups = ParallelTests::RSpec::Runner.tests_in_groups( @files, @num_processes, **group_opts ) subprocess_opts = { record_runtime: use_runtime_info, } @reporter.report(tests_in_groups) do |reporter| wait_threads = tests_in_groups.map.with_index do |tests, process_id| start_regular_subprocess(tests, process_id + 1, **subprocess_opts) end @threads.each(&:join) if @reporter.failed_examples.empty? && wait_threads.map(&:value).all?(&:success?) 0 else # From https://github.com/serpapi/turbo_tests/pull/20/ wait_threads.map { |thread| thread.value.exitstatus }.max end end end |