2011/9/7 Charles Oliver Nutter <headius / headius.com>: > I'll jump in with some context from the JRuby perspective. > > JRuby runs more tests/suites than any other Ruby implementation. We > run the old Rubicon tests...MRI's tests...RubySpec...ruby_test...old > minirunit tests from JRuby's past...even BFTS until a year ago or so. > We are very sensitive to the issues of dealing with many test suites. > > RubySpec is by far the easiest and cleanest to: > > * use > * modify > * filter for things we don't pass yet (mspec's "tags" are > beautiful...Brian Ford did an amazing job putting mspec together) > * understand > > No other test suite even comes close to the ease of use and utility of > RubySpec today. Because of that, we have actively (but slowly) been > trying to transition to using only RubySpec for all our testing, and > as Ruby behavioral bugs are reported we add them to RubySpec. I don't think RubySpec (RSpec syntax) is beautiful. I want to write assertion with declarative. For example I can't find which is the expectation 4 or 5. Fixnum#div coerces self and the given argument to Floats and returns self divided by other as Fixnum FAILED Expected 4 to equal 5 > There are many reasons why tests that live solely in MRI's repository > are problematic for other implementations: > > * Impl-specific tests, as Matz mentioned > * Test harnesses specific to MRI's build > * Inability to easily filter specific tests to get a green partial run > * Nobody but MRI committers can contribute easily (!!!!!!!!!) > > A perfect example of this is the Psych library. JRuby implements Psych > atop SnakeYAML. We reuse all the Psych .rb files as-is and only > reimplement what would be in C. And we run the Psych tests, of which > we have a copy in the JRuby repository. > > But all the issues above affect us. Some of Psych's tests have minor > impl-specific details. They're test/unit based, so we need a test/unit > harness to run them. There's no way to filter out any impl-specific, > unsupported, or undefined behavior tests. And there's no way for us to > add new tests other than submitting pull requests and praying. What you want to say seems MRI's test-all doesn't have implementation guards. But minitest has `skip` and we use it for platform dependent tests. People can request test-all to add such skips but I didn't see such request. -- NARUSE, Yui naruse / airemix.jp>