Pergunta

Estou criando uma jóia que tem

  • Vários scripts no diretório de bin
  • as classes de utilidade no diretório LIB
  • e vários testes no diretório de teste
supertool
 bin
   toolA
   toolB
 lib
   supertool
     supertool.rb
     helper.rb
 test
   tc_main.rb
   tc_etc.rb

Agora, para executar os testes antes mesmo de instalar a jóia, tenho o seguinte snippet no topo dos meus testes:

base = File.basename(Dir.pwd)
if base == 'test' || base =~ /supertool/
   Dir.chdir('..') if base == 'test'
   $LOAD_PATH.unshift(Dir.pwd + '/lib')
   Dir.chdir('test') if base =~ /supertool/
end

Isso parece tedioso, especialmente se eu tiver que colocá -los nos scripts no diretório da bin também. Existe uma maneira melhor de configurar o ambiente para que possamos testar as gemas antes que elas sejam instaladas? Tenho certeza de que é algo simples que eu simplesmente não consigo encontrar. Um link simples para o lugar certo ajudaria muito :)

Foi útil?

Solução

Não tenho certeza do que você está tentando alcançar com esse script. Não parece ter nada a ver com gemas ...

É para que você possa correr ruby tc_main.rb De dentro do diretório de teste (ou ruby test/tc_main.rb do diretor da base) e definiu o caminho de carga adequadamente? Nesse caso, aqui está uma maneira muito melhor:

No seu diretório de teste, crie um test_helper.rb Arquivo. Nesse arquivo, coloque isso

$LOAD_PATH << File.expand_path( File.dirname(__FILE__) + '/../lib' )

E em todos os seus arquivos de teste, defina a primeira linha para

require 'test_helper'

Se você tiver subdiretos dentro do seu diretor de teste, os arquivos nesses subdirs podem fazer

require '../test_helper' 

Outras dicas

Dê uma olhada no Hoe Gem, é um ajudante para outras jóias.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top