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 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 host.stdout.getvalue(), | 88 host.stdout.getvalue(), |
88 'Waiting for try jobs (timeout: 7200 seconds).\n' | 89 'Waiting for try jobs (timeout: 7200 seconds).\n' |
89 'All jobs finished.\n') | 90 'All jobs finished.\n') |
90 | 91 |
91 def test_all_jobs_finished_with_started_jobs(self): | 92 def test_all_jobs_finished_with_started_jobs(self): |
92 self.assertFalse(GitCL.all_jobs_finished([ | 93 self.assertFalse(GitCL.all_jobs_finished([ |
93 { | 94 { |
94 'builder_name': 'some-builder', | 95 'builder_name': 'some-builder', |
95 'status': 'COMPLETED', | 96 'status': 'COMPLETED', |
96 'result': 'FAILURE', | 97 'result': 'FAILURE', |
| 98 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/90', |
97 }, | 99 }, |
98 { | 100 { |
99 'builder_name': 'some-builder', | 101 'builder_name': 'some-builder', |
100 'status': 'STARTED', | 102 'status': 'STARTED', |
101 'result': None, | 103 'result': None, |
| 104 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/100', |
102 }, | 105 }, |
103 ])) | 106 ])) |
104 | 107 |
105 def test_all_jobs_finished_only_completed_jobs(self): | 108 def test_all_jobs_finished_only_completed_jobs(self): |
106 self.assertTrue(GitCL.all_jobs_finished([ | 109 self.assertTrue(GitCL.all_jobs_finished([ |
107 { | 110 { |
108 'builder_name': 'some-builder', | 111 'builder_name': 'some-builder', |
109 'status': 'COMPLETED', | 112 'status': 'COMPLETED', |
110 'result': 'FAILURE', | 113 'result': 'FAILURE', |
| 114 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/90', |
111 }, | 115 }, |
112 { | 116 { |
113 'builder_name': 'some-builder', | 117 'builder_name': 'some-builder', |
114 'status': 'COMPLETED', | 118 'status': 'COMPLETED', |
115 'result': 'SUCCESS', | 119 'result': 'SUCCESS', |
| 120 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/100', |
116 }, | 121 }, |
117 ])) | 122 ])) |
118 | 123 |
119 def test_has_failing_try_results_empty(self): | 124 def test_has_failing_try_results_empty(self): |
120 self.assertFalse(GitCL.has_failing_try_results([])) | 125 self.assertFalse(GitCL.has_failing_try_results([])) |
121 | 126 |
122 def test_has_failing_try_results_only_success_and_started(self): | 127 def test_has_failing_try_results_only_success_and_started(self): |
123 self.assertFalse(GitCL.has_failing_try_results([ | 128 self.assertFalse(GitCL.has_failing_try_results([ |
124 { | 129 { |
125 'builder_name': 'some-builder', | 130 'builder_name': 'some-builder', |
126 'status': 'COMPLETED', | 131 'status': 'COMPLETED', |
127 'result': 'SUCCESS', | 132 'result': 'SUCCESS', |
| 133 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/90', |
128 }, | 134 }, |
129 { | 135 { |
130 'builder_name': 'some-builder', | 136 'builder_name': 'some-builder', |
131 'status': 'STARTED', | 137 'status': 'STARTED', |
132 'result': None, | 138 'result': None, |
| 139 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/100', |
133 }, | 140 }, |
134 ])) | 141 ])) |
135 | 142 |
136 def test_has_failing_try_results_with_failing_results(self): | 143 def test_has_failing_try_results_with_failing_results(self): |
137 self.assertTrue(GitCL.has_failing_try_results([ | 144 self.assertTrue(GitCL.has_failing_try_results([ |
138 { | 145 { |
139 'builder_name': 'some-builder', | 146 'builder_name': 'some-builder', |
140 'status': 'COMPLETED', | 147 'status': 'COMPLETED', |
141 'result': 'FAILURE', | 148 'result': 'FAILURE', |
142 }, | 149 }, |
143 ])) | 150 ])) |
| 151 |
| 152 def test_latest_try_builds(self): |
| 153 git_cl = GitCL(MockHost()) |
| 154 git_cl.fetch_try_results = lambda: [ |
| 155 { |
| 156 'builder_name': 'builder-b', |
| 157 'status': 'COMPLETED', |
| 158 'result': 'SUCCESS', |
| 159 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/100', |
| 160 }, |
| 161 { |
| 162 'builder_name': 'builder-b', |
| 163 'status': 'COMPLETED', |
| 164 'result': 'SUCCESS', |
| 165 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/90', |
| 166 }, |
| 167 { |
| 168 'builder_name': 'builder-a', |
| 169 'status': 'SCHEDULED', |
| 170 'result': None, |
| 171 'url': None, |
| 172 }, |
| 173 { |
| 174 'builder_name': 'builder-c', |
| 175 'status': 'COMPLETED', |
| 176 'result': 'SUCCESS', |
| 177 'url': 'http://build.chromium.org/p/master/builders/some-builder
/builds/123', |
| 178 }, |
| 179 ] |
| 180 self.assertEqual( |
| 181 git_cl.latest_try_jobs(['builder-a', 'builder-b']), |
| 182 [Build('builder-a'), Build('builder-b', 100)]) |
OLD | NEW |