Ruby Forum RSpec > RSpec and RCov with JRuby

Posted by Tobias Torkler (Guest)
on 17.03.2008 13:30
(Received via mailing list)
Hi,

I am using JRuby (trunk) and wrote a bunch of specifications for my
code. Everything works fine so far.
Now I am trying to integrate RCov in my test run. I have installed
RCov without the C extensions. I tried it with a simple script and it
worked (pretty slow, but it doesnīt matter).
But when I add the rcov options to my Rake task, RCov is not invoke
properly!

Rakefile:
Spec::Rake::SpecTask.new('specs') do |t|
   t.spec_files = FileList['spec/**/*.rb']
   t.rcov = true
   t.rcov_opts = ['--exclude', 'spec']
   t.verbose = true
end

Output:
...
Finished in 11.376 seconds

187 examples, 0 failures, 10 pending
Loaded suite /Users/tobias/bin/JRuby.framework/Current/bin/rcov
Started

Finished in 0.0080 seconds.

0 tests, 0 assertions, 0 failures, 0 errors

Why is rcov started at the end of the test run?
Posted by aslak hellesoy (Guest)
on 17.03.2008 15:45
(Received via mailing list)
On Mon, Mar 17, 2008 at 1:27 PM, Tobias Torkler <tobias.torkler@meco.de> 
wrote:
>  Rakefile:
>
>  187 examples, 0 failures, 10 pending
>  Loaded suite /Users/tobias/bin/JRuby.framework/Current/bin/rcov
>  Started
>
>  Finished in 0.0080 seconds.
>
>  0 tests, 0 assertions, 0 failures, 0 errors
>

This is Test::Unit output

>  Why is rcov started at the end of the test run?

Did you mean: Why is Test::Unit started at the end of the RSpec run?

I'm not sure exactly what you're asking.

Aslak
Posted by Tobias Torkler (Guest)
on 17.03.2008 15:57
(Received via mailing list)
This is not Test::Unit output!
As you can see I created a Rake task to run my specs and tried to
integrate rcov as described on 
http://rspec.info/documentation/tools/rcov.html
RSpec works as expected (187 examples, 0 failures, 10 pending) but I
am missing the RCov report.


Am 17.03.2008 um 15:43 schrieb aslak hellesoy:
Posted by aslak hellesoy (Guest)
on 17.03.2008 16:26
(Received via mailing list)
On Mon, Mar 17, 2008 at 3:50 PM, Tobias Torkler <tobias.torkler@meco.de> 
wrote:
> This is not Test::Unit output!

The following text - taken from your first email - is Test::Unit
output. It is not RCov or RSpec output.

------------8<------------
Loaded suite /Users/tobias/bin/JRuby.framework/Current/bin/rcov
  Started

  Finished in 0.0080 seconds.

  0 tests, 0 assertions, 0 failures, 0 errors
------------8<------------

>  As you can see I created a Rake task to run my specs and tried to
>  integrate rcov as described on http://rspec.info/documentation/tools/rcov.html
>  RSpec works as expected (187 examples, 0 failures, 10 pending) but I
>  am missing the RCov report.
>

In your first email you asked: Why is rcov started at the end of the 
test run?
I got confused about what you mean by "test run" (that usually mean
Test::Unit run - and you do have Test::Unit output).

Are you trying to figure out what order things are happening in, or
are you trying to figure out why you're not getting an RCov report?

Aslak
Posted by Tobias Torkler (Guest)
on 17.03.2008 16:27
(Received via mailing list)
Ok, so the question is then why I donīt get an RCov report? Sorry for
the "test run". Better call it an RSpec run?


Am 17.03.2008 um 16:10 schrieb aslak hellesoy:
Posted by aslak hellesoy (Guest)
on 17.03.2008 17:43
(Received via mailing list)
On Mon, Mar 17, 2008 at 4:23 PM, Tobias Torkler <tobias.torkler@meco.de> 
wrote:
> Ok, so the question is then why I donīt get an RCov report? Sorry for
>  the "test run". Better call it an RSpec run?
>

