Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/shakacode_demo_common/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ lib/bundler/man
pkg
rdoc
spec/reports
spec/examples.txt
test/tmp
test/version_tmp
tmp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,8 @@ def stop
def server_responding?
url = "http://localhost:#{@port}"
response = Net::HTTP.get_response(URI(url))
response.code.to_i < 500
# Accept 200-399 (success and redirects), reject 404 and 5xx
(200..399).cover?(response.code.to_i)
rescue Errno::ECONNREFUSED, Errno::EADDRNOTAVAIL, SocketError
false
end
Expand All @@ -170,8 +171,9 @@ def send_term_signal
# Fall back to killing just the main process
safe_kill_process('TERM', @server_pid)
end
rescue Errno::ESRCH, Errno::EPERM
rescue Errno::ESRCH, Errno::EPERM => e
# Process group doesn't exist or permission denied, try single process
puts "Warning: Failed to kill process group #{@server_pgid}: #{e.message}, trying single process"
safe_kill_process('TERM', @server_pid)
end

Expand All @@ -182,7 +184,8 @@ def send_kill_signal
else
safe_kill_process('KILL', @server_pid)
end
rescue Errno::ESRCH, Errno::EPERM
rescue Errno::ESRCH, Errno::EPERM => e
puts "Warning: Failed to kill process group #{@server_pgid}: #{e.message}, trying single process"
safe_kill_process('KILL', @server_pid)
end

Expand Down
31 changes: 0 additions & 31 deletions packages/shakacode_demo_common/spec/examples.txt

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,15 @@
allow(Process).to receive(:kill).and_raise(Errno::ESRCH)
expect { server.stop }.not_to raise_error
end

context 'when EPERM is raised' do
it 'logs warning and falls back to single process' do
allow(Process).to receive(:kill).with('TERM', -12345).and_raise(Errno::EPERM)
expect(server).to receive(:puts).with(/Warning: Failed to kill process group/)
expect(Process).to receive(:kill).with('TERM', 12345).and_raise(StandardError)
server.stop
end
end
end

context 'when server is running without process group' do
Expand Down Expand Up @@ -250,11 +259,16 @@
expect(server.send(:server_responding?)).to be true
end

it 'returns true for client errors (4xx)' do
allow(response).to receive(:code).and_return('404')
it 'returns true for redirects (3xx)' do
allow(response).to receive(:code).and_return('302')
expect(server.send(:server_responding?)).to be true
end

it 'returns false for client errors (4xx)' do
allow(response).to receive(:code).and_return('404')
expect(server.send(:server_responding?)).to be false
end

it 'returns false for server errors (5xx)' do
allow(response).to receive(:code).and_return('500')
expect(server.send(:server_responding?)).to be false
Expand Down