bioperl / bioperl-run

BioPerl wrappers
http://bioperl.org
Other
35 stars 17 forks source link

t/SABlastPlus.t failures with makeblastdb from ncbi-blast+ 2.16.0 #62

Open emollier opened 4 months ago

emollier commented 4 months ago

Hi,

ncbi-blast+ has been recently upgraded to version 2.16.0 in Debian sid, and from my current analysis, this seems to have triggered Debian bug #1077454. Relevant part of the error looks like:

# DB and mask make tests

#   Failed test 'right type'
#   at t/SABlastPlus.t line 37.
#          got: undef
#     expected: 'nucl'

#   Failed test 'correct type'
#   at t/SABlastPlus.t line 53.
#          got: undef
#     expected: 'nucl'

------------- EXCEPTION -------------
MSG: Masker 'windowmasker' can't use a blastdb as primary input
STACK Bio::Tools::Run::StandAloneBlastPlus::make_mask /<<PKGBUILDDIR>>/blib/lib/Bio/Tools/Run/StandAloneBlastPlus.pm:818
STACK toplevel t/SABlastPlus.t:55
-------------------------------------

# Looks like your test exited with 29 just after 14.
t/SABlastPlus.t ............... 
1..71
ok 1 - use Bio::Tools::Run::StandAloneBlastPlus;
ok 2 - use Bio::Tools::Run::WrapperBase;
ok 3 - use Bio::Tools::Run::WrapperBase::CommandExts;
ok 4 - BlastPlus factory
ok 5 - make factory
ok 6 - test db made with fasta
ok 7 - temp db
not ok 8 - right type
ok 9
ok 10 - named db made
ok 11 - check_db
ok 12 - correct name
ok 13 - dbinfo hash returned
not ok 14 - correct type
Dubious, test returned 29 (wstat 7424, 0x1d00)
Failed 59/71 subtests 

I don't exclude we might actually hit problems with the newer makeblastdb, but for the moment my impression tends to be that the test may need adjustments to the new ncbi-blast+ revision.

Have a nice day, :) Étienne.

emollier commented 1 day ago

Greetings,

Aaron M. Ucko of the Debian project suggests in Debian bug 1077454 to apply this change:


--- a/lib/Bio/Tools/Run/StandAloneBlastPlus.pm
+++ b/lib/Bio/Tools/Run/StandAloneBlastPlus.pm
@@ -1106,7 +1106,7 @@ sub check_db {
        $self->factory->no_throw_on_crash(1);
        $self->factory->_run();
        $self->factory->no_throw_on_crash(0);
-       return 0 if ($self->factory->stderr =~ /No alias or index file found/);
+       return 0 if ($self->factory->stderr =~ /No alias or index file found|Database memory map file error/);
        return 1;
     }
     return;

I have verified that it resolves the test error.

Have a nice day, :) Étienne.