Rspec + Growl + ZenTest
Rails November 28th, 2008Existe uma aplicação para Mac OS chamada Growl. Através dessa é possível enviar notificações para serem exibidas no desktop.
Diversos programas o utilizam para enviar alertas ao usuário. Aproveitando essa característica, alguns desenvolvedores configuram o seu ambiente de desenvolvimento para receberem notificações com o resultado da execução dos testes da aplicação em desenvolvimento.
Caso você queria configurar, também, o seu ambiente de desenvolvimento, aconselho a leitura do post.
INSTALANDO O GROWL
Acesse http://growl.info e faça o download da aplicação.
A instalação do Growl é feita da mesma forma como outros aplicativos no Mac OS X, basta montar a imagem(.dmg) e arrastar o arquivo .app para dentro do diretório Applications.
É importante notar que, além da instalação da aplicação, é necessário instalar um “componente”. Para isso, execute o arquivo “install.sh” que se encontra dentro do diretório “Extras“:
Após executar o comando acima, o comando growlnotify estará disponível dentro do diretório /usr/local/bin (Obs: É necessário que este path esteja configurado nas variáveis de ambiente) .
Para testar se tudo até aqui está funcionando corretamente, abra o terminal e execute o seguinte comando:
Se tudo estiver ok, essa mensagem será enviada e exibida na sua tela.
Em caso de falha, verifique se as permissões setadas para o arquivo growlnotify e confirme se está liberado para execução. Feito isso, tente novamente o comando para enviar a mensagem.
INSTALANDO O RSPEC e ZenTest
Ainda dentro do terminal, execute:
CONFIGURANDO O AUTOTEST
O ZenTest busca pelo arquivo de configuração em um arquivo nos seguintes lugares:
- Autotest
- AutotestSubClass
- ~/.autotest
- ./.autotest
Particularmente, criei o meu arquivo .autotest na raiz do meu home (~/.autotest)
no terminal, digite :
Adicione o código abaixo dentro do arquivo e salve.
title, msg, img, pri=0, stick=""
system "growlnotify -n autotest --image -p -m "
end
Autotest.add_hook :ran_command do |autotest|
filtered = autotest.results.grep(/\d+\s.*examples?/)
output = filtered.empty? ? '' : filtered.last.slice(/(\d+)\s.*examples?,\s(\d+)\s.*failures?(?:,\s(\d+)\s.*pending)?/)
if output =~ /[1-9]\sfailures?/
growl "Test Results", "", "~/Library/Autotest/fail.png"
elsif output =~ /pending/
growl "Test Results", "", "~/Library/Autotest/pending.png"
else
growl "Test Results", "", "~/Library/Autotest/pass.png"
end
end
end
Autotest.add_hook :initialize do |at|
%w{.svn .hg .git vendor}.each {|exception| at.add_exception(exception)}
end
CRIANDO UMA APLICAÇÃO EXEMPLO:
Com o terminal aberto, execute:
Caso você queira conferir as opções para o comando spec, basta:
Pronto! Agora, para executar os seus testes, basta acessar a raiz do seu projeto e executar o comando “autospec” no terminal.
Como forma de ilustrar a saída, criei segue um screenshot da saída no desktop:
Espero que gostem!

March 10th, 2009 at 2:29 pm
Cara da onde vc tirou as imagens pra ser usadas pelo gwrolnotify? Funcionou tudo, só faltou a imagem..
March 17th, 2009 at 12:14 pm
Olá Alberto, que legal que funcionou. Me passa o seu email, que eu te mando as imagens..
Abs
May 15th, 2009 at 8:34 pm
Thanks mate! Solved my problem and I don’t speak a word of portugese!