Тестирование Ruby Gem перед развертыванием - PullRequest
2 голосов
/ 18 октября 2008

Я создаю драгоценный камень с

  • несколько скриптов в каталоге bin
  • служебные классы в каталоге lib
  • и несколько тестов в каталоге тестов
supertool
 bin
   toolA
   toolB
 lib
   supertool
     supertool.rb
     helper.rb
 test
   tc_main.rb
   tc_etc.rb

Теперь, чтобы запустить тесты еще до того, как я установлю гем, у меня есть следующий фрагмент вверху моих тестов:

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

Это кажется утомительным, особенно если мне нужно поместить их в сценарии в каталоге bin. Есть ли лучший способ настройки среды, чтобы мы могли тестировать гемы до их установки? Я уверен, что это что-то простое, что я просто не могу найти. Простая ссылка на нужное место очень поможет:)

Ответы [ 2 ]

4 голосов
/ 03 ноября 2008

Я не уверен, что вы пытаетесь достичь с помощью этого сценария. Кажется, это не имеет ничего общего с драгоценными камнями ...

Это так, что вы можете запустить ruby tc_main.rb из тестового каталога (или ruby test/tc_main.rb из базового каталога), и он правильно установил путь загрузки? Если так, то есть более хороший способ:

В вашем тестовом каталоге создайте файл test_helper.rb. В этот файл поместите это

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

И во всех ваших тестовых файлах установите первую строку на

require 'test_helper'

Если у вас есть подкаталоги в вашем тестовом каталоге, то файлы в этих подкаталогах могут просто сделать

require '../test_helper' 
0 голосов
/ 18 октября 2008

Посмотрите на камень мотыги, это помощник для других драгоценных камней.

...