Support labels for PullRequests (#752)

PullRequests can also have labels attached to them, like Issues or
Milestones. Extend PullRequest to also export them if they are present,
as well as adding methods to add, remove and set labels.
This commit is contained in:
Steve Kowalik
2018-04-16 16:43:07 +08:00
committed by Wan Liuyang
parent 1e0150b527
commit a308dc92df
8 changed files with 444 additions and 1 deletions
+45
View File
@@ -10,6 +10,7 @@
# Copyright 2016 Jannis Gebauer <ja.geb@me.com> #
# Copyright 2016 Peter Buckley <dx-pbuckley@users.noreply.github.com> #
# Copyright 2018 sfdye <tsfdye@gmail.com> #
# Copyright 2018 Steve Kowalik <steven@wedontsleep.org> #
# #
# This file is part of PyGithub. #
# http://pygithub.readthedocs.io/ #
@@ -61,6 +62,7 @@ class PullRequest(Framework.TestCase):
self.assertEqual(self.pull.html_url, "https://github.com/jacquev6/PyGithub/pull/31")
self.assertEqual(self.pull.id, 1436215)
self.assertEqual(self.pull.issue_url, "https://github.com/jacquev6/PyGithub/issues/31")
self.assertListKeyEqual(self.pull.labels, lambda a: a.name, ["refactoring"])
self.assertFalse(self.pull.mergeable)
self.assertTrue(self.pull.merged)
self.assertEqual(self.pull.merged_at, datetime.datetime(2012, 5, 27, 10, 29, 7))
@@ -111,6 +113,49 @@ class PullRequest(Framework.TestCase):
def testGetFiles(self):
self.assertListKeyEqual(self.pull.get_files(), lambda f: f.filename, ["codegen/templates/GithubObject.py", "src/github/AuthenticatedUser.py", "src/github/Authorization.py", "src/github/Branch.py", "src/github/Commit.py", "src/github/CommitComment.py", "src/github/CommitFile.py", "src/github/CommitStats.py", "src/github/Download.py", "src/github/Event.py", "src/github/Gist.py", "src/github/GistComment.py", "src/github/GistHistoryState.py", "src/github/GitAuthor.py", "src/github/GitBlob.py", "src/github/GitCommit.py", "src/github/GitObject.py", "src/github/GitRef.py", "src/github/GitTag.py", "src/github/GitTree.py", "src/github/GitTreeElement.py", "src/github/Hook.py", "src/github/Issue.py", "src/github/IssueComment.py", "src/github/IssueEvent.py", "src/github/Label.py", "src/github/Milestone.py", "src/github/NamedUser.py", "src/github/Organization.py", "src/github/Permissions.py", "src/github/Plan.py", "src/github/PullRequest.py", "src/github/PullRequestComment.py", "src/github/PullRequestFile.py", "src/github/Repository.py", "src/github/RepositoryKey.py", "src/github/Tag.py", "src/github/Team.py", "src/github/UserKey.py", "test/Issue.py", "test/IssueEvent.py", "test/ReplayData/Issue.testAddAndRemoveLabels.txt", "test/ReplayData/Issue.testDeleteAndSetLabels.txt", "test/ReplayData/Issue.testGetLabels.txt", "test/ReplayData/IssueEvent.setUp.txt"])
def testGetLabels(self):
self.assertListKeyEqual(self.pull.get_labels(), lambda l: l.name, ["wip", "refactoring"])
def testAddAndRemoveLabels(self):
wip = self.repo.get_label("wip")
refactoring = self.repo.get_label("refactoring")
self.assertListKeyEqual(self.pull.get_labels(), lambda l: l.name, ["wip", "refactoring", "improvement"])
self.pull.remove_from_labels(wip)
self.assertListKeyEqual(self.pull.get_labels(), lambda l: l.name, ["refactoring", "improvement"])
self.pull.remove_from_labels(refactoring)
self.assertListKeyEqual(self.pull.get_labels(), lambda l: l.name, ["improvement"])
self.pull.add_to_labels(wip, refactoring)
self.assertListKeyEqual(self.pull.get_labels(), lambda l: l.name, ["wip", "refactoring", "improvement"])
def testAddAndRemoveLabelsWithStringArguments(self):
wip = "wip"
refactoring = "refactoring"
self.assertListKeyEqual(self.pull.get_labels(), lambda l: l.name, ["wip", "refactoring", "improvement"])
self.pull.remove_from_labels(wip)
self.assertListKeyEqual(self.pull.get_labels(), lambda l: l.name, ["refactoring", "improvement"])
self.pull.remove_from_labels(refactoring)
self.assertListKeyEqual(self.pull.get_labels(), lambda l: l.name, ["improvement"])
self.pull.add_to_labels(wip, refactoring)
self.assertListKeyEqual(self.pull.get_labels(), lambda l: l.name, ["wip", "refactoring", "improvement"])
def testDeleteAndSetLabels(self):
wip = self.repo.get_label("wip")
refactoring = self.repo.get_label("refactoring")
self.assertListKeyEqual(self.pull.get_labels(), lambda l: l.name, ["wip", "refactoring", "improvement"])
self.pull.delete_labels()
self.assertListKeyEqual(self.pull.get_labels(), None, [])
self.pull.set_labels(wip, refactoring)
self.assertListKeyEqual(self.pull.get_labels(), lambda l: l.name, ["wip", "refactoring"])
def testDeleteAndSetLabelsWithStringArguments(self):
wip = "wip"
refactoring = "refactoring"
self.assertListKeyEqual(self.pull.get_labels(), lambda l: l.name, ["wip", "refactoring", "improvement"])
self.pull.delete_labels()
self.assertListKeyEqual(self.pull.get_labels(), None, [])
self.pull.set_labels(wip, refactoring)
self.assertListKeyEqual(self.pull.get_labels(), lambda l: l.name, ["wip", "refactoring"])
def testMerge(self):
self.assertFalse(self.pull.is_merged())
status = self.pull.merge()