mirror of
https://github.com/status-im/PyGithub.git
synced 2026-09-01 19:31:10 +00:00
Merge pull request #382 from doctoryes/master
Add ability to check combined status.
This commit is contained in:
@@ -31,6 +31,7 @@ import github.PaginatedList
|
||||
import github.GitCommit
|
||||
import github.NamedUser
|
||||
import github.CommitStatus
|
||||
import github.CommitCombinedStatus
|
||||
import github.File
|
||||
import github.CommitStats
|
||||
import github.CommitComment
|
||||
@@ -203,6 +204,17 @@ class Commit(github.GithubObject.CompletableGithubObject):
|
||||
None
|
||||
)
|
||||
|
||||
def get_combined_status(self):
|
||||
"""
|
||||
:calls: `GET /repos/:owner/:repo/commits/:ref/status/ <http://developer.github.com/v3/repos/statuses>`_
|
||||
:rtype: :class:`github.CommitCombinedStatus.CommitCombinedStatus`
|
||||
"""
|
||||
headers, data = self._requester.requestJsonAndCheck(
|
||||
"GET",
|
||||
self.url + "/status"
|
||||
)
|
||||
return github.CommitCombinedStatus.CommitCombinedStatus(self._requester, headers, data, completed=True)
|
||||
|
||||
@property
|
||||
def _identity(self):
|
||||
return self.sha
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# ########################## Copyrights and license ############################
|
||||
# #
|
||||
# Copyright 2012 Vincent Jacques <vincent@vincent-jacques.net> #
|
||||
# Copyright 2012 Zearin <zearin@gonk.net> #
|
||||
# Copyright 2013 AKFish <akfish@gmail.com> #
|
||||
# Copyright 2013 Vincent Jacques <vincent@vincent-jacques.net> #
|
||||
# #
|
||||
# This file is part of PyGithub. http://jacquev6.github.com/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 github.GithubObject
|
||||
|
||||
import github.CommitStatus
|
||||
import github.Repository
|
||||
|
||||
|
||||
class CommitCombinedStatus(github.GithubObject.NonCompletableGithubObject):
|
||||
"""
|
||||
This class represents CommitCombinedStatus as returned for example by https://developer.github.com/v3/repos/statuses/
|
||||
"""
|
||||
|
||||
@property
|
||||
def state(self):
|
||||
"""
|
||||
:type: string
|
||||
"""
|
||||
return self._state.value
|
||||
|
||||
@property
|
||||
def sha(self):
|
||||
"""
|
||||
:type: string
|
||||
"""
|
||||
return self._sha.value
|
||||
|
||||
@property
|
||||
def total_count(self):
|
||||
"""
|
||||
:type: integer
|
||||
"""
|
||||
return self._total_count.value
|
||||
|
||||
@property
|
||||
def commit_url(self):
|
||||
"""
|
||||
:type: string
|
||||
"""
|
||||
return self._commit_url.value
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
"""
|
||||
:type: string
|
||||
"""
|
||||
return self._url.value
|
||||
|
||||
@property
|
||||
def repository(self):
|
||||
"""
|
||||
:type: :class:`github.Repository.Repository`
|
||||
"""
|
||||
return self._repository.value
|
||||
|
||||
@property
|
||||
def statuses(self):
|
||||
"""
|
||||
:type: list of :class:`CommitStatus`
|
||||
"""
|
||||
return self._statuses.value
|
||||
|
||||
def _initAttributes(self):
|
||||
self._state = github.GithubObject.NotSet
|
||||
self._sha = github.GithubObject.NotSet
|
||||
self._total_count = github.GithubObject.NotSet
|
||||
self._commit_url = github.GithubObject.NotSet
|
||||
self._url = github.GithubObject.NotSet
|
||||
self._repository = github.GithubObject.NotSet
|
||||
self._statuses = github.GithubObject.NotSet
|
||||
|
||||
def _useAttributes(self, attributes):
|
||||
if "state" in attributes: # pragma no branch
|
||||
self._state = self._makeStringAttribute(attributes["state"])
|
||||
if "sha" in attributes: # pragma no branch
|
||||
self._sha = self._makeStringAttribute(attributes["sha"])
|
||||
if "total_count" in attributes: # pragma no branch
|
||||
self._total_count = self._makeIntAttribute(attributes["total_count"])
|
||||
if "commit_url" in attributes: # pragma no branch
|
||||
self._commit_url = self._makeStringAttribute(attributes["commit_url"])
|
||||
if "url" in attributes: # pragma no branch
|
||||
self._url = self._makeStringAttribute(attributes["url"])
|
||||
if "repository" in attributes: # pragma no branch
|
||||
self._repository = self._makeClassAttribute(github.Repository.Repository, attributes["repository"])
|
||||
if "statuses" in attributes: # pragma no branch
|
||||
self._statuses = self._makeListOfClassesAttribute(github.CommitStatus.CommitStatus, attributes["statuses"])
|
||||
@@ -29,6 +29,7 @@ from Authentication import *
|
||||
from Authorization import *
|
||||
from Branch import *
|
||||
from Commit import *
|
||||
from CommitCombinedStatus import *
|
||||
from CommitComment import *
|
||||
from CommitStatus import *
|
||||
from ContentFile import *
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# ########################## Copyrights and license ############################
|
||||
# #
|
||||
# Copyright 2012 Vincent Jacques <vincent@vincent-jacques.net> #
|
||||
# Copyright 2012 Zearin <zearin@gonk.net> #
|
||||
# Copyright 2013 Vincent Jacques <vincent@vincent-jacques.net> #
|
||||
# #
|
||||
# This file is part of PyGithub. http://jacquev6.github.com/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 datetime
|
||||
|
||||
|
||||
class CommitCombinedStatus(Framework.TestCase):
|
||||
def setUp(self):
|
||||
Framework.TestCase.setUp(self)
|
||||
self.combined_status = self.g.get_repo("edx/edx-platform").get_commit("74e70119a23fa3ffb3db19d4590eccfebd72b659").get_combined_status()
|
||||
|
||||
def testAttributes(self):
|
||||
self.assertEqual(self.combined_status.state, "success")
|
||||
self.assertEqual(self.combined_status.statuses[0].url, "https://api.github.com/repos/edx/edx-platform/statuses/74e70119a23fa3ffb3db19d4590eccfebd72b659")
|
||||
self.assertEqual(self.combined_status.statuses[1].id, 390603044)
|
||||
self.assertEqual(self.combined_status.statuses[2].state, "success")
|
||||
self.assertEqual(self.combined_status.statuses[3].description, "Build finished.")
|
||||
self.assertEqual(self.combined_status.statuses[4].target_url, "https://build.testeng.edx.org/job/edx-platform-python-unittests-pr/10504/")
|
||||
self.assertEqual(self.combined_status.statuses[4].created_at, datetime.datetime(2015, 12, 14, 13, 24, 18))
|
||||
self.assertEqual(self.combined_status.statuses[3].updated_at, datetime.datetime(2015, 12, 14, 13, 23, 35))
|
||||
self.assertEqual(self.combined_status.sha, "74e70119a23fa3ffb3db19d4590eccfebd72b659")
|
||||
self.assertEqual(self.combined_status.total_count, 6)
|
||||
self.assertEqual(self.combined_status.repository.id, 10391073)
|
||||
self.assertEqual(self.combined_status.repository.full_name, "edx/edx-platform")
|
||||
self.assertEqual(self.combined_status.commit_url, "https://api.github.com/repos/edx/edx-platform/commits/74e70119a23fa3ffb3db19d4590eccfebd72b659")
|
||||
self.assertEqual(self.combined_status.url, "https://api.github.com/repos/edx/edx-platform/commits/74e70119a23fa3ffb3db19d4590eccfebd72b659/status")
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user