ruby / ruby/net-imap

Add JRuby and TruffleRuby to CI

Open
#454 18 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

help wanted
Dominant language
Ruby
Stars
118
Forks
43
Avg merge
1d 23h
Merged PRs (30d)
26

Description

_I'd like to add CI for JRuby and TruffleRuby, but the last time I tried I got a bunch of errors (admittedly, I didn't spend much time trying to figure them out).

Ideally, we could fix the errors without significant changes, and net-imap could be fully functional under those implementations.

If the changes needed for full compatibility are significant, maybe we can just mark some tests as pending. That will at least serve as a warning of what's incompatible, and prevent new changes from inadvertently widening that gap (see for example #452).

Fixed by
  • (replaced) #470
  • #528
  • #529
Other related issues
net-imap issues/PRs
  • #473 (JRuby FrozenError doesn't use #inspect)
  • #477
  • #476
  • #478
  • #530
  • #531
  • #520
  • Don't wait for lock before closing the socket in #disconnect
JRuby issues/PRs
  • jruby/jruby#8829 - to fix Data subclasses
  • jruby/jruby#8830 - fixed the response parser tests
  • jruby/jruby#8832
  • ruby/json/issues/870
  • Struct inheritance issues: 002db9f58.
  • All (or nearly all) of the SSL connection tests are failing. Hopefully this only requires small tweaks to net-imap test code.
TruffleRuby issues/PRs:
  • oracle/truffleruby#3846
  • oracle/truffleruby#3847
  • oracle/truffleruby#3850
  • oracle/truffleruby#3855
  • oracle/truffleruby#3856
  • oracle/truffleruby#3858
  • oracle/truffleruby#3892
Misc
  • I either omitted or marked as pending everything that's currently failing.
  • TODO: diagnose deadlock on error (between get_tagged_response and receive_responses?)
  • Both JRuby and TruffleRuby still fail in various ways when inheriting from Data.
    • I temporarily added in a crazy feature-check to our Data polyfill. Rather than just check RUBY_ENGINE and RUBY_ENGINE_VERSION and defined?(::Data) and ::Data.respond_to?(:define), it tries to use all of the features that were causing tests to fail. If anything looks off, it prints a warning and falls back to the polyfill. I'm not going to merge this feature check. But it's in the branch. 😉
    • net-imap v0.6.0 will still be deleting DataLite.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review the response parser tests and SSL connection tests, then trace the interaction between get_tagged_response and receive_responses for the reported deadlock. Check the related JRuby and TruffleRuby issues before changing net-imap; done means CI runs both implementations with incompatibilities fixed or explicitly pending.

Written by the indexing model from the issue text.

Assessment

Tech stack
ruby
Domain
ci-cd, networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.