Bio::Das::Lite 2.04を試す。その後

そもそも、テストが通らない原因は、
http statusで302が返ってきたときに、次の場所をみにいかないようになっていたためのようだった。

http://www.ensembl.org/das/Homo_sapiens.NCBI36.reference
にアクセスすると
http://uswest.ensembl.org/das/Homo_sapiens.NCBI36.reference
こちらをみるように 302 で伝えられるが、そこをみにいかないので
そもそもダメだったようだ。

とりあえずおいかけられるようにしたら、07-singledsn-multiseg.tこれは通るようになった。
あてたパッチ

--- ./lib/Bio/Das/Lite.pm.orig	2010-09-01 22:23:12.984429549 +0900
+++ ./lib/Bio/Das/Lite.pm	2010-09-01 22:25:58.540430294 +0900
@@ -841,6 +841,7 @@
     $curl->setopt( CURLOPT_NOPROGRESS, 1 );
     $curl->setopt( CURLOPT_USERAGENT, $self->user_agent );
     $curl->setopt( CURLOPT_URL, $url );
+    $curl->setopt( CURLOPT_FOLLOWLOCATION, 1 );
 
     if (scalar @headers) {
         $curl->setopt( CURLOPT_HTTPHEADER, \@headers );
@@ -931,6 +932,7 @@
         my $req  = $reqs->{$id};
         my $uri  = $req->{'uri'};
         my $head = ${ $req->{'head'} } || q();
+        $head = substr($head,rindex($head,"HTTP"));
         my $body = ${ $req->{'body'} } || q();
 
         # We got a response from the server:

ただこれを適用すると 01-general.t で
DASのないページにアクセスするところで www.google.com にアクセスしているが、
すべてのデータをとれず、うまくいっていないようだった。
www.example.com に変更したらうまくいった。

{
  #########
  # test single http fetch (on a non-DAS page!)
  #
  my $str  = q();
  my $urls = {
              'http://www.google.com/' => sub { $str .= $_[0]; return; }
             };
  my $das  = Bio::Das::Lite->new();
  $das->_fetch($urls);
  ok($str =~ m|<html.*/html>|smix, 'plain http fetch');
}

残すは、次の2つだが

  • 05-singledsn.t
  • 10-multidsn.t

これらはどうも
http://das.ensembl.org/das/dsn
ここをみているのだけど、ここがそもそもサービスをしていないようだ。

This site "das.ensembl.org" is not currently being served by the Sanger Institute.

とりあえず生きているサイトで、リダイレクトはできるようになったとおもう。