feat: Refactor repositories download contents#4153
feat: Refactor repositories download contents#4153stevehipwell wants to merge 4 commits intogoogle:masterfrom
Conversation
Signed-off-by: Steve Hipwell <steve.hipwell@gmail.com>
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #4153 +/- ##
==========================================
+ Coverage 93.76% 93.77% +0.01%
==========================================
Files 211 211
Lines 19701 19677 -24
==========================================
- Hits 18472 18452 -20
+ Misses 1031 1029 -2
+ Partials 198 196 -2 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
@gmlewis can we get this merged? |
gmlewis
left a comment
There was a problem hiding this comment.
I'm quite concerned about this PR because it appears to me that the behavior of following redirects has been deleted and there are many unit tests that have also simply been deleted without comment or explanation. One of the great things about unit tests is that when major refactors are performed like this one, if the unit tests are left alone we can easily detect regressions. As it is in this PR, however, where a major refactor happens and unit tests are also heavily refactored and/or deleted, it is hard to tell what is actually happening.
Can this be broken down into 3 PRs?
- Update the openapi_operations.yaml file - I'll do that myself momentarily.
- Refactor the download methods without modifying unit tests
- Refactor and/or delete unit tests
| - name: GET /repos/{owner}/{repo}/pages/builds/{build_id} | ||
| documentation_url: https://docs.github.com/rest/pages/pages#get-github-pages-build | ||
| openapi_commit: 4e819bd9aa9411232e1c34e7d1ffaaffc224e94b | ||
| openapi_commit: e6a345665a64530821d4ebcd07e7805a0cdeff09 |
There was a problem hiding this comment.
We typically like to update this file in PRs that only update the one file to keep all our PR clean and focused I can do that in a separate PR if it is needed for this one.
|
@gmlewis let me take a look, but the main problem here is that the tests appear to be tightly coupled to the implementation with mocks designed to make the test pass rather than to mirror the actual API. I'll add the deleted tests back, but the mocks will need to be refactored to add the schema required download_url to the content payload. On a slight tangent, shouldn't the mock payloads be validated against the schema? |
Yes, they probably be should. I don't remember when GitHub v3 API docs started sharing schemas for endpoints, but it is possible that these were written prior to that. I think my biggest concern is following redirects because I remember a bunch of issues devoted solely to this topic, and to my shock and disappointment, I don't see any of the unit tests actually testing out following redirects and I could have sworn that it took a good deal of effort to get those unit tests to pass at one point. :-( |
This PR refactors the behaviour of
DownloadContents&DownloadContentsWithMetawith the former now being a direct passthrough to the latter as the only difference was the signature. The code has been refactored to use the API directly instead of via an unnecessary layer of indirection.I've added an OpenAPI update to this PR as it proves that the updated code works against GitHub.
This change is required for #4151.