about summary refs log tree commit homepage
path: root/test/test_server.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_server.rb')
-rw-r--r--test/test_server.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/test_server.rb b/test/test_server.rb
index 79e498d..934ae3e 100644
--- a/test/test_server.rb
+++ b/test/test_server.rb
@@ -559,4 +559,28 @@ class TestServer < Testcase
   ensure
     quit_wait(pid)
   end
+
+  def test_working_directory
+    err, cfg, host, port = @err, Yahns::Config.new, @srv.addr[3], @srv.addr[1]
+    ru = lambda { |_|
+      [ 200, {'Content-Length'=>Dir.pwd.size.to_s }, [Dir.pwd] ]
+    }
+    Dir.mktmpdir do |tmpdir|
+      begin
+        pid = mkserver(cfg) do
+          cfg.instance_eval do
+            working_directory tmpdir
+            GTL.synchronize { app(:rack, ru) { listen "#{host}:#{port}" } }
+            stderr_path err.path
+          end
+        end
+        refute_equal Dir.pwd, tmpdir
+        Net::HTTP.start(host, port) do |http|
+          assert_equal tmpdir, http.request(Net::HTTP::Get.new("/")).body
+        end
+      ensure
+        quit_wait(pid)
+      end
+    end
+  end
 end