Skip to content

Commit

Permalink
Include gemspec in dependency check
Browse files Browse the repository at this point in the history
  • Loading branch information
andyw8 committed Oct 2, 2023
1 parent 1a774de commit a94279b
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 4 deletions.
16 changes: 12 additions & 4 deletions lib/ruby_lsp/requests/support/dependency_detector.rb
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def detect_test_library

sig { params(gem_pattern: Regexp).returns(T::Boolean) }
def direct_dependency?(gem_pattern)
dependency_keys.grep(gem_pattern).any?
dependencies.grep(gem_pattern).any?
end

sig { returns(T::Boolean) }
Expand All @@ -65,16 +65,24 @@ def detect_typechecker
end

sig { returns(T::Array[String]) }
def dependency_keys
@dependency_keys ||= T.let(
def dependencies
# NOTE: If changing this behaviour, it's likely that the extension will also need changed.
@dependencies ||= T.let(
begin
Bundler.with_original_env { Bundler.default_gemfile }
Bundler.locked_gems.dependencies.keys
Bundler.locked_gems.dependencies.keys + gemspec_dependencies
rescue Bundler::GemfileNotFound
[]
end,
T.nilable(T::Array[String]),
)
end

sig { returns(T::Array[String]) }
def gemspec_dependencies
Dir.glob("{,*}.gemspec").flat_map do |path|
Bundler.load_gemspec(path).dependencies.map(&:name)
end
end
end
end
4 changes: 4 additions & 0 deletions test/requests/support/dependency_detector_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ def test_detects_test_unit
assert_equal("test-unit", DependencyDetector.instance.detected_test_library)
end

def test_detects_dependencies_in_gemspecs
assert(DependencyDetector.instance.direct_dependency?(/^yarp$/))
end

def test_detects_rails_if_both_rails_and_minitest_are_present
stub_dependencies("minitest" => "1.2.3", "rails" => "1.2.3")

Expand Down

0 comments on commit a94279b

Please sign in to comment.