Hi --

On Tue, 30 Jun 2009, Diana Jaunzeikare wrote:

> Hi all,
>
> I am developing support for PhyloXML in BioRuby as Google Summer of Code
> project. I have a question about unit testing.
>
> My code depends on libxml-ruby library (other parts of BioRuby does not). So
> I want to test if libxml-ruby is required and then if it is not, i want to
> quit my unit test suite (a file tes_phyloxml.rb) nicely (don't perform any
> unit tests related to phyloxml since they anyways gonna fail) but the rest
> of unit test suites should continue running.
>
> Right now the it completely exits, if can't load xml library, but I would
> like the other tests to continue running.
>
> #First let's test if xml library is here, since it will be required by
> bio/db/phyloxml
> begin
>  require 'xml'
> rescue LoadError
>  puts "Please install libxml-ruby library. It is needed for Bio::PhyloXML
> module. Unit tests will exit now.
>  exit 1
> end
>
> require 'bio/db/phyloxml'
>
>
> class TestPhyloXML1 < Test::Unit::TestCase
>
>     def setup
>      @phyloxml = Bio::PhyloXML.new(TestPhyloXMLData.example_xml)
>    end
>
>    def test_init
>      assert_equal(@phyloxml.class, Bio::PhyloXML)
>    end
>
>   #[...]
>
> end

Maybe something like this, if it's not too convoluted:

   no_xml = false

   begin
     require 'xml'
   rescue LoadError
     puts "No libxml; not running those tests...." # or whatever
     no_xml = true
   end

   unless no_xml
     class TestPhyloXML1

   etc.


David

-- 
David A. Black / Ruby Power and Light, LLC
Ruby/Rails consulting & training: http://www.rubypal.com
Now available: The Well-Grounded Rubyist (http://manning.com/black2)
"Ruby 1.9: What You Need To Know" Envycasts with David A. Black
http://www.envycasts.com