Pregunta

Estoy creando una gema que tiene

  • varios scripts en el directorio bin
  • las clases de utilidad en el directorio lib
  • y varias pruebas en el directorio de prueba
supertool
 bin
   toolA
   toolB
 lib
   supertool
     supertool.rb
     helper.rb
 test
   tc_main.rb
   tc_etc.rb

Ahora, para ejecutar las pruebas antes de instalar la gema, tengo el siguiente fragmento de código en la parte superior de mis pruebas:

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

Sin embargo, esto parece tedioso, especialmente si tengo que poner esto en los scripts en el directorio bin también. ¿Hay una mejor manera de configurar el entorno para que podamos probar las gemas antes de que se instalen? Estoy seguro de que es algo simple que simplemente no puedo encontrar. Un simple enlace al lugar correcto ayudaría mucho :)

¿Fue útil?

Solución

No estoy seguro de lo que intentas lograr con ese script. No parece tener nada que ver con gemas ...

Es para que pueda ejecutar ruby ??tc_main.rb desde el directorio de prueba (o ruby ??test / tc_main.rb desde el directorio base), y tenerlo establecer la ruta de carga adecuadamente? Si es así, aquí hay una manera mucho mejor:

En su directorio de prueba, cree un archivo test_helper.rb . En ese archivo, pon esto

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

Y en todos sus archivos de prueba, establezca la primera línea en

require 'test_helper'

Si tiene subdirectorios dentro de su directorio de prueba, entonces los archivos en esos subdirectorios solo pueden hacerlo

require '../test_helper' 

Otros consejos

Echa un vistazo a la gema de azada, es una ayuda para otras gemas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top