about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/mongrel.rb1
-rw-r--r--test/test_configurator.rb57
-rw-r--r--test/test_ws.rb28
-rw-r--r--test/testhelp.rb13
4 files changed, 63 insertions, 36 deletions
diff --git a/lib/mongrel.rb b/lib/mongrel.rb
index 28c0dc4..6dd3d1e 100644
--- a/lib/mongrel.rb
+++ b/lib/mongrel.rb
@@ -1007,5 +1007,4 @@ module Mongrel
     end
 
   end
-
 end
diff --git a/test/test_configurator.rb b/test/test_configurator.rb
index dbea1a7..fdc9921 100644
--- a/test/test_configurator.rb
+++ b/test/test_configurator.rb
@@ -19,6 +19,7 @@
 require 'test/unit'
 require 'mongrel'
 require 'net/http'
+require File.dirname(__FILE__) + "/testhelp.rb"
 
 $test_plugin_fired = 0
 
@@ -43,26 +44,30 @@ end
 class ConfiguratorTest < Test::Unit::TestCase
 
   def test_base_handler_config
-    config = Mongrel::Configurator.new :host => "localhost" do
-      listener :port => 4501 do
-        # 2 in front should run, but the sentinel shouldn't since dirhandler processes the request
-        uri "/", :handler => plugin("/handlers/testplugin")
-        uri "/", :handler => plugin("/handlers/testplugin")
-        uri "/", :handler => Mongrel::DirHandler.new(".")
-        uri "/", :handler => plugin("/handlers/testplugin")
-
-        uri "/test", :handler => plugin("/handlers/testplugin")
-        uri "/test", :handler => plugin("/handlers/testplugin")
-        uri "/test", :handler => Mongrel::DirHandler.new(".")
-        uri "/test", :handler => plugin("/handlers/testplugin")
-
-        debug "/"
-        setup_signals
-
-        run_config(File.dirname(__FILE__) + "/../test/mongrel.conf")
-        load_mime_map(File.dirname(__FILE__) + "/../examples/mime.yaml")
-
-        run
+    config = nil
+
+    redirect_test_io do
+      config = Mongrel::Configurator.new :host => "localhost" do
+        listener :port => 4501 do
+          # 2 in front should run, but the sentinel shouldn't since dirhandler processes the request
+          uri "/", :handler => plugin("/handlers/testplugin")
+          uri "/", :handler => plugin("/handlers/testplugin")
+          uri "/", :handler => Mongrel::DirHandler.new(".")
+          uri "/", :handler => plugin("/handlers/testplugin")
+
+          uri "/test", :handler => plugin("/handlers/testplugin")
+          uri "/test", :handler => plugin("/handlers/testplugin")
+          uri "/test", :handler => Mongrel::DirHandler.new(".")
+          uri "/test", :handler => plugin("/handlers/testplugin")
+
+          debug "/"
+          setup_signals
+
+          run_config(File.dirname(__FILE__) + "/../test/mongrel.conf")
+          load_mime_map(File.dirname(__FILE__) + "/../examples/mime.yaml")
+
+          run
+        end
       end
     end
 
@@ -77,12 +82,16 @@ class ConfiguratorTest < Test::Unit::TestCase
     assert res != nil, "Didn't get a response"
     assert $test_plugin_fired == 3, "Test filter plugin didn't run 3 times."
 
+    redirect_test_io do
+      res = Net::HTTP.get(URI.parse('http://localhost:4501/'))
 
-    res = Net::HTTP.get(URI.parse('http://localhost:4501/'))
-    assert res != nil, "Didn't get a response"
-    assert $test_plugin_fired == 6, "Test filter plugin didn't run 6 times."
+      assert res != nil, "Didn't get a response"
+      assert $test_plugin_fired == 6, "Test filter plugin didn't run 6 times."
+    end
 
-    config.stop
+    redirect_test_io do
+      config.stop
+    end
 
     assert_raise Errno::EBADF, Errno::ECONNREFUSED do
       res = Net::HTTP.get(URI.parse("http://localhost:4501/"))
diff --git a/test/test_ws.rb b/test/test_ws.rb
index daf78d6..4945e4e 100644
--- a/test/test_ws.rb
+++ b/test/test_ws.rb
@@ -88,24 +88,30 @@ class WebServerTest < Test::Unit::TestCase
   end
 
   def test_bad_client
-    do_test("GET /test HTTP/BAD", 3)
+    redirect_test_io do
+      do_test("GET /test HTTP/BAD", 3)
+    end
   end
 
   def test_header_is_too_long
-    long = "GET /test HTTP/1.1\r\n" + ("X-Big: stuff\r\n" * 15000) + "\r\n"
-    assert_raises Errno::ECONNRESET, Errno::EPIPE do
-      do_test(long, long.length/2)
+    redirect_test_io do
+      long = "GET /test HTTP/1.1\r\n" + ("X-Big: stuff\r\n" * 15000) + "\r\n"
+      assert_raises Errno::ECONNRESET, Errno::EPIPE do
+        do_test(long, long.length/2)
+      end
     end
   end
 
   def test_num_processors_overload
-    assert_raises Errno::ECONNRESET, Errno::EPIPE do
-      tests = [
-        Thread.new { do_test(@request, 1) },
-        Thread.new { do_test(@request, 10) },
-      ]
-
-      tests.each {|t| t.join}
+    redirect_test_io do
+      assert_raises Errno::ECONNRESET, Errno::EPIPE do
+        tests = [
+          Thread.new { do_test(@request, 1) },
+          Thread.new { do_test(@request, 10) },
+        ]
+
+        tests.each {|t| t.join}
+      end
     end
   end
 
diff --git a/test/testhelp.rb b/test/testhelp.rb
new file mode 100644
index 0000000..7c0989b
--- /dev/null
+++ b/test/testhelp.rb
@@ -0,0 +1,13 @@
+def redirect_test_io
+  orig_err = STDERR.dup
+  orig_out = STDOUT.dup
+  STDERR.reopen("test_stderr.log")
+  STDOUT.reopen("test_stdout.log")
+
+  begin
+    yield
+  ensure
+    STDERR.reopen(orig_err)
+    STDOUT.reopen(orig_out)
+  end
+end