def _get_revision_range_html(job_type, start_revision, end_revision=None): """Return revision range html for a revision range and job type.""" if end_revision is None: end_revision = start_revision component_rev_list = revisions.get_component_range_list( start_revision, end_revision, job_type) if not component_rev_list: return ('%s:%s (No component revisions found!)' % (start_revision, end_revision)) return revisions.format_revision_list(component_rev_list)
def test_get_component_revision_list_src_map(self, mock_get_url_content, mock_get_config): """Test get_component_range_list for srcmap jobs.""" mock_get_config.return_value = self.MockConfigOSSFuzz() self.mock.default_project_name.return_value = 'oss-fuzz' mock_get_url_content.side_effect = self.mock_get_url_content result = revisions.get_component_range_list(1337, 9001, SRCMAP_JOB_TYPE) result_as_html = revisions.format_revision_list(result) expected_html = self._read_data_file('srcmap_expected_html.txt') self.assertEqual(result_as_html, expected_html)
def get_chromium_component_start_and_end_revision(start_revision, end_revision, job_type): """Get revisions from chromium component.""" component_rev_list = revisions.get_component_range_list( start_revision, end_revision, job_type) for component_rev in component_rev_list: if component_rev['component'] == 'Chromium': start_revision, end_revision = ( revisions.get_start_and_end_revision(component_rev['link_text'])) return start_revision, end_revision
def test_get_component_range_list_same_hash(self, mock_get_url_content, mock_get_config): """Test get_component_range_list for 2 builds that have different revision numbers, but same revision hash after mapping.""" mock_get_config.return_value = self.MockConfigOSSFuzz() self.mock.default_project_name.return_value = 'oss-fuzz' mock_get_url_content.side_effect = self.mock_get_url_content result = revisions.get_component_range_list(1337, 1338, SRCMAP_JOB_TYPE) result_as_html = revisions.format_revision_list(result) expected_html = self._read_data_file('srcmap_expected_html_2.txt') self.assertEqual(result_as_html, expected_html)
def test_get_component_range_list_0_start_custom(self, mock_get_url_content, mock_get_config): """Test get_component_range_list with a '0' start_revision.""" mock_get_config.return_value = self.MockConfigOSSFuzz() self.mock.default_project_name.return_value = 'oss-fuzz' mock_get_url_content.side_effect = self.mock_get_url_content result = revisions.get_component_range_list(0, 1338, SRCMAP_JOB_TYPE) result_as_html = revisions.format_revision_list(result) expected_html = self._read_data_file('srcmap_expected_html_3.txt') self.assertEqual(result_as_html, expected_html)
def get_chromium_component_start_and_end_revision(start_revision, end_revision, job_type): """Get revisions from chromium component.""" component_rev_list = revisions.get_component_range_list( start_revision, end_revision, job_type) for component_rev in component_rev_list: if component_rev["component"] == "Chromium": start_revision, end_revision = revisions.get_start_and_end_revision( component_rev["link_text"]) return start_revision, end_revision
def test_get_component_range_list_clank( self, mock_get_git_hash, mock_get_url_content, mock_get_config): """Test that get_component_range_list works properly for the Clank repo.""" mock_get_config.return_value = self.MockConfigChromium() self.mock.default_project_name.return_value = 'chromium' mock_get_url_content.side_effect = self.mock_get_url_content mock_get_git_hash.side_effect = self.mock_get_git_hash_for_git_commit_pos result = revisions.get_component_range_list(260548, 260552, ANDROID_JOB_TYPE) result_as_html = revisions.format_revision_list(result) expected_html = self._read_data_file('clank_expected_html.txt') self.assertEqual(result_as_html, expected_html)
def test_get_component_range_list_chromium(self, mock_get_git_hash, mock_get_url_content, mock_get_config): """Test that get_component_range_list works properly for the Chromium repo.""" mock_get_config.return_value = self.MockConfigChromium() self.mock.default_project_name.return_value = "chromium" mock_get_url_content.side_effect = self.mock_get_url_content mock_get_git_hash.side_effect = self.mock_get_git_hash_for_git_commit_pos result = revisions.get_component_range_list(336903, 336983, BASIC_JOB_TYPE) result_as_html = revisions.format_revision_list(result) expected_html = self._read_data_file("chromium_expected_html.txt") self.assertEqual(result_as_html, expected_html)
def _get_commits(commit_range, job_type): """Get commits from range.""" start, end = revisions.get_start_and_end_revision(commit_range) components = revisions.get_component_range_list(start, end, job_type) commits = components[0]['link_text'] if ':' not in commits: return commits, commits old_commit, new_commit = commits.split(':') if old_commit == '0': old_commit = '' return old_commit, new_commit
def get(self): """GET handler.""" revision_range = self.request.get('range') job_type = self.request.get('job') try: [start_revision, end_revision] = revision_range.split(':') except: raise helpers.EarlyExitException('Bad revision range.', 400) component_revisions_list = revisions.get_component_range_list( start_revision, end_revision, job_type) if not component_revisions_list: raise helpers.EarlyExitException('Failed to get component revisions.', 400) self.render('revisions-info.html', {'info': { 'componentRevisionsList': component_revisions_list }})
def get(self): """GET handler.""" job_type = request.get('job') revision = request.get('revision') if revision: if not revision.isdigit(): raise helpers.EarlyExitException('Revision is not an integer.', 400) start_revision = end_revision = revision else: revision_range = request.get('range') if revision_range: try: start_revision, end_revision = revision_range.split(':') except: raise helpers.EarlyExitException('Bad revision range.', 400) if not start_revision.isdigit(): raise helpers.EarlyExitException( 'Start revision is not an integer.', 400) if not end_revision.isdigit(): raise helpers.EarlyExitException( 'End revision is not an integer.', 400) component_revisions_list = revisions.get_component_range_list( start_revision, end_revision, job_type) if not component_revisions_list: raise helpers.EarlyExitException( 'Failed to get component revisions.', 400) return self.render( 'revisions-info.html', {'info': { 'componentRevisionsList': component_revisions_list }})