Daniel Berger
2/2/2007 11:28:00 PM
On Feb 2, 4:09 pm, "Daniel Berger" <djber...@gmail.com> wrote:
> On Feb 2, 3:40 pm, "Tim Pease" <tim.pe...@gmail.com> wrote:
>
>
>
> > On 2/2/07, Daniel Berger <djber...@gmail.com> wrote:
>
> > > Hi all,
>
> > > I've got some test tasks that I've got setup via a Rakefile. I'd like
> > > to see the output in the 'turn' format. However, simply sticking
> > > 'require "turn"' at the top of the Rakefile doesn't quite do the
> > > trick:
>
> > > >rake test_foo
> > > Loaded suite /usr/local/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake/
> > > rake_test_loader
> > > Started
> > > .........................................................................................................................................................................................................................................................
> > > Finished in 0.440434 seconds.
>
> > > 249 tests, 738 assertions, 0 failures, 0 errors
> > > Loaded suite /usr/local/bin/rake
> > > ==============================================================================
> > > pass: 0, fail: 0, error: 0
> > > total: 0 tests with 0 assertions in 0.001122 seconds
> > > ==============================================================================
>
> > > So, it's giving me the nicer summary, but not the line by line result
> > > for each test.
>
> > > How do I get Rake to behave the way I want?
>
> > When you run your unit tests from within rake, they are actually run
> > in a separate ruby interpreter. Requiring turn into the Rakefile does
> > not require turn into the ruby interpreter where the unit tests are
> > run.
>
> > You'll have to modify your test task to include turn ...
>
> > ruby -Ilib -rturn your/test.rb
>
> > Or use the turn command
>
> > turn -Ilib your/test.rb
>
> > The fancy turn summary is coming out of the ruby interpreter running
> > rake. When you require 'turn' the test::unit library is also
> > included. test::unit sets up an empty test suite by default and
> > registers a teardown hook. If no tests are run by the time the
> > interpreter exits, the teardown hook is invoked and the empty test
> > suite is run (hence the empty result set).
>
> > Hope this explanation helps.
>
> Thanks Tim, it does.
>
> In theory, then, I ought to be able to push "-rturn" onto the
> TestTask#ruby_opts accessor. Unfortunately, there appears to be a bug
> in Rake where the @ruby_opts instance variable is getting reset to an
> empty array inside the "define" method in testtask.rb.
>
> I'll bring that up on the Rake mailing list.
>
> Regards,
>
> Dan
Upon further review, using TestTask#ruby_opts *does* work. The bug was
mine.
Anyhoo, for the sake of future Googlers, this is how you do it:
desc "Runs the test suite for the Foo class"
Rake::TestTask.new('test_foo') do |t|
t.test_files = FileList['test/foo/*.rb'] # Or whatever
t.ruby_opts << '-rturn'
t.warning = true
end
Regards,
Dan