8000 Merge pull request #587 from itsmemattchung/issues/585 · goodwillcoding/github3.py@f83e58a · GitHub
[go: up one dir, main page]

Skip to content

Commit f83e58a

Browse files
committed
Merge pull request sigmavirus24#587 from itsmemattchung/issues/585
Initial commit for issues/585.
2 parents f971bc9 + 23c3192 commit f83e58a

File tree

7 files changed

+151
-0
lines changed

7 files changed

+151
-0
lines changed

github3/repos/branch.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,26 @@ def _update_attributes(self, branch):
3838
def _repr(self):
3939
return '<Repository Branch [{0}]>'.format(self.name)
4040

41+
def latest_sha(self, differs_from=''):
42+
"""Check if SHA-1 is the same as remote branch
43+
44+
See: https://git.io/vaqIw
45+
46+
:param str differs_from: (optional), sha to compare against
47+
:returns: string of t 8000 he SHA or None
48+
"""
49+
# If-None-Match returns 200 instead of 304 value does not have quotes
50+
headers = {
51+
'Accept': 'application/vnd.github.chitauri-preview+sha',
52+
'If-None-Match': '"{0}"'.format(differs_from)
53+
}
54+
base = self._api.split('/branches', 1)[0]
55+
url = self._build_url('commits', self.name, base_url=base)
56+
resp = self._get(url, headers=headers)
57+
if self._boolean(resp, 200, 304):
58+
return resp.content
59+
return None
60+
4161
def protect(self, enforcement=None, status_checks=None):
4262
"""Enable force push protection and configure status check enforcement.
4363
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"http_interactions": [{"request": {"body": {"string": "", "encoding": "utf-8"}, "headers": {"Accept-Encoding": "gzip, deflate", "Accept": "application/vnd.github.v3.full+json", "User-Agent": "github3.py/1.0.0a4", "Accept-Charset": "utf-8", "Connection": "keep-alive", "Content-Type": 8000 "application/json"}, "method": "GET", "uri": "https://api.github.com/repos/sigmavirus24/github3.py"}, "response": {"body": {"string": "", "base64_string": "H4sIAAAAAAAAA62Yy47jNhBFf8XQNh7Tsvs1AgYzWSXZzaKzycagJFoiWhIFkrLhFvrfc0nq6UH8aGZj2DLr8LLIKlWxDXgaRNvncP0chsugoiULoiDjOm/i7ao+Bctg3xTFrvtD8aykBy4btXkgs1HiWDEZRG1QiIxXYEyHgmKm2TysX7brZUAPVFO5a2SBcbnWtYoIcQ/VylEbxWQiKs0qvUpESRrijL8fvm1By2THMNgAD85YNe84zhgwRc4E5bosziS4qa3J2eC9KApxBOVc9LWJyGBpPGkpvMo+SYFlS4TOGXyHJX0YR3Cl7xdlrVpsoNI7nhqOwoZIlt4trLODLLP/Hy2RrBYW2MQqkbzWXFT3C5xZgyZkRiv+Tj9Hg7UCxEi7X4q1gjU74Czeb+7MWlJLfqDJybhGsoTxA5z9SeSZPYj6VJuw/RuHwriea7ajaWnCcE8LxT6WgZ1eY5B9sETU3Xr652GesmFXMeHPk85FtSh4LKk8LfZCLjhiVu5pgrO6OCKNLHBcF39w/WcTL37/+dfBRC/GvQ1KLkaudf4sGOdyDOnKnlxEIDwBgKQ3dvLiGPuW4LOLpwShTmMhqRbXksZlgTNQS6Y/zVnSjJZewi0AoFwIP09aAEBcqYbddLQvL9xyFOnjp2rK2KW8W6LmMtoRoJUq5PmKMS8PDpCW9FkZ4VAluR+2Z7TEfbO7TTMvqcYemLgQsRcHL0piIS1ROXXvIb3zVWeohjGDSrb3lmoYA1RLz/22Mg1kQOIlqLH1Xjp7Bmk7jxa0yhqa+VEHCHbdvKoz+n61iLkcOyMFSFOhSR43/klu5BilrnZAvPu5dMSMUFuQXC5zrjhgUthYF5Qlv1YXXCZ2iNmx/x+w5pyeo83v62XMdbmG0ZIxJ7uk39F9vNtl/V7ndI6uHfA6Ej2DtL/VVOcmc2GqmkrmI7pDkDamKLZWq1WbM2rL6pJJzwh2BKCoTHJUjT46256Bqqek2lbreyMzRfVeCJp6+XaAAOi20UerI0z3v0Yf6iXQAqbEkhdMaVH55diRMmVXQvM9T27pWC6H2wzUfle8StiSFsUSp1bzhOMco9Y2u4iCk/l5yBGwDFwDuE6lYDjSXl6XzDFa4jrNlNWFOHlnoQnGBLFk6G7SHdXoSjbrcPNlvf0Sbl/Dr9HjS/S4/QdjmjqdjXkyY9bPr+FTtH6Iwiczpm5UPsHYIWH4Gq6j7ddoszFDkFa7c41vuLfAJ+5Kfrk0mPQp5ioChkrlo+GP0Sz6j0uVziwpcEDPIun2OQ/n77rrppCai5LVqD2665lhldv6tIKnU/R0qUjUCo01MSvj7xj6Em42syojEU2F/Xh4flwGR6pREON9Pn3YVydDJ2mmpmrnYj+ItGxMq4onY26ZPDzyNz42tBhlJKvezLWG3XSh0VByKUV37VQhF+BaoWZVN1sv7BFrcE1hZI0mQ4LI/NmvpFtYyva0KfTOFelYSYruohA1llIxfUR72ZMtblradNo2Dx//AmJJY3KGEwAA", "encoding": "utf-8"}, "headers": {"vary": "Accept", "x-github-media-type": "github.v3; param=full; format=json", "x-xss-protection": "1; mode=block", "x-content-type-options": "nosniff", "etag": "W/\"de34db8664c18617526a506267e4c7e7\"", "cache-control": "public, max-age=60, s-maxage=60", "status": "200 OK", "x-ratelimit-remaining": "14", "x-served-by": "e724c57ebb9961c772a91e2dd7421c8d", "access-control-expose-headers": "ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval", "transfer-encoding": "chunked", "x-github-request-id": "D54E579D:10E9F:ADB64A2:56E2A382", "last-modified": "Mon, 07 Mar 2016 16:04:16 GMT", "date": "Fri, 11 Mar 2016 10:52:50 GMT", "access-control-allow-origin": "*", "content-security-policy": "default-src 'none'", "content-encoding": "gzip", "strict-transport-security": "max-age=31536000; includeSubdomains; preload", "server": "GitHub.com", "x-ratelimit-limit": "60", "x-frame-options": "deny", "content-type": "application/json; charset=utf-8", "x-ratelimit-reset": "1457695532"}, "status": {"message": "OK", "code": 200}, "url": "https://api.github.com/repos/sigmavirus24/github3.py"}, "recorded_at": "2016-03-11T10:52:50"}, {"request": {"body": {"string": "", "encoding": "utf-8"}, "headers": {"Accept-Encoding": "gzip, deflate", "Accept": "application/vnd.github.loki-preview+json", "User-Agent": "github3.py/1.0.0a4", "Accept-Charset": "utf-8", "Connection": "keep-alive", "Content-Type": "application/json"}, "method": "GET", "uri": "https://api.github.com/repos/sigmavirus24/github3.py/branches/develop"}, "response": {"body": {"string": "", "base64_string": "H4sIAAAAAAAAA+1XTY/TMBD9K1G47m6c76QSAokTAm5wAVaVY08Si8QOtlNYqv53xmm72xYQTRdx2luVet68eZ4vr31Je/AXPocVdGrwr3ym+l5Yf7H2TUvxnyKPWBHGdV3lNCGszFgcpRHPswSSIi6SJClJSnl5ZEpH2yrtQHb4r6n0XinNqWEKT0JPRYfgRjQ9XQk9mih5ORrQ5kYqDUN3d9MI247VDdLB85xaxzIiYXZN4msSvg/LRZouwvCjv9lztvD/PPZgDG0cp3egG/CGses8DV9HMNZ7lhaJV2vVe+/evtEjNKDDssiDncif5Wf5YXAhcY8rZqwWsjGeVV5LV+DZFjwtmtZ6o+68WunpCx4ce5CWWqEkKmI1oPf9JYU1lBGPSJ4ygCSrirCiZVxHJCtoWcVpGPI0JGWOhgiKrFtrB7MIAjqIA6UDlF6Z4PBWgu09xDfDnfsZOL8mONsfXs4jHW7z0QQz8xClWjI1Ssxk8jgSFxBobd8tj+N+SOc/yrt1dEGg5sTXrEudG17gDFBdg7n0UOadaoQ8KWg8ILi/iBJSxAQPr6il+pTq9NHsctB1AKakRXhX+MEYbI1frJ7HiNboHYaD9f+Wy1M7ORIbLc6/GTxcq65T3xDllPRx0fzqKLi3vEfBEr8QBS3XgcIegNphSBsnhDB2PqnJao1VbOxScIdjUHsNfDaxnR3S+iaR0XrqGxPgWBmmxeCa1HyCR9aIpnRDpfgxtbz5aGjtcnRqabMjnKzQGscipvps863ZOhi0WFF256TRwECsUOwLIU/sEdHeDW4AfcCkcNILC0vKe1eGNe0MnM7FpxI9mmtPJXpJUT2V6G4pDX7T9S8p0YHqaZguPu13OVweq4jxkpdhDCnJKG69CSdFlvI0SouCZyXLeARY849YrfZjf4a382fn4dK422rO9rO52gvBKI9JWVAKhEesInGaFzxnSQgh5JDWhNGsikv+b4SY4e1RQpztZ3OLHXzZCfkFswM1ga6+dHGvNJWsxb394ZnnYjiAO2M9dZv/PQBSG7SywKbnCNIDSasOcC+z+OBx0+7rKNxqgauCHc0SvbNtHCDxScPArZDLzr06kYVUcju63MidFsDvU0lMv4Uc1WiuBX7FBdD5w0cIPhrNNRP+7Waz+Qkez2dHxQ4AAA==", "encoding": "utf-8"}, "headers": {"vary": "Accept", "x-github-media-type": "github.loki-preview; format=json", "x-xss-protection": "1; mode=block", "x-content-type-options": "nosniff", "etag": "W/\"30b5e0e1742d28983cbab707d60d71af\"", "cache-control": "public, max-age=60, s-maxage=60", "status": "200 OK", "x-ratelimit-remaining": "13", "x-served-by": "cee4c0729c8e9147e7abcb45b9d69689", "access-control-expose-headers": "ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval", "transfer-encoding": "chunked", "x-github-request-id": "D54E579D:10E9F:ADB64E1:56E2A382", "date": "Fri, 11 Mar 2016 10:52:51 GMT", "access-control-allow-origin": "*", "content-security-policy": "default-src 'none'", "content-encoding": "gzip", "strict-transport-security": "max-age=31536000; includeSubdomains; preload", "server": "GitHub.com", "x-ratelimit-limit": "60", "x-frame-options": "deny", "content-type": "application/json; charset=utf-8", "x-ratelimit-reset": "1457695532"}, "status": {"message": "OK", "code": 200}, "url": "https://api.github.com/repos/sigmavirus24/github3.py/branches/develop"}, "recorded_at": "2016-03-11T10:52:50"}, {"request": {"body": {"string": "", "encoding": "utf-8"}, "headers": {"Accept-Encoding": "gzip, deflate", "Accept": "application/vnd.github.chitauri-preview+sha", "User-Agent": "github3.py/1.0.0a4", "Accept-Charset": "utf-8", "Connection": "keep-alive", "If-None-Match": "\"872c813ffb7a40c96c3252d764e4838444905ad9\"", "Content-Type": "application/json"}, "method": "GET", "uri": "https://api.github.com/repos/sigmavirus24/github3.py/commits/develop"}, "response": {"body": {"string": "", "encoding": null}, "headers": {"status": "304 Not Modified", "x-ratelimit-remaining": "13", "x-xss-protection": "1; mode=block", "x-content-type-options": "nosniff", "content-security-policy": "default-src 'none'", "access-control-expose-headers": "ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval", "x-github-request-id": "D54E579D:10E9F:ADB6505:56E2A383", "strict-transport-security": "max-age=31536000; includeSubdomains; preload", "vary": "Accept", "server": "GitHub.com", "last-modified": "Tue, 01 Mar 2016 19:55:11 GMT", "x-ratelimit-limit": "60", "etag": "\"872c813ffb7a40c96c3252d764e4838444905ad9\"", "x-served-by": "d594a23ec74671eba905bf91ef329026", "cache-control": "public, max-age=60, s-maxage=60", "date": "Fri, 11 Mar 2016 10:52:51 GMT", "access-control-allow-origin": "*", "x-frame-options": "deny", "x-ratelimit-reset": "1457695532"}, "status": {"message": "Not Modified", "code": 304}, "url": "https://api.github.com/repos/sigmavirus24/github3.py/commits/develop"}, "recorded_at": "2016-03-11T10:52:51"}], "recorded_with": "betamax/0.5.0"}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"http_interactions": [{"request": {"body": {"string": "", "encoding": "utf-8"}, "headers": {"Accept-Encoding": "gzip, deflate", "Accept": "application/vnd.github.v3.full+json", "User-Agent": "github3.py/1.0.0a4", "Accept-Charset": "utf-8", "Connection": "keep-alive", "Content-Type": "application/json"}, "method": "GET", "uri": "https://api.github.com/repos/sigmavirus24/github3.py"}, "response": {"body": {"string": "", "base64_string": "H4sIAAAAAAAAA62Yy47jNhBFf8XQNh7Tsvs1AgYzWSXZzaKzycagJFoiWhIFkrLhFvrfc0nq6UH8aGZj2DLr8LLIKlWxDXgaRNvncP0chsugoiULoiDjOm/i7ao+Bctg3xTFrvtD8aykBy4btXkgs1HiWDEZRG1QiIxXYEyHgmKm2TysX7brZUAPVFO5a2SBcbnWtYoIcQ/VylEbxWQiKs0qvUpESRrijL8fvm1By2THMNgAD85YNe84zhgwRc4E5bosziS4qa3J2eC9KApxBOVc9LWJyGBpPGkpvMo+SYFlS4TOGXyHJX0YR3Cl7xdlrVpsoNI7nhqOwoZIlt4trLODLLP/Hy2RrBYW2MQqkbzWXFT3C5xZgyZkRiv+Tj9Hg7UCxEi7X4q1gjU74Czeb+7MWlJLfqDJybhGsoTxA5z9SeSZPYj6VJuw/RuHwriea7ajaWnCcE8LxT6WgZ1eY5B9sETU3Xr652GesmFXMeHPk85FtSh4LKk8LfZCLjhiVu5pgrO6OCKNLHBcF39w/WcTL37/+dfBRC/GvQ1KLkaudf4sGOdyDOnKnlxEIDwBgKQ3dvLiGPuW4LOLpwShTmMhqRbXksZlgTNQS6Y/zVnSjJZewi0AoFwIP09aAEBcqYbddLQvL9xyFOnjp2rK2KW8W6LmMtoRoJUq5PmKMS8PDpCW9FkZ4VAluR+2Z7TEfbO7TTMvqcYemLgQsRcHL0piIS1ROXXvIb3zVWeohjGDSrb3lmoYA1RLz/22Mg1kQOIlqLH1Xjp7Bmk7jxa0yhqa+VEHCHbdvKoz+n61iLkcOyMFSFOhSR43/klu5BilrnZAvPu5dMSMUFuQXC5zrjhgUthYF5Qlv1YXXCZ2iNmx/x+w5pyeo83v62XMdbmG0ZIxJ7uk39F9vNtl/V7ndI6uHfA6Ej2DtL/VVOcmc2GqmkrmI7pDkDamKLZWq1WbM2rL6pJJzwh2BKCoTHJUjT46256Bqqek2lbreyMzRfVeCJp6+XaAAOi20UerI0z3v0Yf6iXQAqbEkhdMaVH55diRMmVXQvM9T27pWC6H2wzUfle8StiSFsUSp1bzhOMco9Y2u4iCk/l5yBGwDFwDuE6lYDjSXl6XzDFa4jrNlNWFOHlnoQnGBLFk6G7SHdXoSjbrcPNlvf0Sbl/Dr9HjS/S4/QdjmjqdjXkyY9bPr+FTtH6Iwiczpm5UPsHYIWH4Gq6j7ddoszFDkFa7c41vuLfAJ+5Kfrk0mPQp5ioChkrlo+GP0Sz6j0uVziwpcEDPIun2OQ/n77rrppCai5LVqD2665lhldv6tIKnU/R0qUjUCo01MSvj7xj6Em42syojEU2F/Xh4flwGR6pREON9Pn3YVydDJ2mmpmrnYj+ItGxMq4onY26ZPDzyNz42tBhlJKvezLWG3XSh0VByKUV37VQhF+BaoWZVN1sv7BFrcE1hZI0mQ4LI/NmvpFtYyva0KfTOFelYSYruohA1llIxfUR72ZMtblradNo2Dx//AmJJY3KGEwAA", "encoding": "utf-8"}, "headers": {"vary": "Accept", "x-github-media-type": "github.v3; param=full; format=json", "x-xss-protection": "1; mode=block", "x-content-type-options": "nosniff", "etag": "W/\"de34db8664c18617526a506267e4c7e7\"", "cache-control": "public, max-age=60, s-maxage=60", "status": "200 OK", "x-ratelimit-remaining": "12", "x-served-by": "07ff1c8a09e44b62e277fae50a1b1dc4", "access-control-expose-headers": "ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval", "transfer-encoding": "chunked", "x-github-request-id": "D54E579D:10E9F:ADB654D:56E2A383", "last-modified": "Mon, 07 Mar 2016 16:04:16 GMT", "date": "Fri, 11 Mar 2016 10:52:51 GMT", "access-control-allow-origin": "*", "content-security-policy": "default-src 'none'", "content-encoding": "gzip", "strict-transport-security": "max-age=31536000; includeSubdomains; preload", "server": "GitHub.com", "x-ratelimit-limit": "60", "x-frame-options": "deny", "content-type": "application/json; charset=utf-8", "x-ratelimit-reset": "1457695532"}, "status": {"message": "OK", "code": 200}, "url": "https://api.github.com/repos/sigmavirus24/github3.py"}, "recorded_at": "2016-03-11T10:52:51"}, {"request": {"body": {"string": "", "encoding": "utf-8"}, "headers": {"Accept-Encoding": "gzip, deflate", "Accept": "application/vnd.github.loki-preview+json", "User-Agent": "github3.py/1.0.0a4", "Accept-Charset": "utf-8", "Connection": "keep-alive", "Content-Type": "application/json"}, "method": "GET", "uri": "https://api.github.com/repos/sigmavirus24/github3.py/branches/develop"}, "response": {"body": {"string": "", "base64_string": "H4sIAAAAAAAAA+1XTY/TMBD9K1G47m6c76QSAokTAm5wAVaVY08Si8QOtlNYqv53xmm72xYQTRdx2luVet68eZ4vr31Je/AXPocVdGrwr3ym+l5Yf7H2TUvxnyKPWBHGdV3lNCGszFgcpRHPswSSIi6SJClJSnl5ZEpH2yrtQHb4r6n0XinNqWEKT0JPRYfgRjQ9XQk9mih5ORrQ5kYqDUN3d9MI247VDdLB85xaxzIiYXZN4msSvg/LRZouwvCjv9lztvD/PPZgDG0cp3egG/CGses8DV9HMNZ7lhaJV2vVe+/evtEjNKDDssiDncif5Wf5YXAhcY8rZqwWsjGeVV5LV+DZFjwtmtZ6o+68WunpCx4ce5CWWqEkKmI1oPf9JYU1lBGPSJ4ygCSrirCiZVxHJCtoWcVpGPI0JGWOhgiKrFtrB7MIAjqIA6UDlF6Z4PBWgu09xDfDnfsZOL8mONsfXs4jHW7z0QQz8xClWjI1Ssxk8jgSFxBobd8tj+N+SOc/yrt1dEGg5sTXrEudG17gDFBdg7n0UOadaoQ8KWg8ILi/iBJSxAQPr6il+pTq9NHsctB1AKakRXhX+MEYbI1frJ7HiNboHYaD9f+Wy1M7ORIbLc6/GTxcq65T3xDllPRx0fzqKLi3vEfBEr8QBS3XgcIegNphSBsnhDB2PqnJao1VbOxScIdjUHsNfDaxnR3S+iaR0XrqGxPgWBmmxeCa1HyCR9aIpnRDpfgxtbz5aGjtcnRqabMjnKzQGscipvps863ZOhi0WFF256TRwECsUOwLIU/sEdHeDW4AfcCkcNILC0vKe1eGNe0MnM7FpxI9mmtPJXpJUT2V6G4pDX7T9S8p0YHqaZguPu13OVweq4jxkpdhDCnJKG69CSdFlvI0SouCZyXLeARY849YrfZjf4a382fn4dK422rO9rO52gvBKI9JWVAKhEesInGaFzxnSQgh5JDWhNGsikv+b4SY4e1RQpztZ3OLHXzZCfkFswM1ga6+dHGvNJWsxb394ZnnYjiAO2M9dZv/PQBSG7SywKbnCNIDSasOcC+z+OBx0+7rKNxqgauCHc0SvbNtHCDxScPArZDLzr06kYVUcju63MidFsDvU0lMv4Uc1WiuBX7FBdD5w0cIPhrNNRP+7Waz+Qkez2dHxQ4AAA==", "encoding": "utf-8"}, "headers": {"vary": "Accept", "x-github-media-type": "github.loki-preview; format=json", "x-xss-protection": "1; mode=block", "x-content-type-options": "nosniff", "etag": "W/\"30b5e0e1742d28983cbab707d60d71af\"", "cache-control": "public, max-age=60, s-maxage=60", "status": "200 OK", "x-ratelimit-remaining": "11", "x-served-by": "173530fed4bbeb1e264b2ed22e8b5c20", "access-control-expose-headers": "ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval", "transfer-encoding": "chunked", "x-github-request-id": "D54E579D:10E9F:ADB658A:56E2A383", "date": "Fri, 11 Mar 2016 10:52:51 GMT", "access-control-allow-origin": "*", "content-security-policy": "default-src 'none'", "content-encoding": "gzip", "strict-transport-security": "max-age=31536000; includeSubdomains; preload", "server": "GitHub.com", "x-ratelimit-limit": "60", "x-frame-options": "deny", "content-type": "application/json; charset=utf-8", "x-ratelimit-reset": "1457695532"}, "status": {"message": "OK", "code": 200}, "url": "https://api.github.com/repos/sigmavirus24/github3.py/branches/develop"}, "recorded_at": "2016-03-11T10:52:51"}, {"request": {"body": {"string": "", "encoding": "utf-8"}, "headers": {"Accept-Encoding": "gzip, deflate", "Accept": "application/vnd.github.chitauri-preview+sha", "User-Agent": "github3.py/1.0.0a4", "Accept-Charset": "utf-8", "Connection": "keep-alive", "If-None-Match": "\"fakesha12\"", "Content-Type": "application/json"}, "method": "GET", "uri": "https://api.github.com/repos/sigmavirus24/github3.py/commits/develop"}, "response": {"body": {"string": "872c813ffb7a40c96c3252d764e4838444905ad9", "encoding": "utf-8"}, "headers": {"content-length": "40", "vary": "Accept", "x-github-media-type": "github.v3; param=chitauri-preview; format=sha", "x-xss-protection": "1; mode=block", "x-content-type-options": "nosniff", "etag": "\"872c813ffb7a40c96c3252d764e4838444905ad9\"", "cache-control": "public, max-age=60, s-maxage=60", "status": "200 OK", "x-ratelimit-remaining": "10", "x-served-by": "b0ef53392caa42315c6206737946d931", "access-control-expose-headers": "ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval", "x-github-request-id": "D54E579D:10E9F:ADB65A8:56E2A383", "last-modified": "Tue, 01 Mar 2016 19:55:11 GMT", "date": "Fri, 11 Mar 2016 10:52:51 GMT", "access-control-allow-origin": "*", "content-security-policy": "default-src 'none'", "strict-transport-security": "max-age=31536000; includeSubdomains; preload", "server": "GitHub.com", "x-ratelimit-limit": "60", "x-frame-options": "deny", "content-type": "application/vnd.github.chitauri-preview+sha; charset=utf-8", "x-ratelimit-reset": "1457695532"}, "status": {"message": "OK", "code": 200}, "url": "https://api.github.com/repos/sigmavirus24/github3.py/commits/develop"}, "recorded_at": "2016-03-11T10:52:51"}], "recorded_with": "betamax/0.5.0"}

tests/conftest.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,17 @@ def betamax_simple_body(request):
4242
def enterprise_url(request):
4343
"""Configure class with enterprise url."""
4444
request.cls.enterprise_url = 'https://enterprise.github3.com'
45+
46+
47+
class IfNoneMatchMatcher(betamax.BaseMatcher):
48+
49+
name = 'if-none-match'
50+
51+
def match(self, request, recorded_request):
52+
request_header = request.headers.get('If-None-Match')
53+
recorded_header = recorded_request['headers'].get('If-None-Match')
54+
matches = True if request_header == recorded_header else False
55+
return matches
56+
57+
58+
betamax.Betamax.register_request_matcher(IfNoneMatchMatcher)

tests/integration/test_repos_branch.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,29 @@ def test_unprotect(self):
5252
branch = next(repository.branches(protected=True))
5353
branch.unprotect()
5454
assert branch.protection == expected
55+
56+
def test_latest_sha(self):
57+
cassette_name = self.cassette_name('latest_sha')
58+
betamax_kwargs = {
59+
'match_requests_on': ['method', 'uri', 'if-none-match']
60+
}
61+
with self.recorder.use_cassette(cassette_name, **betamax_kwargs):
62+
repository = self.gh.repository('sigmavirus24', 'github3.py')
63+
branch = repository.branch('develop')
64+
sha = '872c813ffb7a40c96c3252d764e4838444905ad9'
65+
latest_sha = branch.latest_sha(differs_from=sha)
66+
67+
assert latest_sha is None
68+
69+
def test_latest_sha_differs(self):
70+
cassette_name = self.cassette_name('latest_sha_differs')
71+
betamax_kwargs = {
72+
'match_requests_on': ['method', 'uri', 'if-none-match']
73+
}
74+
with self.recorder.use_cassette(cassette_name, **betamax_kwargs):
75+
repository = self.gh.repository('sigmavirus24', 'github3.py')
76+
branch = repository.branch('develop')
77+
sha = 'fakesha12'
78+
latest_sha = branch.latest_sha(differs_from=sha)
79+
80+
assert latest_sha

0 commit comments

Comments
 (0)
0