sauloarruda.eti.br

…revirando até chegar do outro lado…

February 18th, 2010

Estou trabalhando com uma prova de conceito usando Webrat e Cucumber para testes de aplicações CakePHP (em breve renderá um artigo) e me deparei com o seguinte problema:

Quando rodo os testes usando o comando “cucumber” recebia a seguinte warning:

!!!!! DEPRECATION NOTICE !!!!!
The WWW constant is deprecated, please switch to the new top-level Mechanize
constant. WWW will be removed in Mechanize version 2.0

You've referenced the WWW constant from /opt/local/lib/ruby/gems/1.8/gems/webrat-0.7.0/lib/webrat/adapters/mechanize.rb:43:in `mechanize', please
switch the "WWW" to "Mechanize". Thanks!

Sincerely,

Pew Pew Pew

Consultando o changelog do Mechanize, a versão 1.0.0 deprecia o uso do módulo WWW, que ainda não foi atualizado no Webrat. Para resolver o problema basta instalar a versão anterior do Mechanize (0.9.0) usando o comando:

sudo gem install mechanize --version '= 0.9.0'

E dizendo no arquivo env.rb para usar a versão 0.9.0 conforme abaixo:

require 'rubygems'
gem 'mechanize', '= 0.9.0'

December 13th, 2006

Hoje presenciei uma “experiência” nova… O Eclipse tem um recurso muito legal chamado “Clean Up” que faz correções no seu código fonte como remover variáveis locais não utilizadas, colocar o modificador final quando possível, transformar comandos for para a sintaxe do java 5 (foreach), entre outras… Porém, nem tudo são flores. Eu executei o comando em um código e aconteceu o seguinte:

// O código originalmente era:
for (int i=0; i<query.getResults().length; i++) {
  ...
}

// Após a execução do Clean-up ficou assim:
for (@SuppressWarnings("unused")
  final String element : query.getResults()) {
  ...
  // A variável element não foi usada neste código
}

Legal! O problema é que existe um bug no javac da Sun que não reconhece a annotation @SuppressWarnings(“unused”) dentro do código do método gerando um erro um tanto medonho:
An exception has occurred in the compiler (1.5.0_08). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you..

No final das contas foi só retirar a annotation @SuppressWarnings(“unused”) do código que o problema foi resolvido.

Espero que esta dica seja útil para outras pessoas!