Mercurial > repos > bcclaywell > argo_navis
comparison venv/lib/python2.7/site-packages/github/tests/ExposeAllAttributes.py @ 0:d67268158946 draft
planemo upload commit a3f181f5f126803c654b3a66dd4e83a48f7e203b
author | bcclaywell |
---|---|
date | Mon, 12 Oct 2015 17:43:33 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:d67268158946 |
---|---|
1 # -*- coding: utf-8 -*- | |
2 | |
3 # ########################## Copyrights and license ############################ | |
4 # # | |
5 # Copyright 2013 Vincent Jacques <vincent@vincent-jacques.net> # | |
6 # # | |
7 # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # | |
8 # # | |
9 # PyGithub is free software: you can redistribute it and/or modify it under # | |
10 # the terms of the GNU Lesser General Public License as published by the Free # | |
11 # Software Foundation, either version 3 of the License, or (at your option) # | |
12 # any later version. # | |
13 # # | |
14 # PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY # | |
15 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # | |
16 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # | |
17 # details. # | |
18 # # | |
19 # You should have received a copy of the GNU Lesser General Public License # | |
20 # along with PyGithub. If not, see <http://www.gnu.org/licenses/>. # | |
21 # # | |
22 # ############################################################################## | |
23 | |
24 import Framework | |
25 | |
26 | |
27 class ExposeAllAttributes(Framework.TestCase): | |
28 def testAllClasses(self): | |
29 authenticatedUser = self.g.get_user() | |
30 namedUser = self.g.get_user("nvie") | |
31 repository = authenticatedUser.get_repo("PyGithub") | |
32 organization = self.g.get_organization("BeaverSoftware") | |
33 plan = authenticatedUser.plan | |
34 branch = repository.get_branch("master") | |
35 commit = repository.get_commit("1292bf0e22c796e91cc3d6e24b544aece8c21f2a") | |
36 commitStats = commit.stats | |
37 commitStatus = commit.get_statuses()[0] | |
38 milestone = repository.get_milestone(17) | |
39 gist = self.g.get_gist("149016") | |
40 gistComment = gist.get_comment(4565) | |
41 gistFile = gist.files[".gitignore"] | |
42 gistHistoryState = gist.history[0] | |
43 gitCommit = repository.get_git_commit("be37b8a7f3a68631c32672dcd84d9eba27438ee6") | |
44 gitAuthor = gitCommit.author | |
45 gitTree = repository.get_git_tree("6f7c2d8c66d78863f7b91792deaead619799a1ce") | |
46 gitTreeElement = gitTree.tree[0] | |
47 gitBlob = repository.get_git_blob("681fb61f1761743a02f5c790f1c762cbfe8cfad1") | |
48 gitRef = repository.get_git_ref("tags/v1.17.0") | |
49 gitObject = gitRef.object | |
50 issue = repository.get_issue(188) | |
51 issueComment = issue.get_comment(22686536) | |
52 issueEvent = issue.get_events()[0] | |
53 issuePullRequest = issue.pull_request | |
54 gitignoreTemplate = self.g.get_gitignore_template("Python") | |
55 team = organization.get_team(141487) | |
56 label = repository.get_label("Bug") | |
57 pullRequest = repository.get_pull(31) | |
58 pullRequestComment = pullRequest.get_review_comment(1580134) | |
59 pullRequestPart = pullRequest.base | |
60 file = pullRequest.get_files()[0] | |
61 commitComment = repository.get_comment(3630301) | |
62 status = self.g.get_api_status() | |
63 statusMessage = self.g.get_last_api_status_message() | |
64 rateLimit = self.g.get_rate_limit() | |
65 rate = rateLimit.rate | |
66 hook = repository.get_hooks()[0] | |
67 hookResponse = hook.last_response | |
68 hookDescription = self.g.get_hooks()[0] | |
69 comparison = repository.compare("master", "develop") | |
70 contentFile = repository.get_file_contents("README.rst") | |
71 permissions = repository.permissions | |
72 event = repository.get_events()[0] | |
73 notification = authenticatedUser.get_notification("8406712") | |
74 notificationSubject = notification.subject | |
75 | |
76 missingAttributes = self.gatherMissingAttributes([ | |
77 authenticatedUser, | |
78 # authorization, # Security issue if put as-is in ReplayData | |
79 # authorizationApplication, # Security issue if put as-is in ReplayData | |
80 branch, | |
81 commit, | |
82 commitComment, | |
83 commitStats, | |
84 commitStatus, | |
85 comparison, | |
86 contentFile, | |
87 # download, # Deprecated: https://github.com/blog/1302-goodbye-uploads | |
88 event, | |
89 file, | |
90 gist, | |
91 gistComment, | |
92 gistFile, | |
93 gistHistoryState, | |
94 gitAuthor, | |
95 gitBlob, | |
96 gitCommit, | |
97 gitignoreTemplate, | |
98 gitObject, | |
99 gitRef, | |
100 # gitTag, | |
101 gitTree, | |
102 gitTreeElement, | |
103 hook, | |
104 hookDescription, | |
105 hookResponse, | |
106 issue, | |
107 issueComment, | |
108 issueEvent, | |
109 issuePullRequest, | |
110 label, | |
111 milestone, | |
112 namedUser, | |
113 notification, | |
114 notificationSubject, | |
115 organization, | |
116 permissions, | |
117 plan, | |
118 pullRequest, | |
119 pullRequestComment, | |
120 # pullRequestMergeStatus, # Only obtained when merging a pull request through the API | |
121 pullRequestPart, | |
122 rate, | |
123 rateLimit, | |
124 repository, | |
125 # repositoryKey, # Security issue if put as-is in ReplayData | |
126 status, | |
127 statusMessage, | |
128 # tag, | |
129 team, | |
130 # userKey, # Security issue if put as-is in ReplayData | |
131 ]) | |
132 | |
133 for className, attributesMissingInClass in sorted(missingAttributes.iteritems()): | |
134 for attrName, value in sorted(attributesMissingInClass.iteritems()): | |
135 print className, attrName, "->", repr(value) | |
136 | |
137 self.assertEqual(sum(len(attrs) for attrs in missingAttributes.values()), 0) | |
138 | |
139 def findMissingAttributes(self, obj): | |
140 if hasattr(obj, "update"): | |
141 obj.update() | |
142 className = obj.__class__.__name__ | |
143 missingAttributes = {} | |
144 for attribute in obj.raw_data: | |
145 if attribute != "_links": | |
146 if not hasattr(obj, attribute): | |
147 missingAttributes[attribute] = obj.raw_data[attribute] | |
148 return (className, missingAttributes) | |
149 | |
150 def gatherMissingAttributes(self, objs): | |
151 allMissingAttributes = dict() | |
152 | |
153 for obj in objs: | |
154 className, attributesMissingInClass = self.findMissingAttributes(obj) | |
155 if len(attributesMissingInClass) > 0: | |
156 if className not in allMissingAttributes: | |
157 allMissingAttributes[className] = dict() | |
158 allMissingAttributes[className].update(attributesMissingInClass) | |
159 | |
160 return allMissingAttributes |