Add a test showing the silly bug described in issue #139

This commit is contained in:
Vincent Jacques
2013-02-08 08:29:18 +01:00
parent 6b32e1cdf5
commit f533731151
4 changed files with 55 additions and 0 deletions
+1
View File
@@ -63,3 +63,4 @@ from Issue87 import *
from Issue131 import *
from Issue133 import *
from Issue134 import *
from Issue139 import *
+29
View File
@@ -0,0 +1,29 @@
# -*- coding: utf-8 -*-
# Copyright 2012 Vincent Jacques
# vincent@vincent-jacques.net
# This file is part of PyGithub. http://vincent-jacques.net/PyGithub
# PyGithub is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License
# as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public License along with PyGithub. If not, see <http://www.gnu.org/licenses/>.
import Framework
import github
class Issue139(Framework.TestCase): # https://github.com/jacquev6/PyGithub/issues/139
def setUp(self):
Framework.TestCase.setUp(self)
self.user = self.g.get_user().get_repo("PyGithub").get_issue(139).user
def testCompletion(self):
self.assertEqual(self.user._GithubObject__completed, False)
self.assertEqual(self.user.name, "Ian Ozsvald")
self.assertEqual(self.user._GithubObject__completed, False) # Should be True
self.assertEqual(self.user.plan, None) # Should NOT fire a new request to Github
@@ -0,0 +1,15 @@
https GET api.github.com None /user {'Authorization': 'Basic login_and_password_removed'} null
200
[('status', '200 OK'), ('content-length', '1464'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('vary', 'Accept, Authorization, Cookie'), ('x-ratelimit-remaining', '4994'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 07 Feb 2013 18:20:14 GMT'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '"e0a49ecde4e224bb688cb9d21b420114"'), ('cache-control', 'private, s-maxage=60, max-age=60'), ('date', 'Fri, 08 Feb 2013 07:27:49 GMT'), ('content-type', 'application/json; charset=utf-8')]
{"collaborators":1,"plan":{"collaborators":1,"space":614400,"private_repos":5,"name":"micro"},"blog":"http://vincent-jacques.net","type":"User","company":"Criteo","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","followers_url":"https://api.github.com/users/jacquev6/followers","total_private_repos":4,"following":37,"created_at":"2010-07-09T06:10:06Z","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","following_url":"https://api.github.com/users/jacquev6/following","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","public_gists":2,"location":"Paris, France","received_events_url":"https://api.github.com/users/jacquev6/received_events","owned_private_repos":4,"public_repos":21,"private_gists":5,"followers":22,"email":"vincent@vincent-jacques.net","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","html_url":"https://github.com/jacquev6","hireable":false,"organizations_url":"https://api.github.com/users/jacquev6/orgs","name":"Vincent Jacques","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","login":"jacquev6","disk_usage":13312,"updated_at":"2013-02-07T18:20:14Z","bio":"","id":327146,"repos_url":"https://api.github.com/users/jacquev6/repos"}
https GET api.github.com None /repos/jacquev6/PyGithub {'Authorization': 'Basic login_and_password_removed'} null
200
[('status', '200 OK'), ('content-length', '4615'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('x-ratelimit-limit', '5000'), ('vary', 'Accept, Authorization, Cookie'), ('x-ratelimit-remaining', '4993'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 08 Feb 2013 05:51:24 GMT'), ('connection', 'keep-alive'), ('etag', '"846e3aa719a81e1f9c6cedaa6bab919e"'), ('cache-control', 'private, s-maxage=60, max-age=60'), ('date', 'Fri, 08 Feb 2013 07:27:50 GMT'), ('content-type', 'application/json; charset=utf-8')]
{"id":3544490,"archive_url":"https://api.github.com/repos/jacquev6/PyGithub/{archive_format}{/ref}","fork":false,"html_url":"https://github.com/jacquev6/PyGithub","full_name":"jacquev6/PyGithub","subscribers_url":"https://api.github.com/repos/jacquev6/PyGithub/subscribers","watchers":152,"has_wiki":true,"notifications_url":"https://api.github.com/repos/jacquev6/PyGithub/notifications{?since,all,participating}","compare_url":"https://api.github.com/repos/jacquev6/PyGithub/compare/{base}...{head}","blobs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/blobs{/sha}","tags_url":"https://api.github.com/repos/jacquev6/PyGithub/tags{/tag}","forks_count":43,"default_branch":"master","open_issues":12,"created_at":"2012-02-25T12:53:47Z","teams_url":"https://api.github.com/repos/jacquev6/PyGithub/teams","labels_url":"https://api.github.com/repos/jacquev6/PyGithub/labels{/name}","comments_url":"https://api.github.com/repos/jacquev6/PyGithub/comments{/number}","merges_url":"https://api.github.com/repos/jacquev6/PyGithub/merges","master_branch":"master","stargazers_url":"https://api.github.com/repos/jacquev6/PyGithub/stargazers","pushed_at":"2013-02-07T18:10:11Z","statuses_url":"https://api.github.com/repos/jacquev6/PyGithub/statuses/{sha}","branches_url":"https://api.github.com/repos/jacquev6/PyGithub/branches{/branch}","milestones_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones{/number}","language":"Python","description":"Python library implementing the full Github API v3","forks_url":"https://api.github.com/repos/jacquev6/PyGithub/forks","forks":43,"collaborators_url":"https://api.github.com/repos/jacquev6/PyGithub/collaborators{/collaborator}","ssh_url":"git@github.com:jacquev6/PyGithub.git","watchers_count":152,"url":"https://api.github.com/repos/jacquev6/PyGithub","updated_at":"2013-02-08T05:51:24Z","contents_url":"https://api.github.com/repos/jacquev6/PyGithub/contents/{+path}","trees_url":"https://api.github.com/repos/jacquev6/PyGithub/git/trees{/sha}","homepage":"http://vincent-jacques.net/PyGithub","assignees_url":"https://api.github.com/repos/jacquev6/PyGithub/assignees{/user}","has_downloads":true,"has_issues":true,"clone_url":"https://github.com/jacquev6/PyGithub.git","commits_url":"https://api.github.com/repos/jacquev6/PyGithub/commits{/sha}","private":false,"keys_url":"https://api.github.com/repos/jacquev6/PyGithub/keys{/key_id}","git_url":"git://github.com/jacquev6/PyGithub.git","downloads_url":"https://api.github.com/repos/jacquev6/PyGithub/downloads","git_commits_url":"https://api.github.com/repos/jacquev6/PyGithub/git/commits{/sha}","mirror_url":null,"svn_url":"https://github.com/jacquev6/PyGithub","name":"PyGithub","git_refs_url":"https://api.github.com/repos/jacquev6/PyGithub/git/refs{/sha}","languages_url":"https://api.github.com/repos/jacquev6/PyGithub/languages","permissions":{"push":true,"admin":true,"pull":true},"open_issues_count":12,"issue_comment_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/comments/{number}","size":384,"issue_events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/events{/number}","issues_url":"https://api.github.com/repos/jacquev6/PyGithub/issues{/number}","pulls_url":"https://api.github.com/repos/jacquev6/PyGithub/pulls{/number}","subscription_url":"https://api.github.com/repos/jacquev6/PyGithub/subscription","git_tags_url":"https://api.github.com/repos/jacquev6/PyGithub/git/tags{/sha}","network_count":43,"contributors_url":"https://api.github.com/repos/jacquev6/PyGithub/contributors","events_url":"https://api.github.com/repos/jacquev6/PyGithub/events","hooks_url":"https://api.github.com/repos/jacquev6/PyGithub/hooks","owner":{"type":"User","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/jacquev6/followers","repos_url":"https://api.github.com/users/jacquev6/repos","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","following_url":"https://api.github.com/users/jacquev6/following","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","received_events_url":"https://api.github.com/users/jacquev6/received_events","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","organizations_url":"https://api.github.com/users/jacquev6/orgs","login":"jacquev6","id":327146}}
https GET api.github.com None /repos/jacquev6/PyGithub/issues/139 {'Authorization': 'Basic login_and_password_removed'} null
200
[('status', '200 OK'), ('content-length', '4824'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('vary', 'Accept, Authorization, Cookie'), ('x-ratelimit-remaining', '4992'), ('server', 'GitHub.com'), ('last-modified', 'Fri, 08 Feb 2013 07:13:44 GMT'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '"4194b45d4744a28a5b6393ef05bd3bbc"'), ('cache-control', 'private, s-maxage=60, max-age=60'), ('date', 'Fri, 08 Feb 2013 07:27:50 GMT'), ('content-type', 'application/json; charset=utf-8')]
{"closed_by":null,"events_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/139/events","created_at":"2013-02-07T22:12:31Z","url":"https://api.github.com/repos/jacquev6/PyGithub/issues/139","body":"I noticed that calls to a user object (e.g. user.email, user.location etc) caused multiple calls to GitHub. Looking at GithubObject.py I see several references to __completed and one to _completed (single underscore) on line 72. Changing line 72 to use a double underscore removed the repeated calls to Github.\r\n\r\nI tried to run your tests but can't figure out how to do so? I'd have left you a pull request if so. I tried \"python -m unittest discover\" and also just running the files, I'm not familiar with the format you've used. I'm happy to run with logs etc if that's useful (some guidance on how to run the tests would be super helpful too). Thanks, Ian.","user":{"type":"User","events_url":"https://api.github.com/users/ianozsvald/events{/privacy}","followers_url":"https://api.github.com/users/ianozsvald/followers","subscriptions_url":"https://api.github.com/users/ianozsvald/subscriptions","gists_url":"https://api.github.com/users/ianozsvald/gists{/gist_id}","following_url":"https://api.github.com/users/ianozsvald/following","url":"https://api.github.com/users/ianozsvald","avatar_url":"https://secure.gravatar.com/avatar/3d644406158b4d440111903db1f62622?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","received_events_url":"https://api.github.com/users/ianozsvald/received_events","gravatar_id":"3d644406158b4d440111903db1f62622","organizations_url":"https://api.github.com/users/ianozsvald/orgs","starred_url":"https://api.github.com/users/ianozsvald/starred{/owner}{/repo}","login":"ianozsvald","id":273210,"repos_url":"https://api.github.com/users/ianozsvald/repos"},"comments_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/139/comments","closed_at":null,"milestone":{"due_on":null,"created_at":"2013-02-07T18:19:05Z","url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/21","open_issues":3,"description":"","creator":{"type":"User","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","followers_url":"https://api.github.com/users/jacquev6/followers","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","following_url":"https://api.github.com/users/jacquev6/following","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","received_events_url":"https://api.github.com/users/jacquev6/received_events","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","organizations_url":"https://api.github.com/users/jacquev6/orgs","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","login":"jacquev6","id":327146,"repos_url":"https://api.github.com/users/jacquev6/repos"},"closed_issues":0,"state":"open","title":"Version 1.11.1","number":21,"updated_at":"2013-02-08T07:11:03Z","id":262264,"labels_url":"https://api.github.com/repos/jacquev6/PyGithub/milestones/21/labels"},"state":"open","labels":[{"url":"https://api.github.com/repos/jacquev6/PyGithub/labels/Bug","name":"Bug","color":"e10c02"},{"url":"https://api.github.com/repos/jacquev6/PyGithub/labels/Requested+by+user","name":"Requested by user","color":"e10c02"}],"title":"Typo in GithubObject \"self._completed\" -> \"self.__completed\"?","number":139,"html_url":"https://github.com/jacquev6/PyGithub/issues/139","pull_request":{"diff_url":null,"html_url":null,"patch_url":null},"updated_at":"2013-02-08T07:13:44Z","id":10758585,"labels_url":"https://api.github.com/repos/jacquev6/PyGithub/issues/139/labels{/name}","comments":1,"assignee":{"type":"User","events_url":"https://api.github.com/users/jacquev6/events{/privacy}","followers_url":"https://api.github.com/users/jacquev6/followers","subscriptions_url":"https://api.github.com/users/jacquev6/subscriptions","gists_url":"https://api.github.com/users/jacquev6/gists{/gist_id}","following_url":"https://api.github.com/users/jacquev6/following","url":"https://api.github.com/users/jacquev6","avatar_url":"https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","received_events_url":"https://api.github.com/users/jacquev6/received_events","gravatar_id":"b68de5ae38616c296fa345d2b9df2225","organizations_url":"https://api.github.com/users/jacquev6/orgs","starred_url":"https://api.github.com/users/jacquev6/starred{/owner}{/repo}","login":"jacquev6","id":327146,"repos_url":"https://api.github.com/users/jacquev6/repos"}}
@@ -0,0 +1,10 @@
https GET api.github.com None /users/ianozsvald {'Authorization': 'Basic login_and_password_removed'} null
200
[('status', '200 OK'), ('x-ratelimit-remaining', '4991'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('x-ratelimit-limit', '5000'), ('vary', 'Accept, Authorization, Cookie'), ('content-length', '1278'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 07 Feb 2013 22:12:31 GMT'), ('connection', 'keep-alive'), ('etag', '"c7e39237717a6e60232f1dde7c4dcb73"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 08 Feb 2013 07:27:51 GMT'), ('content-type', 'application/json; charset=utf-8')]
{"type":"User","public_repos":26,"company":"Mor Consulting Ltd","events_url":"https://api.github.com/users/ianozsvald/events{/privacy}","followers_url":"https://api.github.com/users/ianozsvald/followers","following":4,"created_at":"2010-05-11T10:22:02Z","hireable":true,"subscriptions_url":"https://api.github.com/users/ianozsvald/subscriptions","gists_url":"https://api.github.com/users/ianozsvald/gists{/gist_id}","following_url":"https://api.github.com/users/ianozsvald/following","url":"https://api.github.com/users/ianozsvald","html_url":"https://github.com/ianozsvald","location":"London, UK","bio":null,"starred_url":"https://api.github.com/users/ianozsvald/starred{/owner}{/repo}","avatar_url":"https://secure.gravatar.com/avatar/3d644406158b4d440111903db1f62622?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png","followers":45,"email":null,"gravatar_id":"3d644406158b4d440111903db1f62622","repos_url":"https://api.github.com/users/ianozsvald/repos","organizations_url":"https://api.github.com/users/ianozsvald/orgs","public_gists":2,"name":"Ian Ozsvald","login":"ianozsvald","updated_at":"2013-02-07T22:12:31Z","blog":"ianozsvald.com","received_events_url":"https://api.github.com/users/ianozsvald/received_events","id":273210}
https GET api.github.com None /users/ianozsvald {'Authorization': 'Basic login_and_password_removed'} null
200
[('status', '200 OK'), ('content-length', '1278'), ('x-github-media-type', 'github.beta; format=json'), ('x-content-type-options', 'nosniff'), ('x-ratelimit-limit', '5000'), ('vary', 'Accept, Authorization, Cookie'), ('x-ratelimit-remaining', '4990'), ('server', 'GitHub.com'), ('last-modified', 'Thu, 07 Feb 2013 22:12:31 GMT'), ('connection', 'keep-alive'), ('etag', '"c7e39237717a6e60232f1dde7c4dcb73"'), ('cache-control', 'private, max-age=60, s-maxage=60'), ('date', 'Fri, 08 Feb 2013 07:27:51 GMT'), ('content-type', 'application/json; charset=utf-8')]
{"public_gists":2,"type":"User","public_repos":26,"company":"Mor Consulting Ltd","hireable":true,"repos_url":"https://api.github.com/users/ianozsvald/repos","followers_url":"https://api.github.com/users/ianozsvald/followers","following":4,"created_at":"2010-05-11T10:22:02Z","subscriptions_url":"https://api.github.com/users/ianozsvald/subscriptions","starred_url":"https://api.github.com/users/ianozsvald/starred{/owner}{/repo}","gists_url":"https://api.github.com/users/ianozsvald/gists{/gist_id}","following_url":"https://api.github.com/users/ianozsvald/following","url":"https://api.github.com/users/ianozsvald","location":"London, UK","bio":null,"received_events_url":"https://api.github.com/users/ianozsvald/received_events","blog":"ianozsvald.com","followers":45,"email":null,"gravatar_id":"3d644406158b4d440111903db1f62622","html_url":"https://github.com/ianozsvald","organizations_url":"https://api.github.com/users/ianozsvald/orgs","name":"Ian Ozsvald","login":"ianozsvald","updated_at":"2013-02-07T22:12:31Z","id":273210,"events_url":"https://api.github.com/users/ianozsvald/events{/privacy}","avatar_url":"https://secure.gravatar.com/avatar/3d644406158b4d440111903db1f62622?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"}