How to use close_issue method in Kiwi

Best Python code snippet using Kiwi_python

close-old-issues.py

Source:close-old-issues.py Github

copy

Full Screen

...41 auth=github_auth)42 r.raise_for_status()43 time.sleep(1)44 return r.json()45def close_issue(issue, github_auth):46 """Attempt to close an issue and return whether it succeeded."""47 closed_issue = issue.copy()48 closed_issue['state'] = 'closed'49 r = requests.post("https://api.github.com/repos/Khan/khan-exercises/"50 "issues/%s" % issue['number'],51 data=json.dumps(closed_issue), auth=github_auth)52 try:53 r.raise_for_status()54 time.sleep(1)55 return True56 except requests.HTTPError:57 # TODO(alpert): Catch IOError or something?58 return False59def post_issue_comment(issue, comment_text, github_auth):60 """Attempt to post an issue comment and return whether it succeeded."""61 closed_issue = issue.copy()62 closed_issue['state'] = 'closed'63 r = requests.post("https://api.github.com/repos/Khan/khan-exercises/"64 "issues/%s/comments" % issue['number'],65 data=json.dumps({'body': comment_text}), auth=github_auth)66 try:67 r.raise_for_status()68 time.sleep(1)69 return True70 except requests.HTTPError:71 # TODO(alpert): Catch IOError or something?72 return False73def close_old_issues(close_before, github_auth):74 notabug_taggers = collections.Counter()75 realbug_taggers = collections.Counter()76 all_issues = fetch_issues(github_auth)77 for issue in all_issues:78 # Only close issues created by KhanBugz79 if issue['user']['login'] != "KhanBugz":80 continue81 issue_created = datetime.datetime.strptime(82 issue['created_at'], "%Y-%m-%dT%H:%M:%SZ")83 if issue['comments']:84 comments = fetch_issue_comments(issue, github_auth)85 # Reverse so the last realbug/notabug comment wins86 for comment in reversed(comments):87 user = comment['user']['login']88 body = comment['body'].lower()89 if 'realbug' in body:90 realbug_taggers[user] += 191 break92 elif 'notabug' in body:93 notabug_taggers[user] += 194 if close_issue(issue, github_auth):95 print "closed issue %s (%s)" % (issue['number'], user)96 else:97 print "error closing issue %s (%s)" % (issue['number'],98 user)99 break100 elif issue_created < close_before:101 if post_issue_comment(issue, AUTOCLOSE_MESSAGE, github_auth):102 print "added comment to old issue %s" % issue['number']103 else:104 print "error adding comment to old issue %s" % issue['number']105 if close_issue(issue, github_auth):106 print "closed old issue %s" % issue['number']107 else:108 print "error closing old issue %s" % issue['number']109 return notabug_taggers, realbug_taggers110if __name__ == '__main__':111 close_before = datetime.datetime.today() - datetime.timedelta(days=8)112 print113 print "This script will close all issues opened by KhanBugz"114 print "with 'notabug' (case-insensitive) in a comment or opened"115 print "before", close_before.date(), "with no comments."116 print117 default_user = "KhanBugz"118 github_user = (raw_input("GitHub username [%s]: " % default_user)119 or default_user)...

Full Screen

Full Screen

CloseIssue_tests.py

Source:CloseIssue_tests.py Github

copy

Full Screen

