我正在创建一个宝石,其中有

  • bin目录下的几个脚本
  • lib 目录中的实用程序类
  • 以及测试目录中的几个测试
supertool
 bin
   toolA
   toolB
 lib
   supertool
     supertool.rb
     helper.rb
 test
   tc_main.rb
   tc_etc.rb

现在,为了在安装 gem 之前运行测试,我在测试顶部添加了以下代码片段:

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 目录的脚本中。有没有更好的方法来设置环境,以便我们可以在安装 gem 之前对其进行测试?我确信这很简单,我就是找不到。一个指向正确位置的简单链接会有很大帮助:)

有帮助吗?

解决方案

我不确定您想通过该脚本实现什么目标。好像和宝石没什么关系

是不是可以让你跑 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