Software Requirements --------------------- Testing is done with JUnit (http://www.junit.org). To run the JUnit ant tasks, you also need the optional ant tasks jar file from http://jakarta.apache.org/site/binindex.html The default build.xml is setup to look for the JUnit jar file under $JRUBY_HOME/lib. The optional ant tasks should be put in $ANT_HOME/lib/optional.jar. Testing ------- Testing in jruby is based on two seperate unit test suites. The first and foremost is rubicon (http://rubyforge.org/projects/rubytests). This is the same test suite that ruby uses to verify the interpreter is running correctly. The second is our own unit tests via ant/junit/minirunit. This test suite is mostly for tests that we cannot or do not want to submit to rubicon (a good example is tests involving java integration). Using Rubicon ------------- a) Install rubicon (http://rubyforge.org/projects/rubytests). To get it from CVS: cvs -d:pserver:anonymous@rubyforge.org:/var/cvs/rubytests login cvs -z3 -d:pserver:anonymous@rubyforge.org:/var/cvs/rubytests co rubicon b) Run rubicon (unix CLI examples) make RUBY={PATH_TO_JRUBY_HOME}/bin/jruby OR {PATH_TO_JRUBY_HOME}/bin/jruby AllTests.rb to run all tests OR {PATH_TO_JRUBY_HOME}/bin/jruby builtin/TestFloat.rb to test a single file (TestFloat in this case). Read rubicon documentation for more details (or if rubicon changes something since this document was published). Using minirunit --------------- When implementing new methods on the builtin classes the easiest way is to write the tests in Ruby. It also makes it possible to verify the tests against the original Ruby interpreter (MRI). In the folder "test" you will find JRuby's own tests, and in "test/mri" some tests taken from MRI. Run all of them with: jruby test/testSuite.rb Writing Java Tests ------------------ 1) Java unit tests with JUnit: Tests for classes should be put in a "test" subpackage of the original class's package. For example, org.jruby.RubyModule's tests should go in org.jruby.test. Test files should be named: Test${classname}.java (e.g. TestRubyModule.java). After creating individual tests, each test class should be added to the main test suite at org.jruby.test.MainTestSuite. Before checking in your changes, be sure to run the full test suite with the following command line: ant test ..or, if you don't have the ant JUnit task: java junit.textui.TestRunner org.jruby.test.MainTestSuite This will ensure that your changes not only work by themselves but haven't caused problems elsewhere in the source. Unit tests should ALWAYS run at 100% pass rate when checked into CVS.