Inicial > Programação > A importância do CPAN Testers e como contribuir

A importância do CPAN Testers e como contribuir

Para quem não tem a mínima idéia sobre o que estou falando hoje, tem a ver com o Comprehensive Perl Archive Network, ou apenas CPAN. O CPAN é um dos motivos dos programadores Perl conseguirem produzir o equivalente a 10 horas em 1 =]

O CPAN, é basicamente um repositório de módulo, e lá tem muita coisa já escrita para você (e talvez por você se você realmente gostar de Perl =). Eu sou meio cego, mas acho que tem 80.000+ módulos hoje no CPAN.

É como se você pudesse construir o sua API do “seu Perl” (além das funcionalidades do core do Perl ;), é como brincar de lego, você escolhe os peças que precisa e usa isso para montar sua nave espacial seu programa. Ou seja tudo que você não quiser usar, não vai estar lá para atrapalhar, atravancar, deixar mais lerdo, etc… Além disso, algumas coisa você pode escolher entre diversas implementações, a que te agrada mais. Afinal, de programadores que trabalham com coisas que não gostam, já bastam os que tem que utilizar Java na empresa (Just Kidding =).

Ou seja, você pode escolher um baita framework que permita que você construa as mais robustas aplicações web, ou pode apenas querer desenvolver aquele seu projeto pessoal, onde a sua principal preocupação é criar alguma coisa de forma simples.

Mas o Perl tem uma coisa ruim… roda em tudo que é sistema operacional. AIX, Windows (via Cygwin ou ActivePerl), MacOS X, [Free|Net|Open]BSD, Solaris, Linux… e provavelmente em mais alguns que você encontrar por ai. Horrível isso, péssimo! Como assim não?! Claro, os usuários e sysadmin adoram, mas e os coitados dos desenvolvedores!?! Como um mero mortal vai conseguir testar seu módulo em dezenas em sistemas diferentes, em versões diferentes, com versões instaladas de dependências diferentes?!

E aqui finalmente entra a importância do CPAN Testers :)

Ele contem estatísticas do relatório de testes das instalações de módulos do Perl (que alias é uma coisa muito legal a importância que o Perl e a comunidade dão a estes testes para evitar que seu servidor sofra uma implosão). Lá você pode ver como as versões de cada módulo se comportam em cada sistema operacional. Isso também ajuda os desenvolvedores, pois é mais uma fonte de informação para a corrigir bugs… as vezes uma combinação de versões de dependências exótica e que só aconteceu no servidor do cara do Alasca.

Enfim, mas no que isso ajuda você, seja usuário ou desenvolvedor? Simples, permite que você verifique como uma determinada versão de um módulo, anda se comportando no seu sistema.

Por exemplo, se você usa o CPANPLUS, você pode digitar:

CPAN Terminal> c nomedomodulo

Por exemplo:

CPAN Terminal> c App::Rad

Que o cpanp irá retornar para você uma lista dos sistemas em que a última versão do módulo (que seria instalada com “i nomedomodulo”).

Além disso você pode pedir pro cpanp fazer isso para todos os módulos instalados no seu sistema, que não estejam na última versão (logo podem ser atualizados), fazendo:

CPAN Terminal> c *

E ele vai fazer exatamente o que fez acima, para todos os módulos ;) (Só que pode demorar um pouquinho, se você tiver muitos a atualizar :P)

Mas o problema é… diferente do resto do mundo onde 90% das estatísticas são criadas por quem as apresenta, o CPAN Testers precisa de usuários que queiram contribuir com seu relatório de testes.

Agora vamos analisar uma coisa:

  • Você já vai instalar um módulo XYZ, porque quer usa-lo (ou sei la por qual outro motivo sórdido).
  • A bateria de testes e um relatório já será criado, pois o perl (cpan/cpanp no caso ;) não vai deixar entrar nada no seu ambiente (a menos que você insista com o “force”) que não esteja funcionando como esperado.

Agora, custa gastar alguns bytes a mais para enviar esse relatório?

CPAN need you!

Ok, ok… você vai me falar “Po, mas eu vou ter que ficar montando relatório de cada módulo que eu instalo?! Que saco isso!”. Jovem padawan, percorrer um grande caminho você terá que… mas os programadores Perl gostam de sair mais cedo do trabalho e por isso criaram ferramentas como o Test::Reporter e o CPAN::Reporter.

