Files
news.gitea.happylizard.me/bin/gems/eventmachine-1.2.7/tests/test_connection_write.rb
T
pizza2d1 4cee170d66
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 9s
Add bin and edit workflow
2026-09-16 13:11:16 -06:00

36 lines
1014 B
Ruby

require 'em_test_helper'
class TestConnectionWrite < Test::Unit::TestCase
# This test takes advantage of the fact that EM::_RunSelectOnce iterates over the connections twice:
# - once to determine which ones to call Write() on
# - and once to call Write() on each of them.
#
# But state may change in the meantime before Write() is finally called.
# And that is what we try to exploit to get Write() to be called when bWatchOnly is true, and bNotifyWritable is false,
# to cause an assertion failure.
module SimpleClient
def notify_writable
$conn2.notify_writable = false # Being naughty in callback
# If this doesn't crash anything, the test passed!
end
end
def test_with_naughty_callback
EM.run do
r1, _ = IO.pipe
r2, _ = IO.pipe
# Adding EM.watches
$conn1 = EM.watch(r1, SimpleClient)
$conn2 = EM.watch(r2, SimpleClient)
$conn1.notify_writable = true
$conn2.notify_writable = true
EM.stop
end
end
end