class ParallelTests

def self.parse_rake_args(args)

parallel:spec[:count, :pattern, :options]
def self.parse_rake_args(args)
  # order as given by user
  args = [args[:count], args[:pattern], args[:options]]
  # count given or empty ?
  # parallel:spec[2,models,options]
  # parallel:spec[,models,options]
  count = args.shift if args.first.to_s =~ /^\d*$/
  num_processes = count.to_i unless count.to_s.empty?
  num_processes ||= ENV['PARALLEL_TEST_PROCESSORS'].to_i if ENV['PARALLEL_TEST_PROCESSORS']
  num_processes ||= Parallel.processor_count
  pattern = args.shift
  options = args.shift
  [num_processes.to_i, pattern.to_s, options.to_s]
end