Class: Dependabot::Nuget::CompatibilityChecker

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dependabot/nuget/update_checker/compatibility_checker.rb

Instance Method Summary collapse

Constructor Details

#initialize(dependency_urls:, dependency:) ⇒ CompatibilityChecker

Returns a new instance of CompatibilityChecker.



24
25
26
27
# File 'lib/dependabot/nuget/update_checker/compatibility_checker.rb', line 24

def initialize(dependency_urls:, dependency:)
  @dependency_urls = dependency_urls
  @dependency = dependency
end

Instance Method Details

#compatible?(version) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/dependabot/nuget/update_checker/compatibility_checker.rb', line 30

def compatible?(version)
  nuspec_xml = NuspecFetcher.fetch_nuspec(dependency_urls, dependency.name, version)
  return false unless nuspec_xml

  # development dependencies are packages such as analyzers which need to be compatible with the compiler not the
  # project itself, but some packages that report themselves as development dependencies still contain target
  # framework dependencies and should be checked for compatibility through the regular means
  return true if pure_development_dependency?(nuspec_xml)

  package_tfms = parse_package_tfms(nuspec_xml)
  package_tfms = fetch_package_tfms(version) if package_tfms.empty?
  # nil is a special return value that indicates that the package is likely a development dependency
  return true if package_tfms.nil?
  return false if package_tfms.empty?

  return false if project_tfms.nil? || project_tfms&.empty?

  TfmComparer.are_frameworks_compatible?(T.must(project_tfms), package_tfms)
end