[LRUG] testing a simple ruby project (no rails - just ruby)

Dafydd Rees daf at dafydd.net
Tue Feb 19 09:33:06 PST 2008


I'm trying to put together a really simple ruby project and I could do 
with a little help please.

I just want to
- put my code in one subdirectory (say 'lib'),
- my tests in another (say 'test')
- and have a  Rakefile with a default target
   ...that runs all the tests that test/unit can find
      in all the *.rb files under 'test'.

I can't believe it's as difficult as it seems(!)

So far, I have this Rakefile:

----------- 8< ------------------------------------------------
require 'rubygems'
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'

Rake::TestTask.new(:default) do |t|
   t.libs << 'test'
   t.test_files = './test/*.rb'
   t.verbose = true

QUESTION 1: It lies about the number of tests run (why?)

This sort of works - it runs both tests that I have defined in rb files 
under 'test':

blackbook:~/workspace/x blah$ rake
(in /Users/blah/macbook/workspace/x)
/usr/local/bin/ruby -Ilib:test 
"test/tc_a.rb" "test/tc_b.rb"
Loaded suite 
Finished in 0.007152 seconds.

   1) Failure:
test_fail(TC_MyTest) [./test/tc_b.rb:5]:
<false> is not true.

1 tests, 1 assertions, 1 failures, 0 errors

So why do I get "1 tests" - I have "tc_a.rb" and "tc_b.rb" as you can 
see from the rake output. (I know it's running both - because it can 
pick up failures in both test cases.)

QUESTION 2: How can I recursively pick up and run all the tests under 
the 'test' directory - just like it works in rails?

Dafydd Rees
mobile 07968 486880

More information about the Chat mailing list