1import unittest2from mock import Mock, patch3from jira.exceptions import JIRAError4from icinga2jira import CloseIssue, CantCloseTicketException5ANY_ISSUE = {'id': 'any id'}6ANY_TRANSITIONS = [{'name': 'Close', 'id': 45},7 {'name': 'Start Work', 'id': 11},8]9def create_issue_mock(key):10 issue = Mock()11 issue.key.return_value = key12 return issue13class TestCloseIssue(unittest.TestCase):14 def setUp(self):15 self.jira_mock = Mock()16 self.ticket = Mock()17 self.icinga_environment = Mock()18 self.icinga_environment.get_jira_recovery_label.return_value = 'ICI#123'19 self.close_issue = CloseIssue(self.jira_mock, self.icinga_environment)20 self.print_patcher = patch('__builtin__.print')21 self.print_patcher.start()22 def tearDown(self):23 self.print_patcher.stop()24 def test_find_jira_issue_by_label(self):25 self.jira_mock.search_issues.return_value = 'found issue'26 result = self.close_issue._find_jira_issues_by_label()27 self.assertEqual('found issue', result)28 self.ticket.get_jira_recovery_label.assert_called()29 self.jira_mock.search_issues.assert_called_with("labels='ICI#123'")30 def test_set_comment(self):31 with patch.object(CloseIssue, 'create_description', return_value='comment') as create_mock:32 close_issue = CloseIssue(self.jira_mock, self.icinga_environment)33 close_issue._set_comment(ANY_ISSUE)34 create_mock.create_description.assert_called()35 self.jira_mock.add_comment.assert_called_with(ANY_ISSUE, 'comment')36 def test_get_close_transition_returns_id_of_close_transition_in_issue(self):37 self.jira_mock.transitions.return_value = ANY_TRANSITIONS38 actual_transition_id = self.close_issue._get_close_transition({'id': 'any id'})39 self.assertEqual(45, actual_transition_id)40 def test_get_close_transition_with_unicode(self):41 self.jira_mock.transitions.return_value = ANY_TRANSITIONS42 actual_transition_id = self.close_issue._get_close_transition({'id': 'any id'})43 self.assertEqual(45, actual_transition_id)44 def test_get_close_transition_raises_exception_when_no_close_transition_has_been_found(self):45 transitions = [{'name': 'Start Work', 'id': 11}]46 self.jira_mock.transitions.return_value = transitions47 self.assertRaises(CantCloseTicketException,48 self.close_issue._get_close_transition,49 ANY_ISSUE)50 def test_get_close_transition_raises_exception_when_no_transitions_have_been_found(self):51 self.jira_mock.transitions.return_value = []52 self.assertRaises(CantCloseTicketException,53 self.close_issue._get_close_transition,54 ANY_ISSUE)55 def test_close_happy_trail(self):56 transitions = [{'name': 'Close', 'id': 45}]57 self.jira_mock.transitions.return_value = transitions58 self.close_issue._close(ANY_ISSUE)59 self.jira_mock.transition_issue.assert_called_with(ANY_ISSUE, 45)60 def test_close_on_already_closed_ticket_raises_exception(self):61 self.jira_mock.transitions.return_value = []62 self.assertRaises(CantCloseTicketException, self.close_issue._close, ANY_ISSUE)63 def test_close_reraises_exception_if_jira_fails(self):64 self.jira_mock.transitions.return_value = ANY_TRANSITIONS65 self.jira_mock.transition_issue.side_effect = JIRAError66 self.assertRaises(CantCloseTicketException,67 self.close_issue._close, ANY_ISSUE)68 def test_execute_is_called_properly_and_returns_list_of_handled_issues(self):69 find_mock = Mock(return_value=['issue1', 'issue2'])70 close_mock = Mock()71 comment_mock = Mock()72 with patch.multiple(CloseIssue,73 _find_jira_issues_by_label=find_mock,74 _close=close_mock,75 _set_comment=comment_mock76 ) as values:77 close_issue = CloseIssue(self.jira_mock, self.icinga_environment)78 result = close_issue.execute()79 self.assertEqual(find_mock.call_count, 1)80 self.assertEqual(close_mock.call_count, 2)81 comment_mock.assert_called_twice_with(comment_str='comment')82 self.assertEqual(['issue1', 'issue2'], result)83 def test_execute_skips_issues_causing_CantCloseTicketException(self):84 find_mock = Mock(return_value=[create_issue_mock('a'), create_issue_mock('b')])85 close_mock = Mock(side_effect=CantCloseTicketException())86 comment_mock = Mock()87 with patch.multiple(CloseIssue,88 _find_jira_issues_by_label=find_mock,89 _close=close_mock,90 _set_comment=comment_mock91 ) as values:92 close_issue = CloseIssue(self.jira_mock, self.icinga_environment)93 result = close_issue.execute()94 self.assertEqual(find_mock.call_count, 1)95 self.assertEqual(close_mock.call_count, 2)96 comment_mock.assert_not_called()...

Full Screen

Full Screen

main.py

Source:main.py Github

copy

Full Screen

...11 def open_issue(self, channel_id):12 if self.assign_users.get(channel_id) is not None:13 raise ValueError("Already opened.")14 self.assign_users[channel_id] = []15 def close_issue(self, channel_id):16 if self.assign_users.get(channel_id) is None:17 raise ValueError("not opened.")18 del self.assign_users[channel_id]19 def assign(self, channel_id, user_id):20 if self.assign_users.get(channel_id) is None:21 raise ValueError("not opened.", 0)22 elif user_id in self.assign_users[channel_id]:23 raise ValueError("already assigned.", 1)24 if len(self.assign_users[channel_id]) >= 2:25 raise DeprecationWarning("three or more users have been assigned to the issue.")26 self.assign_users[channel_id].append(user_id)27bot = AssignBot(command_prefix="a.", description="チャンネルにissueを開き、そのissueにassignできます。\n3人以上がassignしようとすると警告を表示します。")28@bot.command(name="open")29async def _open(ctx):30 """issueを開きます。"""31 try:32 bot.open_issue(ctx.channel.id)33 except ValueError:34 return await ctx.send("すでにオープンされています。", delete_after=5)35 await ctx.message.add_reaction("\U0001f44d")36@bot.command()37async def assign(ctx):38 """開かれているissueにassignします。"""39 try:40 bot.assign(ctx.channel.id, ctx.author.id)41 except ValueError as e:42 if e.args[1] == 0:43 return await ctx.send("issueがオープンされていません。", delete_after=5)44 elif e.args[1] == 1:45 return await ctx.send("すでにassignしています。")46 except DeprecationWarning:47 return await ctx.send("すでに2人assignしているため、assignできませんでした。", delete_after=5)48 await ctx.message.add_reaction("\U0001f44d")49@bot.command()50async def close(ctx):51 """issueをcloseします。"""52 try:53 bot.close_issue(ctx.channel.id)54 except ValueError:55 return await ctx.send("issueがオープンされていません。", delete_after=5)56 await ctx.message.add_reaction("\U0001f44d")57if __name__ == "__main__":...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Kiwi automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful