OLD | NEW |
1 # Copyright 2016 The Chromium Authors. All rights reserved. | 1 # Copyright 2016 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import unittest | 5 import unittest |
6 | 6 |
| 7 from webkitpy.common.host_mock import MockHost |
| 8 from webkitpy.common.net.buildbot import Build |
7 from webkitpy.common.net.git_cl import GitCL | 9 from webkitpy.common.net.git_cl import GitCL |
8 from webkitpy.common.system.executive_mock import MockExecutive | 10 from webkitpy.common.system.executive_mock import MockExecutive |
9 from webkitpy.common.host_mock import MockHost | |
10 | 11 |
11 | 12 |
12 class GitCLTest(unittest.TestCase): | 13 class GitCLTest(unittest.TestCase): |
13 | 14 |
14 def test_run(self): | 15 def test_run(self): |
15 host = MockHost() | 16 host = MockHost() |
16 host.executive = MockExecutive(output='mock-output') | 17 host.executive = MockExecutive(output='mock-output') |
17 git_cl = GitCL(host) | 18 git_cl = GitCL(host) |
18 output = git_cl.run(['command']) | 19 output = git_cl.run(['command']) |
19 self.assertEqual(output, 'mock-output') | 20 self.assertEqual(output, 'mock-output') |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 host.stdout.getvalue(), | 100 host.stdout.getvalue(), |
100 'Waiting for try jobs (timeout: 7200 seconds).\n' | 101 'Waiting for try jobs (timeout: 7200 seconds).\n' |
101 'All jobs finished.\n') | 102 'All jobs finished.\n') |
102 | 103 |
103 def test_all_jobs_finished_with_started_jobs(self): | 104 def test_all_jobs_finished_with_started_jobs(self): |
104 self.assertFalse(GitCL.all_jobs_finished([ | 105 self.assertFalse(GitCL.all_jobs_finished([ |
105 { | 106 { |
106 'builder_name': 'some-builder', | 107 'builder_name': 'some-builder', |
107 'status': 'COMPLETED', | 108 'status': 'COMPLETED', |
108 'result': 'FAILURE', | 109 'result': 'FAILURE', |
| 110 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/90', |
109 }, | 111 }, |
110 { | 112 { |
111 'builder_name': 'some-builder', | 113 'builder_name': 'some-builder', |
112 'status': 'STARTED', | 114 'status': 'STARTED', |
113 'result': None, | 115 'result': None, |
| 116 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/100', |
114 }, | 117 }, |
115 ])) | 118 ])) |
116 | 119 |
117 def test_all_jobs_finished_only_completed_jobs(self): | 120 def test_all_jobs_finished_only_completed_jobs(self): |
118 self.assertTrue(GitCL.all_jobs_finished([ | 121 self.assertTrue(GitCL.all_jobs_finished([ |
119 { | 122 { |
120 'builder_name': 'some-builder', | 123 'builder_name': 'some-builder', |
121 'status': 'COMPLETED', | 124 'status': 'COMPLETED', |
122 'result': 'FAILURE', | 125 'result': 'FAILURE', |
| 126 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/90', |
123 }, | 127 }, |
124 { | 128 { |
125 'builder_name': 'some-builder', | 129 'builder_name': 'some-builder', |
126 'status': 'COMPLETED', | 130 'status': 'COMPLETED', |
127 'result': 'SUCCESS', | 131 'result': 'SUCCESS', |
| 132 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/100', |
128 }, | 133 }, |
129 ])) | 134 ])) |
130 | 135 |
131 def test_has_failing_try_results_empty(self): | 136 def test_has_failing_try_results_empty(self): |
132 self.assertFalse(GitCL.has_failing_try_results([])) | 137 self.assertFalse(GitCL.has_failing_try_results([])) |
133 | 138 |
134 def test_has_failing_try_results_only_success_and_started(self): | 139 def test_has_failing_try_results_only_success_and_started(self): |
135 self.assertFalse(GitCL.has_failing_try_results([ | 140 self.assertFalse(GitCL.has_failing_try_results([ |
136 { | 141 { |
137 'builder_name': 'some-builder', | 142 'builder_name': 'some-builder', |
138 'status': 'COMPLETED', | 143 'status': 'COMPLETED', |
139 'result': 'SUCCESS', | 144 'result': 'SUCCESS', |
| 145 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/90', |
140 }, | 146 }, |
141 { | 147 { |
142 'builder_name': 'some-builder', | 148 'builder_name': 'some-builder', |
143 'status': 'STARTED', | 149 'status': 'STARTED', |
144 'result': None, | 150 'result': None, |
| 151 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/100', |
145 }, | 152 }, |
146 ])) | 153 ])) |
147 | 154 |
148 def test_has_failing_try_results_with_failing_results(self): | 155 def test_has_failing_try_results_with_failing_results(self): |
149 self.assertTrue(GitCL.has_failing_try_results([ | 156 self.assertTrue(GitCL.has_failing_try_results([ |
150 { | 157 { |
151 'builder_name': 'some-builder', | 158 'builder_name': 'some-builder', |
152 'status': 'COMPLETED', | 159 'status': 'COMPLETED', |
153 'result': 'FAILURE', | 160 'result': 'FAILURE', |
154 }, | 161 }, |
155 ])) | 162 ])) |
| 163 |
| 164 def test_latest_try_builds(self): |
| 165 git_cl = GitCL(MockHost()) |
| 166 git_cl.fetch_try_results = lambda: [ |
| 167 { |
| 168 'builder_name': 'builder-b', |
| 169 'status': 'COMPLETED', |
| 170 'result': 'SUCCESS', |
| 171 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/100', |
| 172 }, |
| 173 { |
| 174 'builder_name': 'builder-b', |
| 175 'status': 'COMPLETED', |
| 176 'result': 'SUCCESS', |
| 177 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/90', |
| 178 }, |
| 179 { |
| 180 'builder_name': 'builder-a', |
| 181 'status': 'SCHEDULED', |
| 182 'result': None, |
| 183 'url': None, |
| 184 }, |
| 185 { |
| 186 'builder_name': 'builder-c', |
| 187 'status': 'COMPLETED', |
| 188 'result': 'SUCCESS', |
| 189 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/123', |
| 190 }, |
| 191 ] |
| 192 self.assertEqual( |
| 193 git_cl.latest_try_jobs(['builder-a', 'builder-b']), |
| 194 [Build('builder-a'), Build('builder-b', 100)]) |
OLD | NEW |