File tree Expand file tree Collapse file tree 2 files changed +38
-4
lines changed
lib/dependabot/go_modules
spec/dependabot/go_modules Expand file tree Collapse file tree 2 files changed +38
-4
lines changed Original file line number Diff line number Diff line change @@ -24,8 +24,14 @@ class FileParser < Dependabot::FileParsers::Base
2424 def parse
2525 dependency_set = Dependabot ::FileParsers ::Base ::DependencySet . new
2626
27- required_packages . each do |dep |
28- dependency_set << dependency_from_details ( dep ) unless skip_dependency? ( dep )
27+ required_packages . each do |hsh |
28+ unless skip_dependency? ( hsh ) # rubocop:disable Style/Next
29+
30+ dep = dependency_from_details ( hsh )
31+
32+ T . must ( go_mod ) . dependencies << dep
33+ dependency_set << dep
34+ end
2935 end
3036
3137 dependency_set . dependencies
@@ -96,11 +102,14 @@ def dependency_from_details(details)
96102 groups : [ ]
97103 } ]
98104
105+ is_indirect = details [ "Indirect" ]
106+
99107 Dependency . new (
100108 name : details [ "Path" ] ,
101109 version : version ,
102- requirements : details [ "Indirect" ] ? [ ] : reqs ,
103- package_manager : "go_modules"
110+ requirements : is_indirect ? [ ] : reqs ,
111+ package_manager : "go_modules" ,
112+ direct_relationship : !is_indirect
104113 )
105114 end
106115
Original file line number Diff line number Diff line change 305305 its ( :length ) { is_expected . to eq ( 0 ) }
306306 end
307307
308+ context "with features needed to support DependencySubmission" do
309+ it "attaches the list of dependencies to the go_mod DependencyFile" do
310+ expect ( parser . dependency_files . count ) . to eq ( 1 )
311+ dep_file = parser . dependency_files . first
312+ expect ( dep_file ) . to equal ( go_mod )
313+
314+ # assert that the dependencies got correctly attached to the dep file
315+ dep_set = dependencies . to_set
316+ expect ( dep_file . dependencies ) . to eq ( dep_set )
317+ end
318+
319+ it "marks indirect dependencies accordingly" do
320+ # there are only 2 top-level dependencies
321+ expect ( dependencies . count ( &:direct? ) ) . to eq ( 2 )
322+
323+ # and 2 indirect dependencies
324+ indirect_deps = dependencies . reject ( &:direct? )
325+ expect ( indirect_deps . count ) . to eq ( 2 )
326+
327+ indirect_deps_names = indirect_deps . map ( &:name )
328+ expect ( indirect_deps_names ) . to include ( "github.com/mattn/go-isatty" )
329+ expect ( indirect_deps_names ) . to include ( "github.com/mattn/go-colorable" )
330+ end
331+ end
332+
308333 context "when using a monorepo" do
309334 let ( :project_name ) { "monorepo" }
310335 let ( :repo_contents_path ) { build_tmp_repo ( project_name ) }
You can’t perform that action at this time.
0 commit comments