summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authork0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-11-20 02:16:30 +0000
committerk0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-11-20 02:16:30 +0000
commit59676f6d030ff06d6e577860150ed1aa3aa1046a (patch)
treef04c6cd892b9d21fde9db58f4d43e983cc2aa932
parent5187ea768f57315e61486122d688f1992d4cb21f (diff)
revert r65820 and retry assert_finish
From: MSP-Greg <greg.mpls@gmail.com> https://github.com/ruby/ruby/commit/5187ea768f57315e61486122d688f1992d4cb21f git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65821 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--bootstraptest/pending.rb8
-rwxr-xr-xbootstraptest/runner.rb6
-rw-r--r--bootstraptest/test_thread.rb6
3 files changed, 12 insertions, 8 deletions
diff --git a/bootstraptest/pending.rb b/bootstraptest/pending.rb
index fa4e04c..744c0ad 100644
--- a/bootstraptest/pending.rb
+++ b/bootstraptest/pending.rb
@@ -37,11 +37,3 @@ assert_normal_exit %q{
r.instance_eval { initialize r, r }
r.inspect
}
-
-# This test randomly fails on AppVeyor msys2 with:
-# test_thread.rb: A non-blocking socket operation could not be completed immediately. - read would block
-assert_finish 3, %{
- th = Thread.new {sleep 0.2}
- th.join(0.1)
- th.join
-}
diff --git a/bootstraptest/runner.rb b/bootstraptest/runner.rb
index a5d5d21..c2a3790 100755
--- a/bootstraptest/runner.rb
+++ b/bootstraptest/runner.rb
@@ -383,8 +383,14 @@ def assert_finish(timeout_seconds, testsrc, message = '')
end
if io.respond_to?(:read_nonblock)
if IO.select([io], nil, nil, diff)
+ tries = 0
begin
io.read_nonblock(1024)
+ rescue IO::WaitReadable
+ IO.select([io])
+ tries += 1
+ break if tries > 3
+ retry
rescue Errno::EAGAIN, EOFError
break
end while true
diff --git a/bootstraptest/test_thread.rb b/bootstraptest/test_thread.rb
index 2b549b9..d16295d 100644
--- a/bootstraptest/test_thread.rb
+++ b/bootstraptest/test_thread.rb
@@ -249,6 +249,12 @@ assert_equal 'ok', %{
}
assert_finish 3, %{
+ th = Thread.new {sleep 0.2}
+ th.join(0.1)
+ th.join
+}
+
+assert_finish 3, %{
require 'timeout'
th = Thread.new {sleep 0.2}
begin