class ParallelSplitTest::CommandLine

Public Class Methods

new(args) click to toggle source
Calls superclass method
# File lib/parallel_split_test/command_line.rb, line 9
def initialize(args)
  @args = args
  super
end

Public Instance Methods

run(err, out) click to toggle source
Calls superclass method
# File lib/parallel_split_test/command_line.rb, line 14
def run(err, out)
  no_summary = @args.delete('--no-summary')
  no_merge = @args.delete('--no-merge')

  @options = RSpec::Core::ConfigurationOptions.new(@args)

  processes = ParallelSplitTest.choose_number_of_processes
  out.puts "Running examples in #{processes} processes"

  results = Parallel.in_processes(processes) do |process_number|
    ParallelSplitTest.example_counter = 0
    ParallelSplitTest.process_number = process_number
    set_test_env_number(process_number)
    modify_out_file_in_args(process_number) if out_file
    out = OutputRecorder.new(out)
    [super(err, out), out.recorded]
  end

  combine_out_files if out_file unless no_merge

  reprint_result_lines(out, results.map(&:last)) unless no_summary
  results.map(&:first).max # combine exit status
end

Private Instance Methods

combine_out_files() click to toggle source
# File lib/parallel_split_test/command_line.rb, line 70
def combine_out_files
  File.open(out_file, "w") do |f|
    Dir["#{out_file_parent_dir}/#{out_file_basename}.*#{File.extname(out_file)}"].each do |file|
      f.write File.read(file)
      File.delete(file)
    end
  end
end
modify_out_file_in_args(process_number) click to toggle source

modify + reparse args to unify output

# File lib/parallel_split_test/command_line.rb, line 41
def modify_out_file_in_args(process_number)
  @args[out_file_position] = "#{out_file_parent_dir}/#{out_file_basename}.#{process_number}#{File.extname(out_file)}"
  @options = RSpec::Core::ConfigurationOptions.new(@args)
end
out_file() click to toggle source
# File lib/parallel_split_test/command_line.rb, line 50
def out_file
  @out_file ||= @args[out_file_position] if out_file_position
end
out_file_basename() click to toggle source
# File lib/parallel_split_test/command_line.rb, line 58
def out_file_basename
  @out_file_basename ||= File.basename(out_file, File.extname(out_file))
end
out_file_parent_dir() click to toggle source
# File lib/parallel_split_test/command_line.rb, line 54
def out_file_parent_dir
  @out_file_parent_dir ||= File.expand_path("#{out_file}/../.")
end
out_file_position() click to toggle source
# File lib/parallel_split_test/command_line.rb, line 62
def out_file_position
  @out_file_position ||= begin
    if out_position = @args.index { |i| ["-o", "--out"].include?(i) }
      out_position + 1
    end
  end
end
reprint_result_lines(out, printed_outputs) click to toggle source
# File lib/parallel_split_test/command_line.rb, line 79
def reprint_result_lines(out, printed_outputs)
  out.puts
  out.puts "Summary:"
  out.puts printed_outputs.map{|o| o[/.*\d+ failure.*/] }.join("\n")
end
set_test_env_number(process_number) click to toggle source
# File lib/parallel_split_test/command_line.rb, line 46
def set_test_env_number(process_number)
  ENV['TEST_ENV_NUMBER'] = (process_number == 0 ? '' : (process_number + 1).to_s)
end