我维护一个编译Rust扩展的Ruby gem。它适用于大多数Linux和Windows系统,但不适用于Mac。在bundle / gem安装过程中会出现问题。
我需要一种方法来向项目的测试套件添加构建和安装gem 成功测试。最好不要将其本地安装到系统中,而是安装到临时目录中。测试还应该在gem install时验证链接的库文件是否存在。
如果您需要更多关于问题的上下文,请参阅我的Github问题,以解决跨平台宝石扩展建筑:https://github.com/danielpclark/faster_path/issues/71
答案 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
这基本上可以满足我的需要,我只需要更改基准部分以验证扩展构建。
更新:这已成为测试的真正痛苦,并没有按计划进行。