Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,15 @@ jobs:
fail-fast: false
matrix:
ruby: [ 2.6, 2.7, 3.0 ]
name: Test Ruby ${{ matrix.ruby }}
bundler: [ 2.2.22, 2.2.25 ]
name: Test Ruby ${{ matrix.ruby }}, Bundler ${{ matrix.bundler }}
steps:
- uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler: ${{ matrix.bundler }}
bundler-cache: true
- name: Run type check
run: bin/typecheck
Expand All @@ -27,4 +29,4 @@ jobs:
- name: Verify documentation
run: bin/docs
- name: Run tests
run: bin/test
run: bundle _${{ matrix.bundler }}_ exec rake
23 changes: 15 additions & 8 deletions lib/tapioca/gemfile.rb
Original file line number Diff line number Diff line change
Expand Up @@ -53,21 +53,28 @@ def require

sig { returns([T::Array[Gem], T::Array[String]]) }
def load_dependencies
deps = definition.locked_gems.dependencies.values

missing_specs = T::Array[String].new

dependencies = definition
.resolve
.materialize(deps, missing_specs)
materialized_dependencies, missing_specs = materialize_deps
dependencies = materialized_dependencies
.map { |spec| Gem.new(spec) }
.reject { |gem| gem.ignore?(dir) }
.uniq(&:rbi_file_name)
.sort_by(&:rbi_file_name)

[dependencies, missing_specs]
end

sig { returns([T::Array[::Gem::Specification], T::Array[String]]) }
def materialize_deps
deps = definition.locked_gems.dependencies.values
missing_specs = T::Array[String].new
materialized_dependencies = if definition.resolve.method(:materialize).arity == 1 # Support bundler >= v2.2.25
definition.resolve.materialize(deps)
.tap { |md| missing_specs = T.cast(md.missing_specs, T::Array[String]) }
else
definition.resolve.materialize(deps, missing_specs)
end
[materialized_dependencies, missing_specs]
end

sig { returns(Bundler::Runtime) }
def runtime
Bundler::Runtime.new(File.dirname(gemfile.path), definition)
Expand Down