summary refs log tree commit
path: root/test/spec_server.rb
diff options
context:
space:
mode:
authorJean Boussier <jean.boussier@gmail.com>2012-05-05 12:05:32 -0400
committerJames Tucker <jftucker@gmail.com>2012-05-12 18:48:27 -0700
commitb4d7b95a057e6d9379848d7695d9ac93d4f48144 (patch)
tree60869910410d95315d0ad614fc1577abf202ca83 /test/spec_server.rb
parentc582fb2c0db2c2ef9da1aab4b0a3a7a764faa819 (diff)
downloadrack-b4d7b95a057e6d9379848d7695d9ac93d4f48144.tar.gz
Check if the PID in pidfile is still running #371
Then abort or remove the pidfile
Diffstat (limited to 'test/spec_server.rb')
-rw-r--r--test/spec_server.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/spec_server.rb b/test/spec_server.rb
index a1a51d9f..bd61d622 100644
--- a/test/spec_server.rb
+++ b/test/spec_server.rb
@@ -71,4 +71,30 @@ describe Rack::Server do
     open(pidfile) { |f| f.read.should.eql $$.to_s }
   end
 
+  should "check pid file presence and running process" do
+    pidfile = Tempfile.open('pidfile') { |f| f.write($$); break f }.path
+    server = Rack::Server.new(:pid => pidfile)
+    server.send(:pidfile_process_status).should.eql :running
+  end
+
+  should "check pid file presence and dead process" do
+    dead_pid = `echo $$`.to_i
+    pidfile = Tempfile.open('pidfile') { |f| f.write(dead_pid); break f }.path
+    server = Rack::Server.new(:pid => pidfile)
+    server.send(:pidfile_process_status).should.eql :dead
+  end
+
+  should "check pid file presence and exited process" do
+    pidfile = Tempfile.open('pidfile') { |f| break f }.path
+    ::File.delete(pidfile)
+    server = Rack::Server.new(:pid => pidfile)
+    server.send(:pidfile_process_status).should.eql :exited
+  end
+
+  should "check pid file presence and not owned process" do
+    pidfile = Tempfile.open('pidfile') { |f| f.write(1); break f }.path
+    server = Rack::Server.new(:pid => pidfile)
+    server.send(:pidfile_process_status).should.eql :not_owned
+  end
+
 end