예제 #1
0
    def test_render_target_group(self):
        release_note_objs = [
            release_note_block_with_defaults(
                target_group_id=TARGET_GROUP_USER_ID,
                text='user release note',
                reference_type=None,
                reference_id=None,
                user_login=None,
            ),
            release_note_block_with_defaults(
                target_group_id=TARGET_GROUP_OPERATOR_ID,
                text='operator release note',
                reference_type=None,
                reference_id=None,
                user_login=None,
            ),
        ]

        actual_md_str = MarkdownRenderer(
            release_note_objs=release_note_objs).render()
        expected_md_str = \
            '# [current-repo]\n'\
            '## Improvements\n'\
            '* *[USER]* user release note\n'\
            '* *[OPERATOR]* operator release note'
        self.assertEqual(expected_md_str, actual_md_str)
예제 #2
0
    def test_render_reference_pr(self):
        release_note_objs = [
            release_note_block_with_defaults(
                reference_type=REF_TYPE_PULL_REQUEST,
                reference_id='42',
                source_repo=CURRENT_REPO_NAME,
            ),
            release_note_block_with_defaults(
                reference_type=REF_TYPE_PULL_REQUEST,
                reference_id='1',
                text='other component, same github instance rls note',
                source_repo='github.com/madeup/a-foo-bar',
            )
        ]

        actual_md_str = MarkdownRenderer(
            release_note_objs=release_note_objs).render()
        expected_md_str = \
            '# [current-repo]\n'\
            '## Improvements\n'\
            '* *[USER]* default release note text (#42, @foo)\n'\
            '# [a-foo-bar]\n'\
            '## Improvements\n'\
            '* *[USER]* other component, same github instance rls note (madeup/a-foo-bar#1, @foo)'
        self.assertEqual(expected_md_str, actual_md_str)
예제 #3
0
    def test_render_skip_empty_lines(self):
        release_note_objs = [
            release_note_block_with_defaults(
                text='first line1\n\n second line1',  #empty line
                reference_type=None,
                reference_id=None,
                user_login=None,
            ),
            release_note_block_with_defaults(
                text='first line2\n \nsecond line2',  #empty line with space
                reference_type=None,
                reference_id=None,
                user_login=None,
            )
        ]

        actual_md_str = MarkdownRenderer(
            release_note_objs=release_note_objs).render()
        expected_md_str = \
            '# [current-repo]\n'\
            '## Improvements\n'\
            '* *[USER]* first line1\n'\
            '  * second line1\n'\
            '* *[USER]* first line2\n'\
            '  * second line2'
        self.assertEqual(expected_md_str, actual_md_str)
예제 #4
0
    def test_render_no_reference_no_user(self):
        release_note_objs = [
            release_note_block_with_defaults(
                reference_type=None,
                reference_id=None,
                user_login=None,
                source_repo='github.com/madeup/a-foo-bar',
            ),
            release_note_block_with_defaults(
                reference_type=None,
                reference_id=None,
                user_login=None,
                source_repo=CURRENT_REPO_NAME,
            )
        ]

        actual_md_str = MarkdownRenderer(
            release_note_objs=release_note_objs).render()
        expected_md_str = \
            '# [current-repo]\n'\
            '## Improvements\n'\
            '* *[USER]* default release note text\n'\
            '# [a-foo-bar]\n'\
            '## Improvements\n'\
            '* *[USER]* default release note text'
        self.assertEqual(expected_md_str, actual_md_str)
예제 #5
0
    def test_render_no_release_notes(self):
        release_note_objs = []

        expected_md_str = 'no release notes available'
        self.assertEqual(
            expected_md_str,
            MarkdownRenderer(release_note_objs=release_note_objs).render())
예제 #6
0
    def test_render_no_reference_no_user(self):
        release_note_objs = [
            release_note_block_with_defaults(
                reference_type=None,
                reference_id=None,
                user_login=None,
                source_component_hostname=CURRENT_COMPONENT_HOSTNAME,
                source_component_org_name='madeup',
                source_component_repo_name='a-foo-bar',
            ),
            release_note_block_with_defaults(
                reference_type=None,
                reference_id=None,
                user_login=None,
                source_component_hostname=CURRENT_COMPONENT_HOSTNAME,
                source_component_org_name=CURRENT_COMPONENT_ORG_NAME,
                source_component_repo_name=CURRENT_COMPONENT_REPO_NAME,
            )
        ]

        actual_md_str = MarkdownRenderer(
            release_note_objs=release_note_objs).render()
        expected_md_str = \
            '# [current-repo]\n'\
            '## 🏃 Others\n'\
            '* *[USER]* default release note text\n'\
            '# [a-foo-bar]\n'\
            '## 🏃 Others\n'\
            '* *[USER]* default release note text'
        self.assertEqual(expected_md_str, actual_md_str)
