Skip to content

Commit bbb2dae

Browse files
Update Branch.sync_with_upstream to correcly send required data. (sigmavirus24#1199)
* Update Branch.sync_with_upstream to correcly send required data. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fix lint errors. * Fix silly test error. --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent af2d9af commit bbb2dae

File tree

5 files changed

+38
-6
lines changed

5 files changed

+38
-6
lines changed

AUTHORS.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,3 +226,5 @@ Contributors
226226
- Thomas Buchner (@MrBatschner)
227227

228228
- Chris Cotter (@ccotter)
229+
230+
- Daniel Diniz (@devdanzin)

src/github3/repos/branch.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,17 +166,13 @@ def protect(
166166
def sync_with_upstream(self) -> t.Mapping[str, str]:
167167
"""Synchronize this branch with the upstream.
168168
169-
.. warning::
170-
171-
This API endpoint is still in Beta per gitHub
172-
173169
.. versionadded:: 3.0.0
174170
175171
Sync a branch of a forked repository to keep it up-to-date with the
176172
upstream repository.
177173
178174
See also:
179-
https://docs.github.com/en/rest/reference/repos#sync-a-fork-branch-with-the-upstream-repository
175+
https://docs.github.com/en/rest/branches/branches#sync-a-fork-branch-with-the-upstream-repository
180176
181177
:returns:
182178
The dictionary described in the documentation
@@ -185,7 +181,7 @@ def sync_with_upstream(self) -> t.Mapping[str, str]:
185181
"""
186182
base = self._api.split("/branches", 1)[0]
187183
url = self._build_url("merge-upstream", base_url=base)
188-
json = self._json(self._post(url), 200)
184+
json = self._json(self._post(url, data={"branch": self.name}), 200)
189185
return json
190186

191187
@decorators.requires_auth
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"http_interactions": [{"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["github3.py/4.0.1"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["application/vnd.github.v3.full+json"], "Connection": ["keep-alive"], "Accept-Charset": ["utf-8"], "Content-Type": ["application/json"], "Authorization": ["token <AUTH_TOKEN>"]}, "method": "GET", "uri": "https://api.github.com/repos/devdanzin/cpython"}, "response": {"body": {"encoding": "utf-8", "base64_string": "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", "string": ""}, "headers": {"Date": ["Thu, 17 Oct 2024 15:20:14 GMT"], "Content-Type": ["application/json; charset=utf-8"], "Cache-Control": ["private, max-age=60, s-maxage=60"], "Vary": ["Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With"], "ETag": ["W/\"8f47f7c7601f53b27d896470216b96e512d311317207af2dae3ff4692348f62f\""], "Last-Modified": ["Thu, 17 Oct 2024 14:13:30 GMT"], "github-authentication-token-expiration": ["2025-01-15 11:11:08 -0300"], "X-GitHub-Media-Type": ["github.v3; param=full; format=json"], "x-accepted-github-permissions": ["metadata=read"], "x-github-api-version-selected": ["2022-11-28"], "X-RateLimit-Limit": ["5000"], "X-RateLimit-Remaining": ["4996"], "X-RateLimit-Reset": ["1729181822"], "X-RateLimit-Used": ["4"], "X-RateLimit-Resource": ["core"], "Access-Control-Expose-Headers": ["ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset"], "Access-Control-Allow-Origin": ["*"], "Strict-Transport-Security": ["max-age=31536000; includeSubdomains; preload"], "X-Frame-Options": ["deny"], "X-Content-Type-Options": ["nosniff"], "X-XSS-Protection": ["0"], "Referrer-Policy": ["origin-when-cross-origin, strict-origin-when-cross-origin"], "Content-Security-Policy": ["default-src 'none'"], "Content-Encoding": ["gzip"], "Transfer-Encoding": ["chunked"], "Server": ["github.com"], "X-GitHub-Request-Id": ["5820:26AC7A:4759A3:4BDA74:67112B2E"]}, "status": {"code": 200, "message": "OK"}, "url": "https://api.github.com/repos/devdanzin/cpython"}, "recorded_at": "2024-10-17T15:20:14"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["github3.py/4.0.1"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["application/vnd.github.loki-preview+json"], "Connection": ["keep-alive"], "Accept-Charset": ["utf-8"], "Content-Type": ["application/json"], "Authorization": ["token <AUTH_TOKEN>"]}, "method": "GET", "uri": "https://api.github.com/repos/devdanzin/cpython/branches/main"}, "response": {"body": {"encoding": "utf-8", "base64_string": "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", "string": ""}, "headers": {"Date": ["Thu, 17 Oct 2024 15:20:14 GMT"], "Content-Type": ["application/json; charset=utf-8"], "Cache-Control": ["private, max-age=60, s-maxage=60"], "Vary": ["Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With"], "ETag": ["W/\"ff2877c6e7c6074caa640ac16bc243d0c41c49597a4972116cf3eebf0d5aaf68\""], "github-authentication-token-expiration": ["2025-01-15 11:11:08 -0300"], "X-GitHub-Media-Type": ["github.v3; param=loki-preview; format=json"], "x-accepted-github-permissions": ["contents=read"], "x-github-api-version-selected": ["2022-11-28"], "X-RateLimit-Limit": ["5000"], "X-RateLimit-Remaining": ["4995"], "X-RateLimit-Reset": ["1729181822"], "X-RateLimit-Used": ["5"], "X-RateLimit-Resource": ["core"], "Access-Control-Expose-Headers": ["ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset"], "Access-Control-Allow-Origin": ["*"], "Strict-Transport-Security": ["max-age=31536000; includeSubdomains; preload"], "X-Frame-Options": ["deny"], "X-Content-Type-Options": ["nosniff"], "X-XSS-Protection": ["0"], "Referrer-Policy": ["origin-when-cross-origin, strict-origin-when-cross-origin"], "Content-Security-Policy": ["default-src 'none'"], "Content-Encoding": ["gzip"], "Transfer-Encoding": ["chunked"], "Server": ["github.com"], "X-GitHub-Request-Id": ["5820:26AC7A:4759F5:4BDAC4:67112B2E"]}, "status": {"code": 200, "message": "OK"}, "url": "https://api.github.com/repos/devdanzin/cpython/branches/main"}, "recorded_at": "2024-10-17T15:20:14"}, {"request": {"body": {"encoding": "utf-8", "string": "{\"branch\": \"main\"}"}, "headers": {"User-Agent": ["github3.py/4.0.1"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["application/vnd.github.v3.full+json"], "Connection": ["keep-alive"], "Accept-Charset": ["utf-8"], "Content-Type": ["application/json"], "Content-Length": ["18"], "Authorization": ["token <AUTH_TOKEN>"]}, "method": "POST", "uri": "https://api.github.com/repos/devdanzin/cpython/merge-upstream"}, "response": {"body": {"encoding": "utf-8", "base64_string": "H4sIAAAAAAAAA02MSwrDMAwFryK0bnuAXKMHCIotxYX4gywTTOjdq+6yfG+YuTBz77QzLvgeIfiQcRwThC0kjkAlglC3p1Q9SaNfojXDaN2UKUOblmpZMn3KCx+e051Xm+1fvIvONuq8bkolJIc3Eb8/6CBOGIgAAAA=", "string": ""}, "headers": {"Date": ["Thu, 17 Oct 2024 15:20:15 GMT"], "Content-Type": ["application/json; charset=utf-8"], "Cache-Control": ["private, max-age=60, s-maxage=60"], "Vary": ["Accept, Authorization, Cookie, X-GitHub-OTP,Accept-Encoding, Accept, X-Requested-With"], "ETag": ["W/\"5f066f9e4b594b308e099fe06dd359a6998faafa1d5d359df0e6a2e50d3b6de4\""], "github-authentication-token-expiration": ["2025-01-15 11:11:08 -0300"], "X-GitHub-Media-Type": ["github.v3; param=full; format=json"], "x-accepted-github-permissions": ["contents=write"], "x-github-api-version-selected": ["2022-11-28"], "X-RateLimit-Limit": ["5000"], "X-RateLimit-Remaining": ["4994"], "X-RateLimit-Reset": ["1729181822"], "X-RateLimit-Used": ["6"], "X-RateLimit-Resource": ["core"], "Access-Control-Expose-Headers": ["ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset"], "Access-Control-Allow-Origin": ["*"], "Strict-Transport-Security": ["max-age=31536000; includeSubdomains; preload"], "X-Frame-Options": ["deny"], "X-Content-Type-Options": ["nosniff"], "X-XSS-Protection": ["0"], "Referrer-Policy": ["origin-when-cross-origin, strict-origin-when-cross-origin"], "Content-Security-Policy": ["default-src 'none'"], "Content-Encoding": ["gzip"], "Transfer-Encoding": ["chunked"], "Server": ["github.com"], "X-GitHub-Request-Id": ["5820:26AC7A:475A21:4BDAEF:67112B2E"]}, "status": {"code": 200, "message": "OK"}, "url": "https://api.github.com/repos/devdanzin/cpython/merge-upstream"}, "recorded_at": "2024-10-17T15:20:15"}], "recorded_with": "betamax/0.9.0"}

tests/integration/test_repos_branch.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,22 @@ def test_latest_sha_differs(self):
3333
latest_sha = branch.latest_sha(differs_from=sha)
3434

3535
assert not isinstance(latest_sha, bytes)
36+
37+
def test_sync_with_upstream(self):
38+
self.token_login()
39+
cassette_name = self.cassette_name("sync_with_upstream")
40+
betamax_kwargs = {
41+
"match_requests_on": ["method", "uri", "if-none-match"]
42+
}
43+
with self.recorder.use_cassette(cassette_name, **betamax_kwargs):
44+
repository = self.gh.repository("devdanzin", "cpython")
45+
branch = repository.branch("main")
46+
result = branch.sync_with_upstream()
47+
48+
msg = (
49+
"Successfully fetched and fast-forwarded"
50+
" from upstream python:main."
51+
)
52+
assert result["message"] == msg
53+
assert result["merge_type"] == "fast-forward"
54+
assert result["base_branch"] == "python:main"

tests/unit/test_repos_branch.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
url_for_commits = helper.create_url_helper(
1212
"https://api.github.com/repos/octocat/Hello-World/commits/master"
1313
)
14+
url_for_sync = helper.create_url_helper(
15+
"https://api.github.com/repos/octocat/Hello-World/merge-upstream"
16+
)
1417

1518

1619
class TestBranch(helper.UnitHelper):
@@ -30,6 +33,13 @@ def test_latest_sha(self):
3033
url_for_commits(), headers=headers
3134
)
3235

36+
def test_sync_with_upstream(self):
37+
"""Verify the request fot syncing a branch with upstream."""
38+
self.instance.sync_with_upstream()
39+
self.session.post.assert_called_once_with(
40+
url_for_sync(), '{"branch": "master"}'
41+
)
42+
3343
def test_unprotect(self):
3444
"""Verify the request to unprotect a branch."""
3545
self.instance.unprotect()
@@ -44,6 +54,10 @@ class TestBranchRequiresAuth(helper.UnitRequiresAuthenticationHelper):
4454
described_class = github3.repos.branch.Branch
4555
example_data = get_example_data()
4656

57+
def test_sync_with_upstream(self):
58+
"""Verify that branch syncing with upstream requires authentication."""
59+
self.assert_requires_auth(self.instance.sync_with_upstream)
60+
4761
def test_protect(self):
4862
"""Verify that protecting a branch requires authentication."""
4963
self.assert_requires_auth(self.instance.protect)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy