From 43369be99710f4386d31daa87db9b5cc48f0544d Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Mon, 12 Mar 2012 21:22:10 +0100 Subject: [PATCH] Repository.get_issues_event + coverage --- IntegrationTest.py | 16 +++++++++++----- ReferenceOfApis.md | 4 ++-- github/GithubObjects.py | 19 +++++++++++++++---- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/IntegrationTest.py b/IntegrationTest.py index b01fe4ff..73675ce9 100644 --- a/IntegrationTest.py +++ b/IntegrationTest.py @@ -167,24 +167,29 @@ class IntegrationTest: coveredUrls[ url ].add( verb ) uncoveredMethods = set() + uncoveredApis = set() with open( "ReferenceOfApis.md" ) as file: for line in file.readlines(): line = line.strip() if line.startswith( "API" ): currentApi = line[ 5 : -1 ] apiRegex = re.sub( ":\w+", "\w+", currentApi ) - if line.startswith( "* " ) and line.endswith( "`" ): + if line.startswith( "* " ): verb = line[ 2 : line.find( ":" ) ] for url, verbs in coveredUrls.iteritems(): if re.match( apiRegex, url ) and verb in verbs: break else: - uncoveredMethods.add( line[ line.find( "`" ) + 1 : -1 ] ) + if "`" in line: + uncoveredMethods.add( line[ line.find( "`" ) + 1 : -1 ] ) + else: + uncoveredApis.add( verb + " " + currentApi ) - if len( uncoveredMethods ) != 0: + if len( uncoveredMethods ) != 0 or len( uncoveredApis ) != 0: print - print "Not covered (" + str( len( uncoveredMethods ) ) + "):" + print "Not covered (" + str( len( uncoveredMethods ) + len( uncoveredApis ) ) + "):" print "\n".join( sorted( uncoveredMethods ) ) + print "\n".join( sorted( uncoveredApis ) ) def testAuthenticatedUserDetails( self ): u = self.g.get_user() @@ -318,6 +323,7 @@ class IntegrationTest: self.printList( "Repo events", self.g.get_user().get_repo( "TestPyGithub" ).get_events(), lambda e: e.type ) self.printList( "Repo issues events", self.g.get_user().get_repo( "TestPyGithub" ).get_issues_events(), lambda e: e.event ) + print self.g.get_user().get_repo( "TestPyGithub" ).get_issues_event( 10693379 ).event self.printList( "Repo network events", self.g.get_user().get_repo( "TestPyGithub" ).get_network_events(), lambda e: e.type ) self.printList( "Issue events", self.g.get_user().get_repo( "TestPyGithub" ).get_issue( 23 ).get_events(), lambda e: e.event ) @@ -551,6 +557,6 @@ class IntegrationTest: self.printList( "Emails", u.get_emails() ) def printList( self, title, iterable, f = lambda x: x ): - print title + ":", ", ".join( f( x ) for x in iterable[ :10 ] ), "..." if len( iterable ) > 10 else "" + print title + ":", ", ".join( str( f( x ) ) for x in iterable[ :10 ] ), "..." if len( iterable ) > 10 else "" IntegrationTest().main( sys.argv[ 1: ] ) diff --git a/ReferenceOfApis.md b/ReferenceOfApis.md index f175d68d..5aed45d0 100644 --- a/ReferenceOfApis.md +++ b/ReferenceOfApis.md @@ -208,7 +208,7 @@ API `/repos/:user/:repo/git/trees` API `/repos/:user/:repo/git/trees?base_tree=` ============================================= -* POST: `GitTree.create_update` (TODO) +* POST: (TODO) API `/repos/:user/:repo/git/trees/:sha` ======================================= @@ -275,7 +275,7 @@ API `/repos/:user/:repo/issues/events` API `/repos/:user/:repo/issues/events/:id` ========================================== -* GET: (TODO SOON) +* GET: `Repository.get_issues_event` API `/repos/:user/:repo/keys` ============================= diff --git a/github/GithubObjects.py b/github/GithubObjects.py index 42197018..a1af0dc6 100644 --- a/github/GithubObjects.py +++ b/github/GithubObjects.py @@ -288,6 +288,16 @@ IssueComment = GithubObject( Deletable(), ) +IssueEvent = GithubObject( + "IssueEvent", + BaseUrl( lambda obj: obj._repo._baseUrl + "/issues/events/" + str( obj.id ) ), + InternalSimpleAttributes( + "id", "url", "created_at", "issue", "event", "commit_id", + "_repo", # Ugly hack + ), + InternalObjectAttribute( "actor", NamedUser ), +) + Issue = GithubObject( "Issue", BaseUrl( lambda obj: obj._repo._baseUrl + "/issues/" + str( obj.number ) ), @@ -313,8 +323,8 @@ Issue = GithubObject( ElementGetable( [ "id" ], [], __modifyAttributesForObjectsReferingReferedRepo ), ElementCreatable( [ "body" ], [], __modifyAttributesForObjectsReferingReferedRepo ), ), - ExternalListOfObjects( "events", "event", Event, - ListGetable( [], [] ) + ExternalListOfObjects( "events", "event", IssueEvent, + ListGetable( [], [], __modifyAttributesForObjectsReferingReferedRepo ) ), ) @@ -472,8 +482,9 @@ Repository._addAttributePolicy( MethodFromCallable( "get_network_events", [], [], __getNetworkEvents, SimpleTypePolicy( "list of `Event`" ) ) ) Repository._addAttributePolicy( - ExternalListOfObjects( "issues/events", "issues_event", Event, - ListGetable( [], [] ) + ExternalListOfObjects( "issues/events", "issues_event", IssueEvent, + ListGetable( [], [], __modifyAttributesForObjectsReferingRepo ), + ElementGetable( [ "id" ], [], __modifyAttributesForObjectsReferingRepo ), ) ) Repository._addAttributePolicy(