def test_missing_section_in_release_summary(self):
     release_summary_lines = read_from_file(MOCK_RELEASE_SUMMARY_FILEPATH)
     invalid_ordering = {'### section1:\n': '### section2: \n'}
     ordering_swap = self.swap(update_changelog_and_credits,
                               'EXPECTED_ORDERING_DICT', invalid_ordering)
     with ordering_swap:
         self.assertFalse(
             update_changelog_and_credits.is_order_of_sections_valid(
                 release_summary_lines))
 def test_valid_ordering_of_sections_in_release_summary(self):
     release_summary_lines = read_from_file(MOCK_RELEASE_SUMMARY_FILEPATH)
     self.assertTrue(
         update_changelog_and_credits.is_order_of_sections_valid(
             release_summary_lines))
Exemplo n.º 3
0
    def test_release_summary_content(self):
        def mock_get_current_version_tag(unused_repo):
            return github.Tag.Tag(requester='',
                                  headers='',
                                  attributes={'commit': {
                                      'sha': 'sha'
                                  }},
                                  completed='')

        def mock_get_extra_commits_in_new_release(unused_base_commit,
                                                  unused_repo):
            return [
                github.Commit.Commit(requester='',
                                     headers='',
                                     attributes={'sha': 'sha1'},
                                     completed=''),
                github.Commit.Commit(requester='',
                                     headers='',
                                     attributes={'sha': 'sha2'},
                                     completed=''),
                github.Commit.Commit(requester='',
                                     headers='',
                                     attributes={'sha': 'sha3'},
                                     completed='')
            ]

        def mock_gather_logs(unused_start, stop='HEAD'):
            new_log1 = generate_release_info.Log('sha1', 'author1', 'email1',
                                                 'message1')
            new_log2 = generate_release_info.Log('sha2', 'author2', 'email2',
                                                 'message2')
            old_log = generate_release_info.Log('sha3', 'author3', 'email3',
                                                'message3')
            cherrypick_log = generate_release_info.Log('sha4', 'author4',
                                                       'email4', 'message4')
            if stop == 'HEAD':
                return [new_log1, new_log2, old_log, cherrypick_log]
            else:
                return [old_log]

        def mock_extract_issues(unused_logs):
            return {'issues'}

        def mock_check_versions(unused_current_release):
            return ['version_change']

        def mock_check_setup_scripts(unused_base_release_tag):
            return {'setup_changes': True}

        def mock_check_storage_models(unused_current_release):
            return ['storage_changes']

        def mock_extract_pr_numbers(unused_logs):
            return []

        def mock_get_prs_from_pr_numbers(unused_pr_numbers, unused_repo):
            return []

        def mock_get_changelog_categories(unused_pulls):
            return {'category': ['pr1', 'pr2']}

        version_tag_swap = self.swap(generate_release_info,
                                     'get_current_version_tag',
                                     mock_get_current_version_tag)
        extra_commits_swap = self.swap(generate_release_info,
                                       'get_extra_commits_in_new_release',
                                       mock_get_extra_commits_in_new_release)
        gather_logs_swap = self.swap(generate_release_info, 'gather_logs',
                                     mock_gather_logs)
        extract_issues_swap = self.swap(generate_release_info,
                                        'extract_issues', mock_extract_issues)
        check_versions_swap = self.swap(generate_release_info,
                                        'check_versions', mock_check_versions)
        setup_scripts_swap = self.swap(generate_release_info,
                                       'check_setup_scripts',
                                       mock_check_setup_scripts)
        storage_models_swap = self.swap(generate_release_info,
                                        'check_storage_models',
                                        mock_check_storage_models)
        extract_prs_swap = self.swap(generate_release_info,
                                     'extract_pr_numbers',
                                     mock_extract_pr_numbers)
        get_prs_swap = self.swap(generate_release_info,
                                 'get_prs_from_pr_numbers',
                                 mock_get_prs_from_pr_numbers)
        get_changelog_swap = self.swap(generate_release_info,
                                       'get_changelog_categories',
                                       mock_get_changelog_categories)

        tmp_file = tempfile.NamedTemporaryFile()
        release_summary_swap = self.swap(release_constants,
                                         'RELEASE_SUMMARY_FILEPATH',
                                         tmp_file.name)

        with self.branch_name_swap, self.open_browser_swap:
            with self.get_organization_swap, self.get_repo_swap:
                with self.getpass_swap, version_tag_swap:
                    with extra_commits_swap, get_prs_swap:
                        with gather_logs_swap, extract_issues_swap:
                            with check_versions_swap, setup_scripts_swap:
                                with storage_models_swap, release_summary_swap:
                                    with get_changelog_swap, extract_prs_swap:
                                        generate_release_info.main(
                                            'test-token')
        with python_utils.open_file(GENERATED_RELEASE_SUMMARY_FILEPATH,
                                    'r') as f:
            expected_lines = f.readlines()
        with python_utils.open_file(tmp_file.name, 'r') as f:
            actual_lines = f.readlines()
        update_changelog_and_credits.is_order_of_sections_valid(actual_lines)
        self.assertEqual(actual_lines, expected_lines)