RSpec run is much clearer, thanks :-)

I'm looking into the problem, but I'm struggling to install RCov into
JRuby. I get the following error:

$ /usr/local/jruby-1.1RC2/bin/jruby -S gem install rcov
Building native extensions.  This could take a while...
extconf.rb:1: no such file to load -- mkmf (LoadError)
ERROR:  Error installing rcov:
        ERROR: Failed to build gem native extension.

/usr/local/jruby-1.1RC2/bin/jruby extconf.rb install rcov


Gem files will remain installed in
/usr/local/jruby-1.1RC2/lib/ruby/gems/1.8/gems/rcov-0.8.1.2.0 for
inspection.
Results logged to
/usr/local/jruby-1.1RC2/lib/ruby/gems/1.8/gems/rcov-0.8.1.2.0/ext/rcovrt/gem_make.out

How did you install rcov bypassing the building of the C extensions?

Aslak
Posted by Tobias Torkler (Guest)
on 17.03.2008 17:57
(Received via mailing list)
1. Download http://eigenclass.org/static/rcov/rcov-0.8.1.2.tar.gz and
extract the archive
2. jruby -S setup.rb all --without-ext
3. Change shebang of <jruby-dir>/bin/rcov to #!/usr/bin/env jruby
4. rcov script.rb should work now (warning appears, that no extensions
are installed)


Am 17.03.2008 um 17:37 schrieb aslak hellesoy:
Posted by aslak hellesoy (Guest)
on 17.03.2008 19:57
(Received via mailing list)
On Mon, Mar 17, 2008 at 5:47 PM, Tobias Torkler <tobias.torkler@meco.de> 
wrote:
> 1. Download http://eigenclass.org/static/rcov/rcov-0.8.1.2.tar.gz and
>  extract the archive
>  2. jruby -S setup.rb all --without-ext
>  3. Change shebang of <jruby-dir>/bin/rcov to #!/usr/bin/env jruby
>  4. rcov script.rb should work now (warning appears, that no extensions
>  are installed)
>

Thanks, those installation instructions were useful.

Unfortunately, I'm unable to run RCov 0.8.1.2 on JRuby 1.1.RC2 at all:

$ /usr/local/jruby-1.1RC2/bin/jruby -S rcov --version
Exception in thread "main" java.lang.RuntimeException: MethodBlock
does not have a static scope; this should not be called
        at 
org.jruby.runtime.MethodBlock.getStaticScope(MethodBlock.java:128)
        at org.jruby.RubyModule.createProcMethod(RubyModule.java:1079)
...
(lots more)
...
        at org.jruby.Main.main(Main.java:79)

Can you recommend a JRuby version where RCov will actually start up?

Aslak
Posted by Tobias Torkler (Guest)
on 17.03.2008 20:19
(Received via mailing list)
Thatīs right, sorry! There was a call and it will be fixed in RC3.
But you can checkout the sources 
(http://svn.codehaus.org/jruby/trunk/jruby/
) and build the jruby.jar via ant.
It will work then!

I know itīs complicated, but I need this for my diploma thesis and I
appreciate your help!


Am 17.03.2008 um 19:54 schrieb aslak hellesoy:
Posted by Tobias Torkler (Guest)
on 17.03.2008 22:09
(Received via mailing list)
Issue is solved!!!
I had a require 'test/unit' in my spec_helper.rb. I removed it and it
works now.


Am 17.03.2008 um 20:08 schrieb Tobias Torkler:
Posted by aslak hellesoy (Guest)
on 17.03.2008 22:16
(Received via mailing list)
On Mon, Mar 17, 2008 at 10:04 PM, Tobias Torkler 
<tobias.torkler@meco.de> wrote:
> Issue is solved!!!
>  I had a require 'test/unit' in my spec_helper.rb. I removed it and it
>  works now.

Good. That makes sense. Two competing exit hooks or something. I bet
your Test::Unit output went away too.

Aslak