Hello all! I've been busy with JRuby 9k but I have some work I want to
do in MRI codebase.

Some of you may know that JRuby runs MRI's test suite in addition to
RubySpec, Rubicon, and our own suites.

I have a few changes I'm hoping to make to tests and I wanted to make
sure they sounded ok.

1. Refactoring some large test methods to be separate smaller methods.

JRuby excludes from our suite any test methods we don't currently
pass, so we can maintain a "high water mark" of compatibility.
Unfortunately, many methods we exclude only fail a single assertion,
and as a result we miss out on good assertions.

I would like to start refactoring some of these larger methods into
smaller test methods that test only a few things.

An example would be test_array.rb's test_permutation. The only
assertion that fails is the subprocess trying to permute a very large
array. Logically, that could go in a test_permutation_large_array and
be a separate test, because it's rather different than the previous
assertions because it's testing a failure case rather than a success
case.

Other cases in that method might warrant separate bodies, like
test_permutation_block, test_permutation_bug3708, and so on.

2. Adding "excludes" support to test/lib's test/unit

Up until MRI 2.2, JRuby used minitest-excludes to exclude failing
tests. This allows us to mask on a per-method basis using a simple
directory hierarchy that maps to the test classes.

https://github.com/jruby/jruby/tree/master/test/mri/excludes

With the changes to test/unit and minitest in 2.2 stdlib, we can no
longer use minitest-excludes. It is not compatible with minitest 5,
and the suite bundles its own testing frameworks now.

I added excludes support to JRuby's copy of MRI's test/lib. The code
is not particularly large, and it has let us again run the MRI suite
incrementally.

Here's a diff of our changes to test/lib:
https://gist.github.com/headius/84731230ede769fdce5d

Some changes are to disable MRI specific APIs, like those used for
leakchecker. I'd like to make those conditional in the suite.

The EINVAL change is covered by #10494.

The rest is the small amount of code needed for minitest-style
excludes to work. I'd like to incorporate it. It does not have any
effect on the suite if unused, but it would make merging MRI's tests
into JRuby simpler for us.

***

That's what I have for now. Sorry this is a bit long...feel free to
ask me to clarify anything.

- Charlie