Today I had a situation where I wanted to use perftools.rb to profile a test suite, which was written with Ruby’s test/unit library.
test/unit installs an at_exit hook which runs all the tests before
Ruby exits. This was problematic, because it meant that all the tests
ran after perftools had already finished its profile.
So I wanted to turn off the autorunning and explicitly run the test
suite. I found out how to monkey-patch test/unit to achieve this, and
figured it might be useful to someone in the future, so:
require 'test/unit'
class Test::Unit::Runner
@@stop_auto_run = true
end
class FooTest < Test::Unit::TestCase
def test_foo
assert true
end
end
Test::Unit::Runner.new.run(ARGV)
require 'test/unit'
module Test::Unit
def self.run?; true; end
end
class FooTest < Test::Unit::TestCase
def test_foo
assert true
end
end
Test::Unit::AutoRunner.run
19 February 2012