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
1092: /backport commit command does not validate non existing repos #1192
Conversation
|
Looks fine. Do you think it is worth adding additional tests to make sure a 404 correctly returns an empty optional, whereas any other error throws an exception?
@erikj79 This change now passes all automated pre-integration checks. After integration, the commit message for the final commit will be:
You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been no new commits pushed to the
|
Skara doesn't currently have any tests that verifies the interaction with other services, like Github or Jira. I don't know where to start writing such tests. Creating a framework for that is certainly bigger than this fix. |
/integrate |
Going to push as commit 8801187. |
This patch fixes inconsistencies with how Forge.repository(String) behaves for GitHub and GitLab.
From what I can tell, this method is expected to return an Optional.empty() if the repository does not exist, and in the Gitlab case, this is what it does. For Github there is no actual check. In both cases, they call the hosted repository constructor (GitlabRepository and GithubRepository respectively) and expect an exception if it doesn't exist. In the case of Gitlab, the constructor will make a rest call to get information about the repository, while the Github variant does not. It seems this was changed for GitHub a long while back as an optimization, using lazy initialization: #296
I have rewritten this logic and aligned the behavior of Forge.repository(String) between GitHub and GitLab. Now they both will only return Optional.empty() if the rest call to get repository info returns 404. Any other RuntimeException or Error is just let through, as it should be. There are other ways a hosted repository can be created, where Optional is not used in the return value. In these cases we now have consistent throwing of a RuntimeException with the message "Project/Repository not found" (in the GitLab case directly as it's needed for constructing the object, and in the GitHub case when a method is called that triggers the lazy initialization). The assumption is that in these other code paths, the repository name does not originate from human input, but rather other query results, so a 404 is truly unexpected and should result in an exception.
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.java.net/skara pull/1192/head:pull/1192
$ git checkout pull/1192
Update a local copy of the PR:
$ git checkout pull/1192
$ git pull https://git.openjdk.java.net/skara pull/1192/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 1192
View PR using the GUI difftool:
$ git pr show -t 1192
Using diff file
Download this PR as a diff file:
https://git.openjdk.java.net/skara/pull/1192.diff