Como estou utilizando o cpanplus, vou apenas mostrar aqui como fazer para contribuir com os relatórios de teste. Se você usa o cpan é bem fácil também, basta seguir as instruções de instalação e configuração.

Primeira coisa que devemos fazer é instalar alguns módulos. Para facilitar nossa vida, existe o Bundle::CPANPLUS::Test::Reporter que vai instalar os módulos que precisamos :)

Basta fazer:

CPAN Terminal> i Bundle::CPANPLUS::Test::Reporter

Após isso, vamos configurar o cpanplus para enviar os relatórios de testes.

CPAN Terminal> s reconfigure

=================>      MAIN MENU       <=================
Welcome to the CPANPLUS configuration. Please select which
parts you wish to configure
Defaults are taken from your current configuration.
If you would save now, your settings would be written to:
CPANPLUS::Config::User
1> Select Configuration file
2> Setup CLI Programs
3> Setup CPANPLUS Home directory
4> Setup FTP/Email settings
5> Setup basic preferences
6> Setup installer settings
7> Select mirrors
8> Edit configuration file
9> Save & exit
10> Quit without saving
Section to configure: [1]:

Então selecione a opção 5 e continue até chegar neste opção (se você apenas apertar Enter, ele mantem os valores atuais ou padrões para as opções):

Section to configure: [1]: 5

CPANPLUS has support for the Test::Reporter module, which can be utilized

to report success and failures of modules installed by CPANPLUS.  Would

you like to do this?  Note that you will still be prompted before

sending each report.

If you don’t have all the required modules installed yet, you should

consider installing ‘Bundle::CPANPLUS::Test::Reporter’

This package bundles all the required modules to enable test reporting

and querying from CPANPLUS.

You can do so straight after this installation.

Report test results? [y/N]:

Aqui o padrão é “N”, mas vamos dizer que sim “Y”. Então o cpanplus vai informar:

I will prompt you to report test results

Agora vamos configura-lo. Essa parte parece ser a mais chatinha pois os relatórios são enviados por e-mail, mas os desenvolvedores do CPANTesters estão trabalhando no CT 2.0 que não vai precisar mais nada dessa configuração e será tudo via http =D

Mas vamos lá, na shell do cpanp, digite:

CPAN Terminal> s edit

E procure pela linha:

$conf->set_conf( cpantest => 1 );

$conf->set_conf( cpantest_mx => ” );

$conf->set_conf( cpantest_reporter_args => {} );

Agora, vamos alterar isso para:

$conf->set_conf( cpantest => 1 );

$conf->set_conf( cpantest_mx => ‘smtp.gmail.com’ );

$conf->set_conf( cpantest_reporter_args => {

from => ‘seuendereco@gmail.com (Seu Nome)’,

transport => ‘Net::SMTP::TLS’,

transport_args => [User => ‘seuusuariodogmail@gmail.com’,

Password => ‘suasenha’,

Port => ‘587’],

} );

Neste caso estou configurando para utilizar o servidor smtp do gmail, através da minha conta no mesmo.

Pronto, é isso.

Ok…. agora vou procurar um módulo aqui que não está atualizado… e pronto, vamos tentar atualizar o Net::Ping. Se tudo der certo e você der uma olhada nos logs (talvez o modo verbose seja necessário para ver isso), então vai aparecer:

[MSG] [Fri Apr 30 22:35:27 2010] Sending test report for ‘Net-Ping-2.36’

[MSG] [Fri Apr 30 22:35:27 2010] DEFAULT ‘munge_test_report’ HANDLER RETURNING ‘sub return value’

[MSG] [Fri Apr 30 22:35:31 2010] Successfully sent ‘pass’ report for ‘Net-Ping-2.36’

E se eu der uma olhada na minha pasta “Sent” do gmail:
Relatório enviado com sucesso
É isso, espero que mais pessoas contribuam com a CPANTesters e com certeza no CT 2.0 tudo ficará ainda mais fácil :)
Categorias:Programação Tags:, ,
  1. garu
    maio 2, 2010 às 2:20 am

    Excelente artigo! E gostei das piadas internas :P

    Abraço!

  1. No trackbacks yet.

Deixe um comentário