测试捆绑安装是否创建扩展

时间:2016-07-07 07:32:39

标签: ruby testing rubygems bundler minitest

我维护一个编译Rust扩展的Ruby gem。它适用于大多数Linux和Windows系统,但不适用于Mac。在bundle / gem安装过程中会出现问题。

我需要一种方法来向项目的测试套件添加构建和安装gem 成功测试。最好不要将其本地安装到系统中,而是安装到临时目录中。测试还应该在gem install时验证链接的库文件是否存在。

如果您需要更多关于问题的上下文,请参阅我的Github问题,以解决跨平台宝石扩展建筑:https://github.com/danielpclark/faster_path/issues/71

1 个答案:

答案 0 :(得分:0)

所以我偶然发现了https://rubybench.org/,他们有一个Bundler的基准,有一个临时目录:

require_relative 'support/benchmark_bundler.rb'
require 'bundler/cli'

noop_gem = Pathname(__FILE__).expand_path + '../gems/noop-gem'

Dir.mktmpdir do |dir|
  Dir.chdir(dir) do
    File.write('Gemfile', <<-GEMFILE)
      source 'https://rubygems.org'
      gem 'rails'
      gem 'noop-gem', path: '#{noop_gem}'
    GEMFILE
    system("bundle install --quiet")

    Benchmark.do_benchmark('bundle exec gem') do
      system("bundle exec noop-gem")
    end
  end
end

这基本上可以满足我的需要,我只需要更改基准部分以验证扩展构建。

更新:这已成为测试的真正痛苦,并没有按计划进行。