From 00e04ecc9fda39fa77e2f7fd11834ea977ba9ee8 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 25 Jun 2010 11:29:13 -0700 Subject: test-exec: prefer ENV['PWD'] in working_directory tests 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. --- test/exec/test_exec.rb | 29 +++++++++++++++++------------ 1 file 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 < '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 < '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 < '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") -- cgit v1.2.3-24-ge0c7