Вопрос

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

  • несколько скриптов в каталоге 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.Есть ли лучший способ настроить среду, чтобы мы могли тестировать драгоценные камни перед их установкой?Я уверен, что это что-то простое, чего я просто не могу найти.Простая ссылка на нужное место очень помогла бы :)

Это было полезно?

Решение

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

Это для того, чтобы ты мог бежать 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' 

Другие советы

Взгляните на самоцвет мотыга, он помощник для других самоцветов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top