[前][次][番号順一覧][スレッド一覧]

ruby-changes:7160

From: gotoyuzo <ko1@a...>
Date: Mon, 18 Aug 2008 02:33:48 +0900 (JST)
Subject: [ruby-changes:7160] Ruby:r18678 (trunk): * lib/webrick/cgi.rb (WEBrick::CGI::Socket#eof?): added lacked method.

gotoyuzo	2008-08-18 02:33:13 +0900 (Mon, 18 Aug 2008)

  New Revision: 18678

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=18678

  Log:
    * lib/webrick/cgi.rb (WEBrick::CGI::Socket#eof?): added lacked method.

  Modified files:
    trunk/ChangeLog
    trunk/lib/webrick/cgi.rb
    trunk/test/webrick/test_cgi.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 18677)
+++ ChangeLog	(revision 18678)
@@ -1,3 +1,7 @@
+Mon Aug 18 02:25:11 2008  GOTOU Yuuzou  <gotoyuzo@n...>
+
+	* lib/webrick/cgi.rb (WEBrick::CGI::Socket#eof?): added lacked method.
+
 Sun Aug 17 21:50:22 2008  Tanaka Akira  <akr@f...>
 
 	* io.c (prepare_getline_args): io.gets(10,nil) should cause TypeError.
Index: lib/webrick/cgi.rb
===================================================================
--- lib/webrick/cgi.rb	(revision 18677)
+++ lib/webrick/cgi.rb	(revision 18678)
@@ -207,6 +207,10 @@
       def each
         input.each{|line| yield(line) }
       end
+
+      def eof?
+        input.eof?
+      end
   
       def <<(data)
         @out_port << data
Index: test/webrick/test_cgi.rb
===================================================================
--- test/webrick/test_cgi.rb	(revision 18677)
+++ test/webrick/test_cgi.rb	(revision 18678)
@@ -3,9 +3,9 @@
 require "test/unit"
 
 class TestWEBrickCGI < Test::Unit::TestCase
-  def test_cgi
-    accepted = started = stopped = 0
-    requested0 = requested1 = 0
+  CRLF = "\r\n"
+
+  def start_cgi_server(&block)
     config = {
       :CGIInterpreter => TestWEBrick::RubyBin,
       :DocumentRoot => File.dirname(__FILE__),
@@ -22,6 +22,12 @@
       config[:CGIPathEnv] = ENV['PATH'] # runtime dll may not be in system dir.
     end
     TestWEBrick.start_httpserver(config){|server, addr, port|
+      block.call(server, addr, port)
+    }
+  end
+
+  def test_cgi
+    start_cgi_server{|server, addr, port|
       http = Net::HTTP.new(addr, port)
       req = Net::HTTP::Get.new("/webrick.cgi")
       http.request(req){|res| assert_equal("/webrick.cgi", res.body)}
@@ -75,4 +81,21 @@
       }
     }
   end
+
+  def test_bad_request
+    start_cgi_server{|server, addr, port|
+      sock = TCPSocket.new(addr, port)
+      begin
+        sock << "POST /webrick.cgi HTTP/1.0" << CRLF
+        sock << "Content-Type: application/x-www-form-urlencoded" << CRLF
+        sock << "Content-Length: 1024" << CRLF
+        sock << CRLF
+        sock << "a=1&a=2&b=x"
+        sock.close_write
+        assert_match(%r{\AHTTP/\d.\d 400 Bad Request}, sock.read)
+      ensure
+        sock.close
+      end
+    }
+  end
 end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]