Sha256: 0e7f47664bacf70d594d983d382c3f0ec25f1392e82c52f0c8123bbf78cbb874

Contents?: true

Size: 916 Bytes

Versions: 6

Compression:

Stored size: 916 Bytes

Contents

shared_examples_for "unix process" do
  it "handles ECHILD race condition where process dies between timeout and KILL" do
    process = sleeping_ruby

    process.stub!(:fork).and_return('fakepid')
    process.stub!(:send_term)
    process.stub!(:poll_for_exit).and_raise(ChildProcess::TimeoutError)
    process.stub!(:send_kill).and_raise(Errno::ECHILD)

    process.start
    lambda { process.stop }.should_not raise_error

    process.stub(:alive?).and_return(false)
  end

  it "handles ESRCH race condition where process dies between timeout and KILL" do
    process = sleeping_ruby

    process.stub!(:fork).and_return('fakepid')
    process.stub!(:send_term)
    process.stub!(:poll_for_exit).and_raise(ChildProcess::TimeoutError)
    process.stub!(:send_kill).and_raise(Errno::ESRCH)

    process.start
    lambda { process.stop }.should_not raise_error

    process.stub(:alive?).and_return(false)
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
childprocess-0.1.0 spec/unix_process_spec.rb
childprocess-0.0.9 spec/unix_process_spec.rb
childprocess-0.0.7 spec/unix_process_spec.rb
childprocess-0.0.6 spec/unix_process_spec.rb
childprocess-0.0.5 spec/unix_process_spec.rb
childprocess-0.0.4 spec/unix_process_spec.rb