diff options
Diffstat (limited to 'spec/rubyspec/library/socket/unixserver/accept_spec.rb')
-rw-r--r-- | spec/rubyspec/library/socket/unixserver/accept_spec.rb | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/spec/rubyspec/library/socket/unixserver/accept_spec.rb b/spec/rubyspec/library/socket/unixserver/accept_spec.rb index 15459f5043..90b22d7eb1 100644 --- a/spec/rubyspec/library/socket/unixserver/accept_spec.rb +++ b/spec/rubyspec/library/socket/unixserver/accept_spec.rb @@ -5,53 +5,50 @@ platform_is_not :windows do describe "UNIXServer#accept" do before :each do @path = SocketSpecs.socket_path + @server = UNIXServer.open(@path) end after :each do + @server.close if @server SocketSpecs.rm_socket @path end it "accepts what is written by the client" do - server = UNIXServer.open(@path) client = UNIXSocket.open(@path) client.send('hello', 0) - sock = server.accept - data, info = sock.recvfrom(5) + sock = @server.accept + begin + data, info = sock.recvfrom(5) - data.should == 'hello' - info.should_not be_empty - - server.close - client.close - sock.close + data.should == 'hello' + info.should_not be_empty + ensure + sock.close + client.close + end end it "can be interrupted by Thread#kill" do - server = UNIXServer.new(@path) t = Thread.new { - server.accept + @server.accept } Thread.pass while t.status and t.status != "sleep" # kill thread, ensure it dies in a reasonable amount of time t.kill - a = 1 - while a < 2000 - break unless t.alive? - Thread.pass - sleep 0.2 + a = 0 + while t.alive? and a < 5000 + sleep 0.001 a += 1 end - a.should < 2000 - server.close + a.should < 5000 end it "can be interrupted by Thread#raise" do - server = UNIXServer.new(@path) t = Thread.new { - server.accept + @server.accept } Thread.pass while t.status and t.status != "sleep" @@ -59,7 +56,6 @@ platform_is_not :windows do ex = Exception.new t.raise ex lambda { t.join }.should raise_error(Exception) - server.close end end end |