dependabot-bundler 0.137.1 → 0.138.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/helpers/v1/build +2 -1
- data/helpers/v1/run.rb +14 -0
- data/helpers/v2/.gitignore +8 -0
- data/helpers/v2/Gemfile +12 -0
- data/helpers/v2/build +24 -0
- data/helpers/v2/lib/functions.rb +122 -0
- data/helpers/v2/lib/functions/conflicting_dependency_resolver.rb +86 -0
- data/helpers/v2/lib/functions/file_parser.rb +106 -0
- data/helpers/v2/monkey_patches/definition_bundler_version_patch.rb +15 -0
- data/helpers/v2/monkey_patches/definition_ruby_version_patch.rb +20 -0
- data/helpers/v2/monkey_patches/git_source_patch.rb +62 -0
- data/helpers/v2/run.rb +44 -0
- data/helpers/v2/spec/functions/conflicting_dependency_resolver_spec.rb +133 -0
- data/helpers/v2/spec/functions/file_parser_spec.rb +142 -0
- data/helpers/v2/spec/functions_spec.rb +33 -0
- data/helpers/v2/spec/native_spec_helper.rb +49 -0
- data/helpers/v2/spec/shared_contexts.rb +60 -0
- data/lib/dependabot/bundler/file_parser.rb +13 -1
- data/lib/dependabot/bundler/file_updater.rb +3 -2
- data/lib/dependabot/bundler/file_updater/lockfile_updater.rb +4 -3
- data/lib/dependabot/bundler/helpers.rb +15 -3
- data/lib/dependabot/bundler/native_helpers.rb +8 -1
- data/lib/dependabot/bundler/update_checker.rb +12 -6
- data/lib/dependabot/bundler/update_checker/conflicting_dependency_resolver.rb +5 -2
- data/lib/dependabot/bundler/update_checker/force_updater.rb +6 -3
- data/lib/dependabot/bundler/update_checker/latest_version_finder.rb +6 -3
- data/lib/dependabot/bundler/update_checker/latest_version_finder/dependency_source.rb +5 -3
- data/lib/dependabot/bundler/update_checker/shared_bundler_helpers.rb +0 -4
- data/lib/dependabot/bundler/update_checker/version_resolver.rb +8 -4
- metadata +19 -4
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "tmpdir"
|
4
|
+
require "bundler/compact_index_client"
|
5
|
+
require "bundler/compact_index_client/updater"
|
6
|
+
|
7
|
+
TMP_DIR_PATH = File.expand_path("../tmp", __dir__)
|
8
|
+
|
9
|
+
RSpec.shared_context "in a temporary bundler directory" do
|
10
|
+
let(:project_name) { "gemfile" }
|
11
|
+
|
12
|
+
let(:tmp_path) do
|
13
|
+
Dir.mkdir(TMP_DIR_PATH) unless Dir.exist?(TMP_DIR_PATH)
|
14
|
+
dir = Dir.mktmpdir("native_helper_spec_", TMP_DIR_PATH)
|
15
|
+
Pathname.new(dir).expand_path
|
16
|
+
end
|
17
|
+
|
18
|
+
before do
|
19
|
+
project_dependency_files(project_name).each do |file|
|
20
|
+
File.write(File.join(tmp_path, file[:name]), file[:content])
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def in_tmp_folder(&block)
|
25
|
+
Dir.chdir(tmp_path, &block)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
RSpec.shared_context "without caching rubygems" do
|
30
|
+
before do
|
31
|
+
# Stub Bundler to stop it using a cached versions of Rubygems
|
32
|
+
allow_any_instance_of(Bundler::CompactIndexClient::Updater).
|
33
|
+
to receive(:etag_for).and_return("")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
RSpec.shared_context "stub rubygems compact index" do
|
38
|
+
include_context "without caching rubygems"
|
39
|
+
|
40
|
+
before do
|
41
|
+
# Stub the Rubygems index
|
42
|
+
stub_request(:get, "https://index.rubygems.org/versions").
|
43
|
+
to_return(
|
44
|
+
status: 200,
|
45
|
+
body: fixture("ruby", "rubygems_responses", "index")
|
46
|
+
)
|
47
|
+
|
48
|
+
# Stub the Rubygems response for each dependency we have a fixture for
|
49
|
+
fixtures =
|
50
|
+
Dir[File.join("../../spec", "fixtures", "ruby", "rubygems_responses", "info-*")]
|
51
|
+
fixtures.each do |path|
|
52
|
+
dep_name = path.split("/").last.gsub("info-", "")
|
53
|
+
stub_request(:get, "https://index.rubygems.org/info/#{dep_name}").
|
54
|
+
to_return(
|
55
|
+
status: 200,
|
56
|
+
body: fixture("ruby", "rubygems_responses", "info-#{dep_name}")
|
57
|
+
)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -23,6 +23,7 @@ module Dependabot
|
|
23
23
|
dependency_set += gemspec_dependencies
|
24
24
|
dependency_set += lockfile_dependencies
|
25
25
|
check_external_code(dependency_set.dependencies)
|
26
|
+
instrument_package_manager_version
|
26
27
|
dependency_set.dependencies
|
27
28
|
end
|
28
29
|
|
@@ -42,6 +43,17 @@ module Dependabot
|
|
42
43
|
end
|
43
44
|
end
|
44
45
|
|
46
|
+
def instrument_package_manager_version
|
47
|
+
version = Helpers.detected_bundler_version(lockfile)
|
48
|
+
Dependabot.instrument(
|
49
|
+
Notifications::FILE_PARSER_PACKAGE_MANAGER_VERSION_PARSED,
|
50
|
+
ecosystem: "bundler",
|
51
|
+
package_managers: {
|
52
|
+
"bundler" => version
|
53
|
+
}
|
54
|
+
)
|
55
|
+
end
|
56
|
+
|
45
57
|
def gemfile_dependencies
|
46
58
|
dependencies = DependencySet.new
|
47
59
|
|
@@ -301,7 +313,7 @@ module Dependabot
|
|
301
313
|
end
|
302
314
|
|
303
315
|
def bundler_version
|
304
|
-
@bundler_version ||= Helpers.bundler_version(lockfile)
|
316
|
+
@bundler_version ||= Helpers.bundler_version(lockfile, options: options)
|
305
317
|
end
|
306
318
|
end
|
307
319
|
end
|
@@ -151,7 +151,8 @@ module Dependabot
|
|
151
151
|
dependencies: dependencies,
|
152
152
|
dependency_files: dependency_files,
|
153
153
|
repo_contents_path: repo_contents_path,
|
154
|
-
credentials: credentials
|
154
|
+
credentials: credentials,
|
155
|
+
options: options
|
155
156
|
).updated_lockfile_content
|
156
157
|
end
|
157
158
|
|
@@ -162,7 +163,7 @@ module Dependabot
|
|
162
163
|
end
|
163
164
|
|
164
165
|
def bundler_version
|
165
|
-
@bundler_version ||= Helpers.bundler_version(lockfile)
|
166
|
+
@bundler_version ||= Helpers.bundler_version(lockfile, options: options)
|
166
167
|
end
|
167
168
|
end
|
168
169
|
end
|
@@ -33,11 +33,12 @@ module Dependabot
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def initialize(dependencies:, dependency_files:,
|
36
|
-
repo_contents_path: nil, credentials:)
|
36
|
+
repo_contents_path: nil, credentials:, options:)
|
37
37
|
@dependencies = dependencies
|
38
38
|
@dependency_files = dependency_files
|
39
39
|
@repo_contents_path = repo_contents_path
|
40
40
|
@credentials = credentials
|
41
|
+
@options = options
|
41
42
|
end
|
42
43
|
|
43
44
|
def updated_lockfile_content
|
@@ -54,7 +55,7 @@ module Dependabot
|
|
54
55
|
private
|
55
56
|
|
56
57
|
attr_reader :dependencies, :dependency_files, :repo_contents_path,
|
57
|
-
:credentials
|
58
|
+
:credentials, :options
|
58
59
|
|
59
60
|
def build_updated_lockfile
|
60
61
|
base_dir = dependency_files.first.directory
|
@@ -304,7 +305,7 @@ module Dependabot
|
|
304
305
|
end
|
305
306
|
|
306
307
|
def bundler_version
|
307
|
-
@bundler_version ||= Helpers.bundler_version(lockfile)
|
308
|
+
@bundler_version ||= Helpers.bundler_version(lockfile, options: options)
|
308
309
|
end
|
309
310
|
end
|
310
311
|
end
|
@@ -6,9 +6,21 @@ module Dependabot
|
|
6
6
|
V1 = "1"
|
7
7
|
V2 = "2"
|
8
8
|
|
9
|
-
#
|
10
|
-
|
11
|
-
|
9
|
+
# NOTE: options is a manditory argument to ensure we pass it from all calling classes
|
10
|
+
def self.bundler_version(_lockfile, options:)
|
11
|
+
# For now, force V2 if bundler_2_available
|
12
|
+
return V2 if options[:bundler_2_available]
|
13
|
+
|
14
|
+
# TODO: Add support for bundler v2 based on lockfile
|
15
|
+
# return V2 if lockfile.content.match?(/BUNDLED WITH\s+2/m)
|
16
|
+
|
17
|
+
V1
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.detected_bundler_version(lockfile)
|
21
|
+
return "unknown" unless lockfile
|
22
|
+
return V2 if lockfile.content.match?(/BUNDLED WITH\s+2/m)
|
23
|
+
|
12
24
|
V1
|
13
25
|
end
|
14
26
|
end
|
@@ -17,9 +17,16 @@ module Dependabot
|
|
17
17
|
# Bundler will pick the matching installed major version
|
18
18
|
"BUNDLER_VERSION" => bundler_version,
|
19
19
|
"BUNDLE_GEMFILE" => File.join(versioned_helper_path(bundler_version: bundler_version), "Gemfile"),
|
20
|
-
"BUNDLE_PATH" => File.join(versioned_helper_path(bundler_version: bundler_version), ".bundle")
|
20
|
+
"BUNDLE_PATH" => File.join(versioned_helper_path(bundler_version: bundler_version), ".bundle"),
|
21
|
+
# Prevent the GEM_HOME from being set to a folder owned by root
|
22
|
+
"GEM_HOME" => File.join(versioned_helper_path(bundler_version: bundler_version), ".bundle")
|
21
23
|
}
|
22
24
|
)
|
25
|
+
rescue SharedHelpers::HelperSubprocessFailed => e
|
26
|
+
# TODO: Remove once we stop stubbing out the V2 native helper
|
27
|
+
raise Dependabot::NotImplemented, e.message if e.error_class == "Functions::NotImplementedError"
|
28
|
+
|
29
|
+
raise
|
23
30
|
end
|
24
31
|
end
|
25
32
|
|
@@ -110,7 +110,8 @@ module Dependabot
|
|
110
110
|
ConflictingDependencyResolver.new(
|
111
111
|
dependency_files: dependency_files,
|
112
112
|
repo_contents_path: repo_contents_path,
|
113
|
-
credentials: credentials
|
113
|
+
credentials: credentials,
|
114
|
+
options: options
|
114
115
|
).conflicting_dependencies(
|
115
116
|
dependency: dependency,
|
116
117
|
target_version: lowest_security_fix_version
|
@@ -162,7 +163,8 @@ module Dependabot
|
|
162
163
|
credentials: credentials,
|
163
164
|
target_version: version,
|
164
165
|
requirements_update_strategy: requirements_update_strategy,
|
165
|
-
update_multiple_dependencies: false
|
166
|
+
update_multiple_dependencies: false,
|
167
|
+
options: options
|
166
168
|
).updated_dependencies
|
167
169
|
true
|
168
170
|
rescue Dependabot::DependencyFileNotResolvable
|
@@ -183,7 +185,8 @@ module Dependabot
|
|
183
185
|
credentials: credentials,
|
184
186
|
ignored_versions: ignored_versions,
|
185
187
|
raise_on_ignored: raise_on_ignored,
|
186
|
-
replacement_git_pin: tag
|
188
|
+
replacement_git_pin: tag,
|
189
|
+
options: options
|
187
190
|
).latest_resolvable_version_details
|
188
191
|
true
|
189
192
|
rescue Dependabot::DependencyFileNotResolvable
|
@@ -339,7 +342,8 @@ module Dependabot
|
|
339
342
|
repo_contents_path: repo_contents_path,
|
340
343
|
credentials: credentials,
|
341
344
|
target_version: latest_version,
|
342
|
-
requirements_update_strategy: requirements_update_strategy
|
345
|
+
requirements_update_strategy: requirements_update_strategy,
|
346
|
+
options: options
|
343
347
|
)
|
344
348
|
end
|
345
349
|
|
@@ -365,7 +369,8 @@ module Dependabot
|
|
365
369
|
raise_on_ignored: raise_on_ignored,
|
366
370
|
remove_git_source: remove_git_source,
|
367
371
|
unlock_requirement: unlock_requirement,
|
368
|
-
latest_allowable_version: latest_version
|
372
|
+
latest_allowable_version: latest_version,
|
373
|
+
options: options
|
369
374
|
)
|
370
375
|
end
|
371
376
|
end
|
@@ -386,7 +391,8 @@ module Dependabot
|
|
386
391
|
credentials: credentials,
|
387
392
|
ignored_versions: ignored_versions,
|
388
393
|
raise_on_ignored: raise_on_ignored,
|
389
|
-
security_advisories: security_advisories
|
394
|
+
security_advisories: security_advisories,
|
395
|
+
options: options
|
390
396
|
)
|
391
397
|
end
|
392
398
|
end
|
@@ -12,10 +12,13 @@ module Dependabot
|
|
12
12
|
require_relative "shared_bundler_helpers"
|
13
13
|
include SharedBundlerHelpers
|
14
14
|
|
15
|
-
|
15
|
+
attr_reader :options
|
16
|
+
|
17
|
+
def initialize(dependency_files:, repo_contents_path:, credentials:, options:)
|
16
18
|
@dependency_files = dependency_files
|
17
19
|
@repo_contents_path = repo_contents_path
|
18
20
|
@credentials = credentials
|
21
|
+
@options = options
|
19
22
|
end
|
20
23
|
|
21
24
|
# Finds any dependencies in the lockfile that have a subdependency on
|
@@ -47,7 +50,7 @@ module Dependabot
|
|
47
50
|
private
|
48
51
|
|
49
52
|
def bundler_version
|
50
|
-
@bundler_version ||= Helpers.bundler_version(lockfile)
|
53
|
+
@bundler_version ||= Helpers.bundler_version(lockfile, options: options)
|
51
54
|
end
|
52
55
|
end
|
53
56
|
end
|
@@ -19,7 +19,8 @@ module Dependabot
|
|
19
19
|
def initialize(dependency:, dependency_files:, repo_contents_path: nil,
|
20
20
|
credentials:, target_version:,
|
21
21
|
requirements_update_strategy:,
|
22
|
-
update_multiple_dependencies: true
|
22
|
+
update_multiple_dependencies: true,
|
23
|
+
options:)
|
23
24
|
@dependency = dependency
|
24
25
|
@dependency_files = dependency_files
|
25
26
|
@repo_contents_path = repo_contents_path
|
@@ -27,6 +28,7 @@ module Dependabot
|
|
27
28
|
@target_version = target_version
|
28
29
|
@requirements_update_strategy = requirements_update_strategy
|
29
30
|
@update_multiple_dependencies = update_multiple_dependencies
|
31
|
+
@options = options
|
30
32
|
end
|
31
33
|
|
32
34
|
def updated_dependencies
|
@@ -36,7 +38,8 @@ module Dependabot
|
|
36
38
|
private
|
37
39
|
|
38
40
|
attr_reader :dependency, :dependency_files, :repo_contents_path,
|
39
|
-
:credentials, :target_version, :requirements_update_strategy
|
41
|
+
:credentials, :target_version, :requirements_update_strategy,
|
42
|
+
:options
|
40
43
|
|
41
44
|
def update_multiple_dependencies?
|
42
45
|
@update_multiple_dependencies
|
@@ -149,7 +152,7 @@ module Dependabot
|
|
149
152
|
end
|
150
153
|
|
151
154
|
def bundler_version
|
152
|
-
@bundler_version ||= Helpers.bundler_version(lockfile)
|
155
|
+
@bundler_version ||= Helpers.bundler_version(lockfile, options: options)
|
153
156
|
end
|
154
157
|
end
|
155
158
|
end
|
@@ -15,7 +15,7 @@ module Dependabot
|
|
15
15
|
class LatestVersionFinder
|
16
16
|
def initialize(dependency:, dependency_files:, repo_contents_path: nil,
|
17
17
|
credentials:, ignored_versions:, raise_on_ignored: false,
|
18
|
-
security_advisories:)
|
18
|
+
security_advisories:, options:)
|
19
19
|
@dependency = dependency
|
20
20
|
@dependency_files = dependency_files
|
21
21
|
@repo_contents_path = repo_contents_path
|
@@ -23,6 +23,7 @@ module Dependabot
|
|
23
23
|
@ignored_versions = ignored_versions
|
24
24
|
@raise_on_ignored = raise_on_ignored
|
25
25
|
@security_advisories = security_advisories
|
26
|
+
@options = options
|
26
27
|
end
|
27
28
|
|
28
29
|
def latest_version_details
|
@@ -36,7 +37,8 @@ module Dependabot
|
|
36
37
|
private
|
37
38
|
|
38
39
|
attr_reader :dependency, :dependency_files, :repo_contents_path,
|
39
|
-
:credentials, :ignored_versions, :security_advisories
|
40
|
+
:credentials, :ignored_versions, :security_advisories,
|
41
|
+
:options
|
40
42
|
|
41
43
|
def fetch_latest_version_details
|
42
44
|
return dependency_source.latest_git_version_details if dependency_source.git?
|
@@ -103,7 +105,8 @@ module Dependabot
|
|
103
105
|
@dependency_source ||= DependencySource.new(
|
104
106
|
dependency: dependency,
|
105
107
|
dependency_files: dependency_files,
|
106
|
-
credentials: credentials
|
108
|
+
credentials: credentials,
|
109
|
+
options: options
|
107
110
|
)
|
108
111
|
end
|
109
112
|
|
@@ -17,14 +17,16 @@ module Dependabot
|
|
17
17
|
OTHER = "other"
|
18
18
|
|
19
19
|
attr_reader :dependency, :dependency_files, :repo_contents_path,
|
20
|
-
:credentials
|
20
|
+
:credentials, :options
|
21
21
|
|
22
22
|
def initialize(dependency:,
|
23
23
|
dependency_files:,
|
24
|
-
credentials
|
24
|
+
credentials:,
|
25
|
+
options:)
|
25
26
|
@dependency = dependency
|
26
27
|
@dependency_files = dependency_files
|
27
28
|
@credentials = credentials
|
29
|
+
@options = options
|
28
30
|
end
|
29
31
|
|
30
32
|
# The latest version details for the dependency from a registry
|
@@ -145,7 +147,7 @@ module Dependabot
|
|
145
147
|
end
|
146
148
|
|
147
149
|
def bundler_version
|
148
|
-
@bundler_version ||= Helpers.bundler_version(lockfile)
|
150
|
+
@bundler_version ||= Helpers.bundler_version(lockfile, options: options)
|
149
151
|
end
|
150
152
|
end
|
151
153
|
end
|
@@ -23,7 +23,8 @@ module Dependabot
|
|
23
23
|
raise_on_ignored: false,
|
24
24
|
replacement_git_pin: nil, remove_git_source: false,
|
25
25
|
unlock_requirement: true,
|
26
|
-
latest_allowable_version: nil
|
26
|
+
latest_allowable_version: nil,
|
27
|
+
options:)
|
27
28
|
@dependency = dependency
|
28
29
|
@unprepared_dependency_files = unprepared_dependency_files
|
29
30
|
@credentials = credentials
|
@@ -34,6 +35,7 @@ module Dependabot
|
|
34
35
|
@remove_git_source = remove_git_source
|
35
36
|
@unlock_requirement = unlock_requirement
|
36
37
|
@latest_allowable_version = latest_allowable_version
|
38
|
+
@options = options
|
37
39
|
end
|
38
40
|
|
39
41
|
def latest_resolvable_version_details
|
@@ -45,7 +47,8 @@ module Dependabot
|
|
45
47
|
|
46
48
|
attr_reader :dependency, :unprepared_dependency_files,
|
47
49
|
:repo_contents_path, :credentials, :ignored_versions,
|
48
|
-
:replacement_git_pin, :latest_allowable_version
|
50
|
+
:replacement_git_pin, :latest_allowable_version,
|
51
|
+
:options
|
49
52
|
|
50
53
|
def remove_git_source?
|
51
54
|
@remove_git_source
|
@@ -164,7 +167,8 @@ module Dependabot
|
|
164
167
|
credentials: credentials,
|
165
168
|
ignored_versions: ignored_versions,
|
166
169
|
raise_on_ignored: @raise_on_ignored,
|
167
|
-
security_advisories: []
|
170
|
+
security_advisories: [],
|
171
|
+
options: options
|
168
172
|
).latest_version_details
|
169
173
|
end
|
170
174
|
|
@@ -221,7 +225,7 @@ module Dependabot
|
|
221
225
|
end
|
222
226
|
|
223
227
|
def bundler_version
|
224
|
-
@bundler_version ||= Helpers.bundler_version(lockfile)
|
228
|
+
@bundler_version ||= Helpers.bundler_version(lockfile, options: options)
|
225
229
|
end
|
226
230
|
end
|
227
231
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dependabot-bundler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.138.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dependabot
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-03-
|
11
|
+
date: 2021-03-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dependabot-common
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.138.3
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.138.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: byebug
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -206,6 +206,21 @@ files:
|
|
206
206
|
- helpers/v1/spec/functions/version_resolver_spec.rb
|
207
207
|
- helpers/v1/spec/native_spec_helper.rb
|
208
208
|
- helpers/v1/spec/shared_contexts.rb
|
209
|
+
- helpers/v2/.gitignore
|
210
|
+
- helpers/v2/Gemfile
|
211
|
+
- helpers/v2/build
|
212
|
+
- helpers/v2/lib/functions.rb
|
213
|
+
- helpers/v2/lib/functions/conflicting_dependency_resolver.rb
|
214
|
+
- helpers/v2/lib/functions/file_parser.rb
|
215
|
+
- helpers/v2/monkey_patches/definition_bundler_version_patch.rb
|
216
|
+
- helpers/v2/monkey_patches/definition_ruby_version_patch.rb
|
217
|
+
- helpers/v2/monkey_patches/git_source_patch.rb
|
218
|
+
- helpers/v2/run.rb
|
219
|
+
- helpers/v2/spec/functions/conflicting_dependency_resolver_spec.rb
|
220
|
+
- helpers/v2/spec/functions/file_parser_spec.rb
|
221
|
+
- helpers/v2/spec/functions_spec.rb
|
222
|
+
- helpers/v2/spec/native_spec_helper.rb
|
223
|
+
- helpers/v2/spec/shared_contexts.rb
|
209
224
|
- lib/dependabot/bundler.rb
|
210
225
|
- lib/dependabot/bundler/file_fetcher.rb
|
211
226
|
- lib/dependabot/bundler/file_fetcher/child_gemfile_finder.rb
|