예제 #7
0
파일: util.py 프로젝트: gardener/cc-utils
    def to_markdown(self, force_link_generation: bool = False) -> str:
        release_notes_str = MarkdownRenderer(
            release_note_objs=self.release_note_objs,
            force_link_generation=force_link_generation).render()

        logger.info('Release notes:\n{rn}'.format(rn=release_notes_str))
        return release_notes_str
예제 #8
0
    def test_render_categories(self):
        release_note_objs = [
            release_note_block_with_defaults(
                category_id=CATEGORY_IMPROVEMENT_ID,
                text='improvement release note',
                reference_type=None,
                reference_id=None,
                user_login=None,
            ),
            release_note_block_with_defaults(
                category_id=CATEGORY_NOTEWORTHY_ID,
                text='noteworthy release note',
                reference_type=None,
                reference_id=None,
                user_login=None,
            ),
            release_note_block_with_defaults(
                category_id=CATEGORY_ACTION_ID,
                text='action required release note',
                reference_type=None,
                reference_id=None,
                user_login=None,
            ),
        ]

        actual_md_str = MarkdownRenderer(release_note_objs=release_note_objs).render()
        expected_md_str = \
            '# [current-repo]\n'\
            '## Action Required\n'\
            '* *[USER]* action required release note\n'\
            '## Most notable changes\n'\
            '* *[USER]* noteworthy release note\n'\
            '## Improvements\n'\
            '* *[USER]* improvement release note'
        self.assertEqual(expected_md_str, actual_md_str)
예제 #9
0
    def test_render_drop_duplicates(self):
        release_note_objs = [
            release_note_block_with_defaults(
                text='duplicate',
                reference_type=None,
                reference_id=None,
                user_login=None,
                source_repo=CURRENT_REPO_NAME,
            ),
            release_note_block_with_defaults(
                text='duplicate',
                reference_type=None,
                reference_id=None,
                user_login=None,
                source_repo=CURRENT_REPO_NAME,
            )
        ]

        actual_md_str = MarkdownRenderer(
            release_note_objs=release_note_objs).render()
        expected_md_str = \
            '# [current-repo]\n'\
            '## Improvements\n'\
            '* *[USER]* duplicate'
        self.assertEqual(expected_md_str, actual_md_str)
예제 #10
0
    def test_render_categories(self):
        release_note_objs = [
            release_note_block_with_defaults(
                category_id=CATEGORY_OTHER_ID,
                text='other release note',
                reference_type=None,
                reference_id=None,
                user_login=None,
            ),
            release_note_block_with_defaults(
                category_id=CATEGORY_DOC_ID,
                text='documentation release note',
                reference_type=None,
                reference_id=None,
                user_login=None,
            ),
            release_note_block_with_defaults(
                category_id=CATEGORY_BREAKING_ID,
                text='breaking change release note',
                reference_type=None,
                reference_id=None,
                user_login=None,
            ),
            release_note_block_with_defaults(
                category_id=CATEGORY_BUGFIX_ID,
                text='bug fix release note',
                reference_type=None,
                reference_id=None,
                user_login=None,
            ),
            release_note_block_with_defaults(
                category_id=CATEGORY_FEATURE_ID,
                text='new feature release note',
                reference_type=None,
                reference_id=None,
                user_login=None,
            ),
        ]

        actual_md_str = MarkdownRenderer(
            release_note_objs=release_note_objs).render()
        expected_md_str = \
            '# [current-repo]\n'\
            '## ⚠️ Breaking Changes\n'\
            '* *[USER]* breaking change release note\n'\
            '## ✨ New Features\n'\
            '* *[USER]* new feature release note\n'\
            '## 🐛 Bug Fixes\n'\
            '* *[USER]* bug fix release note\n'\
            '## 📖 Documentation\n'\
            '* *[USER]* documentation release note\n'\
            '## 🏃 Others\n'\
            '* *[USER]* other release note'
        self.assertEqual(expected_md_str, actual_md_str)
예제 #11
0
    def test_render_reference_commit(self):
        release_note_objs = [
            release_note_block_with_defaults(
                text='rls note 1',
                reference_type=REF_TYPE_COMMIT,
                reference_id='commit-id-1',
            ),
            # As the source repository is on the same github instance as the current repository
            # it can be auto linked by github, hence we do not need to build a link to the commit
            # with the cut off commit id as link text
            release_note_block_with_defaults(
                text='other component rls note',
                reference_type=REF_TYPE_COMMIT,
                reference_id='very-long-commit-id-that-will-not-be-shortened',
                user_login='******',
                source_component_repo_name='a-foo-bar',
            ),
            # the source repository is on a different github instance as the current repository.
            # It can not be auto linked by github, hence we need to build a link to the commit
            # with the cut off commit id as link text
            release_note_block_with_defaults(
                text='release note from different github instance',
                reference_type=REF_TYPE_COMMIT,
                reference_id='very-long-commit-id-that-will-be-shortened',
                user_login='******',
                source_component_hostname='madeup.enterprise.github.corp',
                source_component_org_name='o',
                source_component_repo_name='s',
            )
        ]

        actual_md_str = MarkdownRenderer(
            release_note_objs=release_note_objs).render()
        expected_md_str = ''\
            '# [current-repo]\n'\
            '## 🏃 Others\n'\
            '* *[USER]* rls note 1 (commit-id-1, @foo)\n'\
            '# [a-foo-bar]\n'\
            '## 🏃 Others\n'\
            '* *[USER]* other component rls note ' \
            '(madeup/a-foo-bar@very-long-commit-id-that-will-not-be-shortened, @bar)\n'\
            '# [s]\n'\
            '## 🏃 Others\n'\
            '* *[USER]* release note from different github instance ' \
            '([o/s@very-long-co](https://madeup.enterprise.github.corp/o/s/commit/'\
            'very-long-commit-id-that-will-be-shortened), '\
            '[@bar](https://madeup.enterprise.github.corp/bar))'
        self.assertEqual(expected_md_str, actual_md_str)
