Module: ParallelTests
- Defined in:
- lib/parallel_tests/railtie.rb,
lib/parallel_tests.rb,
lib/parallel_tests/cli.rb,
lib/parallel_tests/pids.rb,
lib/parallel_tests/tasks.rb,
lib/parallel_tests/grouper.rb,
lib/parallel_tests/version.rb,
lib/parallel_tests/gherkin/io.rb,
lib/parallel_tests/test/runner.rb,
lib/parallel_tests/rspec/runner.rb,
lib/parallel_tests/gherkin/runner.rb,
lib/parallel_tests/spinach/runner.rb,
lib/parallel_tests/cucumber/runner.rb,
lib/parallel_tests/gherkin/listener.rb,
lib/parallel_tests/rspec/logger_base.rb,
lib/parallel_tests/cucumber/scenarios.rb,
lib/parallel_tests/test/runtime_logger.rb,
lib/parallel_tests/gherkin/runtime_logger.rb,
lib/parallel_tests/cucumber/failures_logger.rb,
lib/parallel_tests/cucumber/features_with_steps.rb,
lib/parallel_tests/cucumber/scenario_line_logger.rb
Overview
Defined Under Namespace
Modules: Cucumber, Gherkin, RSpec, Spinach, Tasks, Test
Classes: CLI, Grouper, Pids, Railtie
Constant Summary
collapse
- WINDOWS =
(RbConfig::CONFIG['host_os'] =~ /cygwin|mswin|mingw|bccwin|wince|emx/)
- RUBY_BINARY =
File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'])
- VERSION =
'4.7.2'
Class Method Summary
collapse
Class Method Details
.bundler_enabled? ⇒ Boolean
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/parallel_tests.rb', line 52
def 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.exist?(filename)
previous = current
current = File.expand_path("..", current)
end
false
end
|
.delta ⇒ Object
97
98
99
100
101
|
# File 'lib/parallel_tests.rb', line 97
def delta
before = now.to_f
yield
now.to_f - before
end
|
.determine_number_of_processes(count) ⇒ Object
16
17
18
19
20
21
22
|
# File 'lib/parallel_tests.rb', line 16
def determine_number_of_processes(count)
[
count,
ENV["PARALLEL_TEST_PROCESSORS"],
Parallel.processor_count
].detect { |c| !c.to_s.strip.empty? }.to_i
end
|
.first_process? ⇒ Boolean
68
69
70
|
# File 'lib/parallel_tests.rb', line 68
def first_process?
ENV["TEST_ENV_NUMBER"].to_i <= 1
end
|
.last_process? ⇒ Boolean
72
73
74
75
76
77
78
|
# File 'lib/parallel_tests.rb', line 72
def last_process?
current_process_number = ENV['TEST_ENV_NUMBER']
total_processes = ENV['PARALLEL_TEST_GROUPS']
return true if current_process_number.nil? && total_processes.nil?
current_process_number = '1' if current_process_number.nil?
current_process_number == total_processes
end
|
.now ⇒ Object
93
94
95
|
# File 'lib/parallel_tests.rb', line 93
def now
Process.clock_gettime(Process::CLOCK_MONOTONIC)
end
|
.number_of_running_processes ⇒ Object
89
90
91
|
# File 'lib/parallel_tests.rb', line 89
def number_of_running_processes
pids.count
end
|
.pid_file_path ⇒ Object
41
42
43
|
# File 'lib/parallel_tests.rb', line 41
def pid_file_path
ENV.fetch('PARALLEL_PID_FILE')
end
|
.pids ⇒ Object
37
38
39
|
# File 'lib/parallel_tests.rb', line 37
def pids
@pids ||= Pids.new(pid_file_path)
end
|
.stop_all_processes ⇒ Object
45
46
47
48
49
|
# File 'lib/parallel_tests.rb', line 45
def stop_all_processes
pids.all.each { |pid| Process.kill(:INT, pid) }
rescue Errno::ESRCH, Errno::EPERM
end
|
.wait_for_other_processes_to_finish ⇒ Object
84
85
86
87
|
# File 'lib/parallel_tests.rb', line 84
def wait_for_other_processes_to_finish
return unless ENV["TEST_ENV_NUMBER"]
sleep 1 until number_of_running_processes <= 1
end
|
.with_pid_file ⇒ Object
24
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/parallel_tests.rb', line 24
def with_pid_file
Tempfile.open('parallel_tests-pidfile') do |f|
ENV['PARALLEL_PID_FILE'] = f.path
@pids = pids
yield
ensure
ENV['PARALLEL_PID_FILE'] = nil
@pids = nil
end
end
|
.with_ruby_binary(command) ⇒ Object
80
81
82
|
# File 'lib/parallel_tests.rb', line 80
def with_ruby_binary(command)
WINDOWS ? [RUBY_BINARY, '--', command] : [command]
end
|