Проверьте, что установка пакета создает расширение

Я поддерживаю Ruby gem, который составляет расширение Rust. Он работает на большинстве систем Linux и Windows, но не на компьютерах Mac. Проблема возникает во время процесса установки пакета / гема.

Мне нужен способ добавить в набор тестов проекта тест на успешность сборки и установки gem. Желательно не устанавливать его локально в систему, а во временный каталог. Тесты также должны проверить, существует ли связанный файл библиотеки после установки gem.

Если вам нужно больше контекста для вопроса, вот моя проблема Github для решения кросс-платформенного расширения гемов: https://github.com/danielpclark/faster_path/issues/71

1 ответ

Поэтому я наткнулся на 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

Это в основном делает то, что мне нужно, мне просто нужно изменить часть теста для проверки построения расширений.

ОБНОВЛЕНИЕ: Это становится настоящей болью для тестирования и работает не так, как планировалось.

Другие вопросы по тегам