Make loading provenance assertion path-specific

This commit is contained in:
2026-07-18 13:40:03 -07:00
parent de51ff3a45
commit b0e8cf8e20

View File

@@ -36,23 +36,25 @@ class Opencode::LoadingTest < Minitest::Test
end end
end end
# We check via path match on both directory ("/opencode-rails/") and # Match the gem's own lib path, not merely any parent directory. GitHub's
# installed-gem name ("/opencode-rails-VERSION/") so the assertion is # checkout layout nests Bundler under /opencode-rails/opencode-rails, so a
# robust to either a sibling-repo dev setup or a bundle-resolved gem # broad directory-name assertion falsely classifies a bundled
# install. # opencode-ruby source path as belonging to this gem.
GEM_PATH_PATTERN = ->(name) { %r{/#{Regexp.escape(name)}[-/]} } GEM_SOURCE_PATTERN = lambda do |name, file|
%r{/#{Regexp.escape(name)}(?:-[^/]+)?/lib/opencode/#{Regexp.escape(file)}\.rb\z}
end
def test_session_constant_points_at_this_gem def test_session_constant_points_at_this_gem
location = Opencode::Session.instance_method(:initialize).source_location.first location = Opencode::Session.instance_method(:initialize).source_location.first
assert_match GEM_PATH_PATTERN.call("opencode-rails"), location, assert_match GEM_SOURCE_PATTERN.call("opencode-rails", "session"), location,
"Expected Opencode::Session to be loaded from opencode-rails, got: #{location}" "Expected Opencode::Session to be loaded from opencode-rails, got: #{location}"
end end
def test_client_constant_points_at_opencode_ruby def test_client_constant_points_at_opencode_ruby
location = Opencode::Client.instance_method(:initialize).source_location.first location = Opencode::Client.instance_method(:initialize).source_location.first
assert_match GEM_PATH_PATTERN.call("opencode-ruby"), location, assert_match GEM_SOURCE_PATTERN.call("opencode-ruby", "client"), location,
"Expected Opencode::Client to come from opencode-ruby, got: #{location}" "Expected Opencode::Client to come from opencode-ruby, got: #{location}"
refute_match GEM_PATH_PATTERN.call("opencode-rails"), location, refute_match GEM_SOURCE_PATTERN.call("opencode-rails", "client"), location,
"Opencode::Client must NOT come from opencode-rails (it's an opencode-ruby class)" "Opencode::Client must NOT come from opencode-rails (it's an opencode-ruby class)"
end end