| OLD | NEW |
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 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 json | 5 import json |
| 6 import os | 6 import os |
| 7 import webapp2 | 7 import webapp2 |
| 8 | 8 |
| 9 from testing_utils import testing | 9 from testing_utils import testing |
| 10 | 10 |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 'action': 'Reverted', | 122 'action': 'Reverted', |
| 123 'fixed_cl_commit_position': 342015, | 123 'fixed_cl_commit_position': 342015, |
| 124 'fixed_revision': '123456789c08d27902060c241149ce193e4dd5dd', | 124 'fixed_revision': '123456789c08d27902060c241149ce193e4dd5dd', |
| 125 'fixing_build_number': 122, | 125 'fixing_build_number': 122, |
| 126 'fixing_cl_commit_position': 332062, | 126 'fixing_cl_commit_position': 332062, |
| 127 'fixing_revision': '062a6f974d7c01234569ce193e4dd5' | 127 'fixing_revision': '062a6f974d7c01234569ce193e4dd5' |
| 128 } | 128 } |
| 129 } | 129 } |
| 130 | 130 |
| 131 | 131 |
| 132 def _MockGetChangeLog(repo, revision): |
| 133 file_name = os.path.join( |
| 134 os.path.dirname(__file__), 'data', 'help_triage_test_data', |
| 135 'change_log_' + revision) |
| 136 with open(file_name) as f: |
| 137 commit_log = f.read() |
| 138 |
| 139 data = json.loads(commit_log[len(')]}\'\n'):]) |
| 140 return repo._ParseChangeLogFromLogData(data) |
| 141 |
| 132 | 142 |
| 133 class HelpTriageTest(testing.AppengineTestCase): | 143 class HelpTriageTest(testing.AppengineTestCase): |
| 134 app_module = webapp2.WSGIApplication([ | 144 app_module = webapp2.WSGIApplication([ |
| 135 ('/help-triage', help_triage.HelpTriage), | 145 ('/help-triage', help_triage.HelpTriage), |
| 136 ], debug=True) | 146 ], debug=True) |
| 137 | 147 |
| 138 def _GetBuildInfo(self, master_name, builder_name, build_number): | 148 def _GetBuildInfo(self, master_name, builder_name, build_number): |
| 139 file_name = os.path.join( | 149 file_name = os.path.join( |
| 140 os.path.dirname(__file__), 'data', 'help_triage_test_data', | 150 os.path.dirname(__file__), 'data', 'help_triage_test_data', |
| 141 'build_data_%s_%s_%s.json' % ( | 151 'build_data_%s_%s_%s.json' % ( |
| 142 master_name, builder_name, build_number)) | 152 master_name, builder_name, build_number)) |
| 143 if not os.path.isfile(file_name): | 153 if not os.path.isfile(file_name): |
| 144 return None | 154 return None |
| 145 with open(file_name, 'r') as f: | 155 with open(file_name, 'r') as f: |
| 146 return f.read() | 156 return f.read() |
| 147 | 157 |
| 148 def _MockDownloadBuildData( | 158 def _MockDownloadBuildData( |
| 149 self, master_name, builder_name, build_number): | 159 self, master_name, builder_name, build_number): |
| 150 build = WfBuild.Get(master_name, builder_name, build_number) | 160 build = WfBuild.Get(master_name, builder_name, build_number) |
| 151 if not build: # pragma: no cover | 161 if not build: # pragma: no cover |
| 152 build = WfBuild.Create(master_name, builder_name, build_number) | 162 build = WfBuild.Create(master_name, builder_name, build_number) |
| 153 build.data = self._GetBuildInfo(master_name, builder_name, build_number) | 163 build.data = self._GetBuildInfo(master_name, builder_name, build_number) |
| 154 build.put() | 164 build.put() |
| 155 return build | 165 return build |
| 156 | 166 |
| 157 def _MockDownloadChangeLogData(self, revision): | |
| 158 file_name = os.path.join( | |
| 159 os.path.dirname(__file__), 'data', 'help_triage_test_data', | |
| 160 'change_log_' + revision) | |
| 161 with open(file_name) as f: | |
| 162 commit_log = f.read() | |
| 163 return revision, json.loads(commit_log[len(')]}\'\n'):]) | |
| 164 | |
| 165 def setUp(self): | 167 def setUp(self): |
| 166 super(HelpTriageTest, self).setUp() | 168 super(HelpTriageTest, self).setUp() |
| 167 self.master_name = 'm' | 169 self.master_name = 'm' |
| 168 self.builder_name = 'b' | 170 self.builder_name = 'b' |
| 169 self.mock_current_user(user_email='test@chromium.org', is_admin=True) | 171 self.mock_current_user(user_email='test@chromium.org', is_admin=True) |
| 170 self.mock(build_util, 'DownloadBuildData', | 172 self.mock(build_util, 'DownloadBuildData', self._MockDownloadBuildData) |
| 171 self._MockDownloadBuildData) | 173 self.mock(GitilesRepository, 'GetChangeLog', _MockGetChangeLog) |
| 172 self.mock(GitilesRepository, '_DownloadChangeLogData', | |
| 173 self._MockDownloadChangeLogData) | |
| 174 | 174 |
| 175 def _CreateAnalysis(self, build_number, first_failure, last_pass=None): | 175 def _CreateAnalysis(self, build_number, first_failure, last_pass=None): |
| 176 analysis = WfAnalysis.Create( | 176 analysis = WfAnalysis.Create( |
| 177 self.master_name, self.builder_name, build_number) | 177 self.master_name, self.builder_name, build_number) |
| 178 analysis.result = { | 178 analysis.result = { |
| 179 'failures': [ | 179 'failures': [ |
| 180 { | 180 { |
| 181 'last_pass': last_pass, | 181 'last_pass': last_pass, |
| 182 'first_failure': first_failure, | 182 'first_failure': first_failure, |
| 183 'suspected_cls': [], | 183 'suspected_cls': [], |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 257 self.master_name, self.builder_name, 123) | 257 self.master_name, self.builder_name, 123) |
| 258 build = WfBuild.Create(self.master_name, self.builder_name, 123) | 258 build = WfBuild.Create(self.master_name, self.builder_name, 123) |
| 259 build.data = self._GetBuildInfo(self.master_name, self.builder_name, 123) | 259 build.data = self._GetBuildInfo(self.master_name, self.builder_name, 123) |
| 260 build.put() | 260 build.put() |
| 261 | 261 |
| 262 response = self.test_app.get('/help-triage', params={'url': build_url}) | 262 response = self.test_app.get('/help-triage', params={'url': build_url}) |
| 263 expected_results = {} | 263 expected_results = {} |
| 264 | 264 |
| 265 self.assertEqual(200, response.status_int) | 265 self.assertEqual(200, response.status_int) |
| 266 self.assertEqual(expected_results, response.json_body) | 266 self.assertEqual(expected_results, response.json_body) |
| OLD | NEW |