Module: ParallelTests

Defined in:
lib/parallel_tests/railtie.rb,
lib/parallel_tests.rb,
lib/parallel_tests/cli.rb,
lib/parallel_tests/tasks.rb,
lib/parallel_tests/grouper.rb,
lib/parallel_tests/version.rb,
lib/parallel_tests/cucumber/io.rb,
lib/parallel_tests/test/runner.rb,
lib/parallel_tests/rspec/runner.rb,
lib/parallel_tests/cucumber/runner.rb,
lib/parallel_tests/rspec/logger_base.rb,
lib/parallel_tests/test/runtime_logger.rb,
lib/parallel_tests/cucumber/runtime_logger.rb,
lib/parallel_tests/cucumber/failures_logger.rb,
lib/parallel_tests/cucumber/gherkin_listener.rb

Overview

rake tasks for Rails 3+

Defined Under Namespace

Modules: Cucumber, RSpec, Tasks, Test Classes: CLI, Grouper, Railtie

Constant Summary collapse

GREP_PROCESSES_COMMAND =
"ps -ef | grep [T]EST_ENV_NUMBER= 2>&1"
VERSION =
Version = '0.12.4'

Class Method Summary collapse

Class Method Details

.bundler_enabled?Boolean

copied from github.com/carlhuda/bundler Bundler::SharedHelpers#find_gemfile

Returns:

  • (Boolean)


20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/parallel_tests.rb', line 20

def self.bundler_enabled?
  return true if Object.const_defined?(:Bundler)

  previous = nil
  current = File.expand_path(Dir.pwd)

  until !File.directory?(current) || current == previous
    filename = File.join(current, "Gemfile")
    return true if File.exists?(filename)
    current, previous = File.expand_path("..", current), current
  end

  false
end

.determine_number_of_processes(count) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/parallel_tests.rb', line 11

def self.determine_number_of_processes(count)
  [
    count,
    ENV["PARALLEL_TEST_PROCESSORS"],
    Parallel.processor_count
  ].detect{|c| not c.to_s.strip.empty? }.to_i
end

.first_process?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/parallel_tests.rb', line 35

def self.first_process?
  !ENV["TEST_ENV_NUMBER"] || ENV["TEST_ENV_NUMBER"].to_i == 0
end

.nowObject

real time even if someone messed with timecop in tests



52
53
54
55
56
57
58
# File 'lib/parallel_tests.rb', line 52

def self.now
  if Time.respond_to?(:now_without_mock_time) # Timecop
    Time.now_without_mock_time
  else
    Time.now
  end
end

.number_of_running_processesObject

Fun fact: this includes the current process if it’s run via parallel_tests



45
46
47
48
49
# File 'lib/parallel_tests.rb', line 45

def self.number_of_running_processes
  result = `#{GREP_PROCESSES_COMMAND}`
  raise "Could not grep for processes -> #{result}" if result.strip != "" && !$?.success?
  result.split("\n").size
end

.wait_for_other_processes_to_finishObject



39
40
41
42
# File 'lib/parallel_tests.rb', line 39

def self.wait_for_other_processes_to_finish
  return unless ENV["TEST_ENV_NUMBER"]
  sleep 1 until number_of_running_processes <= 1
end