diff --git a/.mutant.yml b/.mutant.yml index bc0d94b..ce348a0 100644 --- a/.mutant.yml +++ b/.mutant.yml @@ -3,6 +3,8 @@ includes: - lib - test requires: +- sequel +- active_record - en57 integration: name: minitest diff --git a/lib/en57.rb b/lib/en57.rb index 4113a62..4c90f18 100644 --- a/lib/en57.rb +++ b/lib/en57.rb @@ -6,8 +6,8 @@ require_relative "en57/json_serializer" require_relative "en57/query" require_relative "en57/scope" require_relative "en57/pg_adapter" -require_relative "en57/sequel_adapter" -require_relative "en57/active_record_adapter" +require_relative "en57/sequel_adapter" if defined?(Sequel) +require_relative "en57/active_record_adapter" if defined?(ActiveRecord) require_relative "en57/repository" require_relative "en57/event_store" diff --git a/test/test_en57.rb b/test/test_en57.rb index d1faa9d..b8c2900 100644 --- a/test/test_en57.rb +++ b/test/test_en57.rb @@ -9,5 +9,41 @@ module En57 def test_that_it_has_a_version_number refute_nil VERSION end + + def test_requiring_en57_without_sequel_skips_sequel_adapter + assert_ruby(<<~RUBY) + require "en57" + abort "loaded SequelAdapter" if defined?(En57::SequelAdapter) + RUBY + end + + def test_requiring_en57_without_active_record_skips_active_record_adapter + assert_ruby(<<~RUBY) + require "en57" + abort "loaded ActiveRecordAdapter" if defined?(En57::ActiveRecordAdapter) + RUBY + end + + private + + def assert_ruby(script) + reader, writer = IO.pipe + pid = + Process.spawn( + RbConfig.ruby, + "-Ilib", + "-e", + script, + out: writer, + err: writer, + ) + writer.close + output = reader.read + _, status = Process.wait2(pid) + + assert status.success?, output + ensure + reader&.close + end end end diff --git a/test/test_helper.rb b/test/test_helper.rb index 5893b6a..2aab2ee 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -4,12 +4,12 @@ require "minitest/autorun" require "minitest/mock" require "mutant/minitest/coverage" +require "sequel" +require "active_record" require "en57" require "securerandom" require "concurrent-ruby" require "pg_ephemeral" -require "sequel" -require "active_record" module En57 class IntegrationTest < Minitest::Test