Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Switch to letting
go get
mutatego.mod
#3590Switch to letting
go get
mutatego.mod
#3590Changes from 15 commits
9551b73
df0497a
5ef6efb
acce03d
05cb135
8cb409c
a13eeee
7c75b11
433a4f1
8aff846
478dc2c
475b919
73cecb7
b466bb1
4233836
caaf083
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
This file was deleted.
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
spec/dependabot/go_modules/file_updater/go_mod_updater_spec.rb:245
is failing because we now no longer rungo get -d
on all the modules, so basically we're only running the code forupdate_go_mod
(but now usinggo get
instead of our custom helper), we still need to run a barego get -d
to verify that the packages we have downloaded have the module that we expect to find etc.I verified the tests pass after adding a
go get -d
after this command, but what might be nice is keeping the originaldef run_go_get
method, and moving the contents of this method intodef update_go_mod
I think the tests should pass after that
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, so that was intentional...
I'd thought the generic
go get -d
wasn't needed because we now rely ongo get lib@version
to be smart enough to know how to upgrade a particular library and if some other part of the dep tree is hosed, then we letgo get -d lib@version
decide whether that is relevant or not. I don't expect (or want) dependabot to validate my existing dep tree, I only expect it to validate that version bumps don't put the dep tree in a worse state.I still think that actually.
So let's do this, I'll break this PR in two. The first will keep this generic
go get -d
command, and simply swap out the custom helper forgo get
and then the second will be a discussion of whether this generic command is within the scope of what Dependabot should be doing.That should keep the majority of this PR in a simple, non-controversial PR, and then the second PR (which will be more controversial) can be much more easily reasoned about/researched/discussed.
I'm also reasonably certain this first PR will not solve #3526 which was my original impetus for all this work. That'd require the second PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah I get what you're saying, however:
I think that running the generic
go get -d
still protects against this, for the case the failing test was validating, it prevents updating to a version when the package has been renamed, right?Maybe it is an edge-case we should not worry about, assume peoples CI will fail and they'll figure out what the issue is and update the import statements etc manually, but I definitely appreciate you pulling these out into separate PRs so we can discuss more focussed 🙇
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, a few notes to myself when I get time to dig into this:
go.mod
w/o touchinggo.sum
, so we needed thisgo get
to pickup thosego.sum
changes. (This could have also been done viago mod tidy
, butgo get
was handling it well enough). This is why I originally thought this was no longer needed.go 1.17
.go.mod
, but not the one we are updating. However, regardless whether found in Dependabot or the user's CI, this is still an issue. Unlike Unfixable failure when the dep tree includes a dependency circle and one of those deps at one time referenced a broken module #3526 which is spurious becausego get
simply doesn't handle cyclical deps very well, and doesn't actually need handling.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The test was failing. The backstory is pretty complicated:
go mod tidy
didn't flag it.go 1.16
,go get -d
started flagging the error again.go get -d
togo get -d <dep>@<version>
this error is no longer thrown. Instead thego.mod
file gets updated.I manually replicated the
go get -d github.com/googleapis/gnostic@v0.5.1
followed bygo mod tidy -e
and then updated the test to match what I'm seeing in thego.mod
file.Surprisingly though, the test is still failing complaining that the line isn't present.
So now I'm unclear if the test is wrong somehow, or if there's some wrong code, or what. I'm hesitant to "fix" the test to something that doesn't match the output from when I manually ran the steps.
Anyone else want to take a stab at it?