summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog14
-rw-r--r--test/socket/test_socket.rb19
-rw-r--r--test/socket/test_tcp.rb25
-rw-r--r--test/socket/test_udp.rb32
4 files changed, 90 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 903ad46ca9..efceb883e4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+Mon Dec 6 17:15:17 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * test/socket/test_socket.rb (TestBasicSocket#test_setsockopt):
+ BasicSocket#setsockopt dumps core. [ruby-dev:25039]
+
+ * test/socket/test_tcp.rb (TestTCPSocket#test_recvfrom):
+ TCPSocket#recvfrom dumps core. [ruby-dev:24705]
+
+ * test/socket/test_udp.rb (TestUDPSocket#test_connect):
+ UDPSocket#connect dumps core. [ruby-dev:25045]
+
+ * test/socket/test_udp.rb (TestUDPSocket#test_bind):
+ UDPSocket#bind dumps core. [ruby-dev:25057]
+
Mon Dec 6 01:32:31 2004 GOTOU Yuuzou <gotoyuzo@notwork.org>
* ext/openssl/ossl_pkey_rsa.c (ossl_rsa_public_encrypt,
diff --git a/test/socket/test_socket.rb b/test/socket/test_socket.rb
new file mode 100644
index 0000000000..1d2ba04bfd
--- /dev/null
+++ b/test/socket/test_socket.rb
@@ -0,0 +1,19 @@
+begin
+ require "socket"
+ require "test/unit"
+rescue LoadError
+end
+
+class TestBasicSocket < Test::Unit::TestCase
+ def test_setsockopt # [ruby-dev:25039]
+ s = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
+ val = Object.new
+ class << val; self end.send(:define_method, :to_str) {
+ s.close
+ "eth0"
+ }
+ assert_raise(IOError) {
+ s.setsockopt(Socket::SOL_SOCKET, Socket::SO_BINDTODEVICE, val)
+ }
+ end
+end if defined?(Socket)
diff --git a/test/socket/test_tcp.rb b/test/socket/test_tcp.rb
new file mode 100644
index 0000000000..9320164096
--- /dev/null
+++ b/test/socket/test_tcp.rb
@@ -0,0 +1,25 @@
+begin
+ require "socket"
+ require "test/unit"
+rescue LoadError
+end
+
+
+class TestTCPSocket < Test::Unit::TestCase
+ def test_recvfrom # [ruby-dev:24705]
+ svr = TCPServer.new("localhost", 0)
+ Thread.new {
+ s = svr.accept
+ s.print("x"*0x1000)
+ }
+ addr = svr.addr
+ s = TCPSocket.open(addr[2], addr[1])
+ Thread.new {
+ Thread.pass
+ ObjectSpace.each_object(String) {|s|
+ s.replace "a" if s.length == 0x10000
+ }
+ }
+ assert_raise(SocketError) {s.recvfrom(0x10000)}
+ end
+end if defined?(TCPSocket)
diff --git a/test/socket/test_udp.rb b/test/socket/test_udp.rb
new file mode 100644
index 0000000000..07fd17a2cb
--- /dev/null
+++ b/test/socket/test_udp.rb
@@ -0,0 +1,32 @@
+begin
+ require "socket"
+ require "test/unit"
+rescue LoadError
+end
+
+
+class TestUDPSocket < Test::Unit::TestCase
+ def test_connect # [ruby-dev:25045]
+ s = UDPSocket.new
+ host = Object.new
+ class << host; self end.send(:define_method, :to_str) {
+ s.close
+ "127.0.0.1"
+ }
+ assert_raise(IOError) {
+ s.connect(host, 1)
+ }
+ end
+
+ def test_bind # [ruby-dev:25057]
+ s = UDPSocket.new
+ host = Object.new
+ class << host; self end.send(:define_method, :to_str) {
+ s.close
+ "127.0.0.1"
+ }
+ assert_raise(IOError) {
+ s.bind(host, 2000)
+ }
+ end
+end if defined?(UDPSocket)