WorkflowRun.py
1 ############################ Copyrights and license ############################ 2 # # 3 # Copyright 2020 Steve Kowalik <steven@wedontsleep.org> # 4 # # 5 # This file is part of PyGithub. # 6 # http://pygithub.readthedocs.io/ # 7 # # 8 # PyGithub is free software: you can redistribute it and/or modify it under # 9 # the terms of the GNU Lesser General Public License as published by the Free # 10 # Software Foundation, either version 3 of the License, or (at your option) # 11 # any later version. # 12 # # 13 # PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY # 14 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # 15 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # 16 # details. # 17 # # 18 # You should have received a copy of the GNU Lesser General Public License # 19 # along with PyGithub. If not, see <http://www.gnu.org/licenses/>. # 20 # # 21 ################################################################################ 22 23 from datetime import datetime, timezone 24 25 from . import Framework 26 27 28 class WorkflowRun(Framework.TestCase): 29 def setUp(self): 30 super().setUp() 31 self.repo = self.g.get_repo("PyGithub/PyGithub") 32 self.workflow_run = self.repo.get_workflow_run(3881497935) 33 34 def testAttributes(self): 35 self.assertEqual( 36 repr(self.workflow_run), 37 'WorkflowRun(url="https://api.github.com/repos/PyGithub/PyGithub/actions/runs/3881497935", id=3881497935)', 38 ) 39 self.assertEqual(self.workflow_run.id, 3881497935) 40 self.assertEqual(self.workflow_run.name, "CI") 41 self.assertEqual(self.workflow_run.head_branch, "feat/workflow-run") 42 self.assertEqual(self.workflow_run.head_sha, "c6e5cac67a58a4eb11f1f28567a77a6e2cc8ee98") 43 self.assertEqual(self.workflow_run.path, ".github/workflows/ci.yml") 44 self.assertEqual(self.workflow_run.display_title, "TEST PR") 45 self.assertEqual(self.workflow_run.run_number, 930) 46 self.assertEqual(self.workflow_run.run_attempt, 1) 47 self.assertEqual( 48 self.workflow_run.run_started_at, 49 datetime(2023, 1, 10, 8, 24, 19, tzinfo=timezone.utc), 50 ) 51 self.assertEqual(self.workflow_run.event, "pull_request") 52 self.assertEqual(self.workflow_run.status, "completed") 53 self.assertEqual(self.workflow_run.conclusion, "success") 54 self.assertEqual(self.workflow_run.workflow_id, 1903133) 55 self.assertEqual( 56 self.workflow_run.url, 57 "https://api.github.com/repos/PyGithub/PyGithub/actions/runs/3881497935", 58 ) 59 self.assertEqual( 60 self.workflow_run.html_url, 61 "https://github.com/PyGithub/PyGithub/actions/runs/3881497935", 62 ) 63 self.assertEqual(self.workflow_run.pull_requests, []) 64 created_at = datetime(2023, 1, 10, 8, 24, 19, tzinfo=timezone.utc) 65 self.assertEqual(self.workflow_run.created_at, created_at) 66 updated_at = datetime(2023, 1, 10, 8, 28, 20, tzinfo=timezone.utc) 67 self.assertEqual(self.workflow_run.updated_at, updated_at) 68 self.assertEqual( 69 self.workflow_run.jobs_url, 70 "https://api.github.com/repos/PyGithub/PyGithub/actions/runs/3881497935/jobs", 71 ) 72 self.assertEqual( 73 self.workflow_run.logs_url, 74 "https://api.github.com/repos/PyGithub/PyGithub/actions/runs/3881497935/logs", 75 ) 76 self.assertEqual( 77 self.workflow_run.check_suite_url, 78 "https://api.github.com/repos/PyGithub/PyGithub/check-suites/10279069747", 79 ) 80 self.assertEqual( 81 self.workflow_run.artifacts_url, 82 "https://api.github.com/repos/PyGithub/PyGithub/actions/runs/3881497935/artifacts", 83 ) 84 self.assertEqual( 85 self.workflow_run.cancel_url, 86 "https://api.github.com/repos/PyGithub/PyGithub/actions/runs/3881497935/cancel", 87 ) 88 self.assertEqual( 89 self.workflow_run.rerun_url, 90 "https://api.github.com/repos/PyGithub/PyGithub/actions/runs/3881497935/rerun", 91 ) 92 self.assertEqual( 93 self.workflow_run.workflow_url, 94 "https://api.github.com/repos/PyGithub/PyGithub/actions/workflows/1903133", 95 ) 96 self.assertEqual(self.workflow_run.head_commit.message, "add attribute 'name' on WorkflowRun") 97 self.assertEqual(self.workflow_run.repository.name, "PyGithub") 98 self.assertEqual(self.workflow_run.head_repository.name, "PyGithub") 99 100 def test_timing(self): 101 timing = self.workflow_run.timing() 102 self.assertEqual( 103 timing.billable, 104 { 105 "UBUNTU": { 106 "job_runs": [ 107 {"duration_ms": 0, "job_id": 10545727758}, 108 {"duration_ms": 0, "job_id": 10545727888}, 109 {"duration_ms": 0, "job_id": 10545728039}, 110 {"duration_ms": 0, "job_id": 10545728190}, 111 {"duration_ms": 0, "job_id": 10545728356}, 112 ], 113 "jobs": 5, 114 "total_ms": 0, 115 } 116 }, 117 ) 118 self.assertEqual(timing.run_duration_ms, 241000) 119 120 def test_rerun(self): 121 wr = self.repo.get_workflow_run(3910280793) 122 self.assertFalse(wr.rerun()) 123 124 def test_rerun_with_successful_run(self): 125 wr = self.repo.get_workflow_run(3881497935) 126 self.assertFalse(wr.rerun()) 127 128 def test_cancel(self): 129 wr = self.repo.get_workflow_run(3911660493) 130 self.assertFalse(wr.cancel()) 131 132 def test_delete(self): 133 wr = self.repo.get_workflow_run(3881497935) 134 self.assertFalse(wr.delete()) 135 136 def test_jobs(self): 137 self.assertListKeyEqual( 138 self.workflow_run.jobs(), 139 lambda j: j.id, 140 [10545727758, 10545727888, 10545728039, 10545728190, 10545728356], 141 )