예제 #12
0
    def test_render_from_other_github_should_auto_link(self):
        release_note_objs = [
            release_note_block_with_defaults(
                source_repo='madeup.enterprise.github.corp/o/s', )
        ]

        actual_md_str = MarkdownRenderer(
            release_note_objs=release_note_objs).render()
        expected_md_str = \
            '\n'.join((
                '# [s]',
                '## Improvements',
                '* *[USER]* default release note text '
                '([o/s#42](https://madeup.enterprise.github.corp/o/s/pull/42), '
                '[@foo](https://madeup.enterprise.github.corp/foo))'
            ))
        self.assertEqual(expected_md_str, actual_md_str)
예제 #13
0
 def test_render_multiline_rls_note_should_have_2nd_level_bullet_points(
         self):
     multiline_text = \
     'first line with header\n'\
     'second line\n'\
     'third line\n'
     release_note_objs = [
         release_note_block_with_defaults(text=multiline_text, )
     ]
     actual_md_str = MarkdownRenderer(
         release_note_objs=release_note_objs).render()
     expected_md_str = \
         '# [current-repo]\n'\
         '## Improvements\n'\
         '* *[USER]* first line with header (#42, @foo)\n'\
         '  * second line\n'\
         '  * third line'
     self.assertEqual(expected_md_str, actual_md_str)
예제 #14
0
    def test_render_remove_bullet_points(self):
        release_note_objs = [
            release_note_block_with_defaults(
                text='first line1\n* second line1',  #contains bullet point (*)
                reference_type=None,
                reference_id=None,
                user_login=None,
            ),
            release_note_block_with_defaults(
                text=
                'first line2\n  * second line2',  # contains bullet point with extra spaces
                reference_type=None,
                reference_id=None,
                user_login=None,
            ),
            release_note_block_with_defaults(
                text=
                '- first line3\n  - second line3',  # contains bullet point (-)
                reference_type=None,
                reference_id=None,
                user_login=None,
            ),
            release_note_block_with_defaults(
                text='first line4\n*italic*',  # no bullet point, just italic
                reference_type=None,
                reference_id=None,
                user_login=None,
            )
        ]

        actual_md_str = MarkdownRenderer(
            release_note_objs=release_note_objs).render()
        expected_md_str = \
            '# [current-repo]\n'\
            '## Improvements\n'\
            '* *[USER]* first line1\n'\
            '  * second line1\n'\
            '* *[USER]* first line2\n'\
            '  * second line2\n'\
            '* *[USER]* first line3\n'\
            '  * second line3\n'\
            '* *[USER]* first line4\n'\
            '  * *italic*'
        self.assertEqual(expected_md_str, actual_md_str)
예제 #15
0
    def test_render_deprecated_categories(self):
        release_note_objs = [
            release_note_block_with_defaults(
                category_id=CATEGORY_IMPROVEMENT_ID,
                text='improvement / other release note',
                reference_type=None,
                reference_id=None,
                user_login=None,
            ),
            release_note_block_with_defaults(
                category_id=CATEGORY_ACTION_ID,
                text='action / breaking change release note',
                reference_type=None,
                reference_id=None,
                user_login=None,
            ),
            release_note_block_with_defaults(
                category_id=CATEGORY_NOTEWORTHY_ID,
                text='noteworthy release note',
                reference_type=None,
                reference_id=None,
                user_login=None,
            ),
        ]

        actual_md_str = MarkdownRenderer(
            release_note_objs=release_note_objs).render()
        expected_md_str = \
            '# [current-repo]\n'\
            '## ⚠️ Breaking Changes\n'\
            '* *[USER]* action / breaking change release note\n'\
            '## 🏃 Others\n'\
            '* *[USER]* improvement / other release note\n'\
            '## 📰 Noteworthy\n'\
            '* *[USER]* noteworthy release note'
        self.assertEqual(expected_md_str, actual_md_str)