Skip to content

Conversation

@mbj
Copy link
Owner

@mbj mbj commented Dec 30, 2025

No description provided.

Fix CI failure on ARM64 runners where Bundler was resolving
unicode-emoji to 4.1.0 (which requires Ruby < 4.0) instead of
using the locked 4.2.0 version.
Ruby 4.0 changed the error message from "pathname contains null byte"
to "path name contains null byte" (with a space). Update the test to
accept both message formats for cross-version compatibility.
Minitest 6 renamed Runnable.run_one_method to Runnable.run.
Add version detection to support both old and new APIs.
@sferik
Copy link
Contributor

sferik commented Dec 31, 2025

I noticed a random test failure in your branch, despite it passing in my branch.

I believe this is due to the fact that, in Ruby 4.0, read_nonblock with exception: false can return :wait_readable even after select indicates readability (spurious wakeup). I believe we could catch the when :wait_readable case here and return false:

def with_nonblock_read(io:, max_bytes:)
io.binmode
chunk = io.read_nonblock(max_bytes, exception: false)
case chunk
when nil
@errors << EOFError
false
when String
yield chunk
else
fail "Unexpected nonblocking read return: #{chunk.inspect}"
end
end
# rubocop:enable Metrics/MethodLength
end

Let me know what you think of this approach and I can push up another commit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants