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.
とりあえず生きているサイトで、リダイレクトはできるようになったとおもう。