I was tracking down an issue where after porting our functional test code over to MiniTest, MiniTest didn't seem to be running our tests at all. Eventually I discovered that it was the autorun part which wasn't working, yet it was working fine running from standalone JRuby.
So here's a test for that:
@Test
public void testMiniTestAutoRun() throws Exception
{
ScriptingContainer container = new ScriptingContainer();
container.setCompatVersion(CompatVersion.RUBY1_9);
StringWriter writer = new StringWriter();
container.setWriter(writer);
container.runScriptlet(
"require 'minitest/unit'\n" +
"require 'minitest/autorun'\n" +
"class TestTrivial < MiniTest::Unit::TestCase\n" +
" def test_trivial\n" +
" puts \"test was run\"\n" +
" end\n" +
"end\n" +
"puts \"test was defined\"\n");
String output = writer.toString();
assertThat(output, containsString("test was defined"));
assertThat(output, containsString("test was run"));
}
After I figured out how minitest/autorun actually worked, I reduced the test case further:
@Test
public void testAtExit() throws Exception
{
ScriptingContainer container = new ScriptingContainer();
container.setCompatVersion(CompatVersion.RUBY1_9);
StringWriter writer = new StringWriter();
container.setWriter(writer);
container.runScriptlet("at_exit { puts 'at_exit was run' }");
String output = writer.toString();
assertThat(output, containsString("at_exit was run"));
}
For our own functional test script, there was a fairly easy workaround. For other users who happen to be running scripts using our app, I'm not sure sure if they will have a good time.
|