about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2010-06-25 11:29:13 -0700
committerEric Wong <normalperson@yhbt.net>2010-06-25 11:36:05 -0700
commit00e04ecc9fda39fa77e2f7fd11834ea977ba9ee8 (patch)
treeca65a0c908da4a367a3f5ffa70a87c88a8d7c238
parentd9470b6358730fe9bef12cc9b7506e913ef91857 (diff)
downloadunicorn-00e04ecc9fda39fa77e2f7fd11834ea977ba9ee8.tar.gz
We do an extra check in the application dispatch to ensure
ENV['PWD'] is set correctly to match Dir.pwd (even if the
string path is different) as this is required for Capistrano
deployments.

These tests should now pass under OSX where /var is apparently
a symlink to /private/var.
-rw-r--r--test/exec/test_exec.rb29
1 files changed, 17 insertions, 12 deletions
diff --git a/test/exec/test_exec.rb b/test/exec/test_exec.rb
index 9830683..1d24ca3 100644
--- a/test/exec/test_exec.rb
+++ b/test/exec/test_exec.rb
@@ -54,6 +54,20 @@ before_fork do |server, worker|
 end
   EOS
 
+  WORKING_DIRECTORY_CHECK_RU = <<-EOS
+use Rack::ContentLength
+run lambda { |env|
+  pwd = ENV['PWD']
+  a = ::File.stat(pwd)
+  b = ::File.stat(Dir.pwd)
+  if (a.ino == b.ino && a.dev == b.dev)
+    [ 200, { 'Content-Type' => 'text/plain' }, [ pwd ] ]
+  else
+    [ 404, { 'Content-Type' => 'text/plain' }, [] ]
+  end
+}
+  EOS
+
   def setup
     @pwd = Dir.pwd
     @tmpfile = Tempfile.new('unicorn_exec_test')
@@ -87,10 +101,7 @@ end
     File.unlink(other.path)
     Dir.mkdir(other.path)
     File.open("config.ru", "wb") do |fp|
-      fp.syswrite <<EOF
-use Rack::ContentLength
-run proc { |env| [ 200, { 'Content-Type' => 'text/plain' }, [ Dir.pwd ] ] }
-EOF
+      fp.syswrite WORKING_DIRECTORY_CHECK_RU
     end
     FileUtils.cp("config.ru", other.path + "/config.ru")
     Dir.chdir(@tmpdir)
@@ -138,10 +149,7 @@ EOF
     File.unlink(other.path)
     Dir.mkdir(other.path)
     File.open("config.ru", "wb") do |fp|
-      fp.syswrite <<EOF
-use Rack::ContentLength
-run proc { |env| [ 200, { 'Content-Type' => 'text/plain' }, [ Dir.pwd ] ] }
-EOF
+      fp.syswrite WORKING_DIRECTORY_CHECK_RU
     end
     FileUtils.cp("config.ru", other.path + "/config.ru")
     tmp = Tempfile.new('unicorn.config')
@@ -177,10 +185,7 @@ EOF
     File.unlink(other.path)
     Dir.mkdir(other.path)
     File.open("config.ru", "wb") do |fp|
-      fp.syswrite <<EOF
-use Rack::ContentLength
-run proc { |env| [ 200, { 'Content-Type' => 'text/plain' }, [ Dir.pwd ] ] }
-EOF
+      fp.syswrite WORKING_DIRECTORY_CHECK_RU
     end
     FileUtils.cp("config.ru", other.path + "/config.ru")
     system('mkfifo', "#{other.path}/fifo")