Module: HostEnvironmentSimulatorHelper

Defined in:
lib/rubocop/rspec/host_environment_simulation_helper.rb

Overview

RuboCop can be run in contexts where unexpected other libraries are included, which may interfere with its normal behavior. In order to test those situations, it may be necessary to require another library for the duration of one spec

Instance Method Summary collapse

Instance Method Details

#in_its_own_process_with(*files) ⇒ Object


8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/rubocop/rspec/host_environment_simulation_helper.rb', line 8

def in_its_own_process_with(*files)
  if ::Process.respond_to?(:fork)
    pid = ::Process.fork do
      # Need to write coverage result under different name
      if defined?(SimpleCov)
        SimpleCov.command_name "rspec-fork-#{Process.pid}"
        SimpleCov.pid = Process.pid
      end

      files.each { |file| require file }
      yield
    end
    ::Process.wait(pid)

    # assert that the block did not fail
    expect($CHILD_STATUS).to be_success
  else
    warn 'Process.fork is not available.'
  end
end