Tests running in standalone script


I have a simple script that I want to run against my database. What is
happening is that I found that it wanted to run a test suite
automatically. I’ve tried to run down how that is happening, but I
don’t follow how it is done. It seems to be set up in the initializer
somewhere, but I can’t seem to find it. Since I found that it wanted
to run tests, I put a small test class in there, and sure enough it
runs it.

Can somebody shed some light on how this magic is happening?

Here is an example:

ENV[‘RAILS_ENV’] = ARGV.first || ENV[‘RAILS_ENV’] || ‘development’
puts “Loading #{ENV[‘RAILS_ENV’]} environment.”
require File.dirname(FILE) + ‘/…/config/environment’

class MyClass

def run
puts “Running calculation”


class MyClass; def rescue_action(e) raise e end; end

class MyClassTest < Test::Unit::TestCase
def setup
puts “running setup”

def test_running_a_test
puts "running a test "
assert true


if FILE == $0

mc = MyClass.new

and when I run it:

Loading development environment.
Running calculation
Loaded suite ./myclass
running setup
running a test
Finished in 0.013593 seconds.

1 tests, 1 assertions, 0 failures, 0 errors

So just for posterity, I found that one of the other developers had
included TestUnit in an underlying library. Since my script loaded the
Rails environment to run, it also included TestUnit, which lead to the
behaviour I described.