Skip to content

Commit

Permalink
Merge #3661: [go_modules] Gracefully handle +incompatible versions wh…
Browse files Browse the repository at this point in the history
…en checking for updates
  • Loading branch information
jasonrudolph authored May 7, 2021
2 parents c9debc9 + 73e9118 commit eb4f477
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

require "excon"

require "dependabot/go_modules/update_checker"
require "dependabot/shared_helpers"
require "dependabot/errors"
require "dependabot/go_modules/requirement"
Expand Down Expand Up @@ -70,6 +71,8 @@ def available_versions
}
)

return [version_class.new(dependency.version)] if version_strings.nil?

version_strings.select { |v| version_class.correct?(v) }.
map { |v| version_class.new(v) }
end
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# frozen_string_literal: true

require "dependabot/dependency"
require "dependabot/dependency_file"
require "dependabot/go_modules/native_helpers"
require "dependabot/go_modules/update_checker/latest_version_finder"

RSpec.describe Dependabot::GoModules::UpdateChecker::LatestVersionFinder do
describe "#latest_version" do
let(:dependency_name) { "github.com/dependabot-fixtures/go-modules-lib" }

let(:dependency_version) { "1.0.0" }

let(:dependency) do
Dependabot::Dependency.new(
name: dependency_name,
version: dependency_version,
package_manager: "go_modules",
requirements: [{
file: "go.mod",
requirement: dependency_version,
groups: [],
source: { type: "default", source: dependency_name }
}]
)
end

let(:go_mod_content) do
<<~GOMOD
module foobar
require #{dependency_name} v#{dependency_version}
GOMOD
end

let(:dependency_files) do
[
Dependabot::DependencyFile.new(
name: "go.mod",
content: go_mod_content
)
]
end

context "when the latest version is an '+incompatible' version" do # https://golang.org/ref/mod#incompatible-versions
let(:dependency_name) { "github.com/dependabot-fixtures/go-modules-incompatible" }
let(:dependency_version) { "2.0.0+incompatible" }

it "returns the current version" do
finder = described_class.new(
dependency: dependency,
dependency_files: dependency_files,
credentials: [{
"type" => "git_source",
"host" => "github.com",
"username" => "x-access-token",
"password" => "token"
}],
ignored_versions: []
)

expect(finder.latest_version).to eq(Dependabot::GoModules::Version.new("2.0.0+incompatible"))
end
end
end
end

0 comments on commit eb4f477

Please sign in to comment.