Ejemplo n.º 1
0
class ChangelogFileOperationTestCase(unittest.TestCase):
    def setUp(self):
        self.CL = ChangelogUtils()
        self.CL.CHANGELOG = 'TEST_CHANGELOG.md'

    def test_initialize_changelog_file(self):
        self.CL.initialize_changelog_file()
        self.assertTrue(os.path.isfile('TEST_CHANGELOG.md'))

    def test_initialize_changelog_file_exists(self):
        self.CL.initialize_changelog_file()
        self.assertTrue(os.path.isfile('TEST_CHANGELOG.md'))
        message = self.CL.initialize_changelog_file()
        self.assertEqual(message, 'TEST_CHANGELOG.md already exists')

    def test_get_changelog_data(self):
        self.CL.initialize_changelog_file()
        data = self.CL.get_changelog_data()
        self.assertTrue(len(data) > 1)

    def test_get_changelog_no_file(self):
        self.assertRaises(ChangelogDoesNotExistError,
                          self.CL.get_changelog_data)

    def test_write_changelog(self):
        self.CL.initialize_changelog_file()
        original = self.CL.get_changelog_data()
        data = original + ["test\n"]
        self.CL.write_changelog(data)
        modified = self.CL.get_changelog_data()
        self.assertEqual(len(original) + 1, len(modified))

    def test_cut_release(self):
        self.CL.initialize_changelog_file()
        self.CL.update_section('new', "this is a test")
        self.CL.cut_release('suggest')
        data = self.CL.get_changelog_data()
        self.assertTrue('## Unreleased\n' in data)
        self.assertTrue(
            '## 0.2.0 - ({})\n'.format(date.today().isoformat()) in data)
        self.CL.update_section('break', "removed a thing")
        self.CL.cut_release('suggest')
        data2 = self.CL.get_changelog_data()
        self.assertTrue('## Unreleased\n' in data2)

    def tearDown(self):
        try:
            os.remove('TEST_CHANGELOG.md')
        except Exception:
            pass
Ejemplo n.º 2
0
def view():
    CL = ChangelogUtils()
    try:
        data = CL.get_changelog_data()
        first = False
        for line in data:
            if CL.match_version(line):
                if first:
                    break
                first = True
            click.echo(line.strip())

    except ChangelogDoesNotExistError:
        if click.confirm("No CHANGELOG.md Found, do you want to create one?"):
            CL.initialize_changelog_file()
Ejemplo n.º 3
0
 def test_cut_release_works_with_beta_headers(self):
     sample_data = [
         "## Unreleased\n",
         "---\n",
         "\n",
         "### New\n",
         "* added feature x\n",
         "\n",
         "### Changes\n",
         "* changes feature x\n",
         "\n",
         "### Fixes\n",
         "* fixed bug 1\n",
         "\n",
         "### Breaks\n",
         "\n",
         "\n",
         "## 0.3.2 - (2017-06-09)\n",
         "---\n",
     ]
     with patch.object(ChangelogUtils,
                       'get_changelog_data',
                       return_value=sample_data) as mock_read:
         CL = ChangelogUtils()
         CL.cut_release('suggest')
     data = CL.get_changelog_data()
     self.assertTrue('## Unreleased\n' in data)
     self.assertTrue(f'## 0.4.0 - ({date.today().isoformat()})\n' in data)
     # The beta headings still exist
     self.assertTrue('### New\n' in data)
     self.assertTrue('### Changes\n' in data)
     self.assertTrue('### Fixes\n' in data)
     # The new headings exist
     self.assertTrue('### Added\n' in data)
     self.assertTrue('### Changed\n' in data)
     self.assertTrue('### Deprecated\n' in data)
     self.assertTrue('### Removed\n' in data)
     self.assertTrue('### Fixed\n' in data)
     self.assertTrue('### Security\n' in data)
Ejemplo n.º 4
0
class ChangelogFileOperationTestCase(unittest.TestCase):
    def setUp(self):
        self.CL = ChangelogUtils()
        self.CL.CHANGELOG = 'TEST_CHANGELOG.md'

    def test_initialize_changelog_file(self):
        self.CL.initialize_changelog_file()
        self.assertTrue(os.path.isfile('TEST_CHANGELOG.md'))

    def test_initialize_changelog_file_exists(self):
        self.CL.initialize_changelog_file()
        self.assertTrue(os.path.isfile('TEST_CHANGELOG.md'))
        message = self.CL.initialize_changelog_file()
        self.assertEqual(message, 'TEST_CHANGELOG.md already exists')

    def test_get_changelog_data(self):
        self.CL.initialize_changelog_file()
        data = self.CL.get_changelog_data()
        self.assertTrue(len(data) > 1)

    def test_get_changelog_no_file(self):
        self.assertRaises(ChangelogDoesNotExistError,
                          self.CL.get_changelog_data)

    def test_write_changelog(self):
        self.CL.initialize_changelog_file()
        original = self.CL.get_changelog_data()
        data = original + ["test\n"]
        self.CL.write_changelog(data)
        modified = self.CL.get_changelog_data()
        self.assertEqual(len(original) + 1, len(modified))

    def test_cut_release(self):
        self.CL.initialize_changelog_file()
        self.CL.update_section('added', "this is a test")
        self.CL.cut_release('suggest')
        data = self.CL.get_changelog_data()
        self.assertTrue('## Unreleased\n' in data)
        self.assertTrue(f'## 0.1.0 - ({date.today().isoformat()})\n' in data)
        self.CL.update_section('removed', "removed a thing")
        self.CL.cut_release('suggest')
        data2 = self.CL.get_changelog_data()
        self.assertTrue('## Unreleased\n' in data2)

    def test_cut_release_works_with_beta_headers(self):
        sample_data = [
            "## Unreleased\n",
            "---\n",
            "\n",
            "### New\n",
            "* added feature x\n",
            "\n",
            "### Changes\n",
            "* changes feature x\n",
            "\n",
            "### Fixes\n",
            "* fixed bug 1\n",
            "\n",
            "### Breaks\n",
            "\n",
            "\n",
            "## 0.3.2 - (2017-06-09)\n",
            "---\n",
        ]
        with patch.object(ChangelogUtils,
                          'get_changelog_data',
                          return_value=sample_data) as mock_read:
            CL = ChangelogUtils()
            CL.cut_release('suggest')
        data = CL.get_changelog_data()
        self.assertTrue('## Unreleased\n' in data)
        self.assertTrue(f'## 0.4.0 - ({date.today().isoformat()})\n' in data)
        # The beta headings still exist
        self.assertTrue('### New\n' in data)
        self.assertTrue('### Changes\n' in data)
        self.assertTrue('### Fixes\n' in data)
        # The new headings exist
        self.assertTrue('### Added\n' in data)
        self.assertTrue('### Changed\n' in data)
        self.assertTrue('### Deprecated\n' in data)
        self.assertTrue('### Removed\n' in data)
        self.assertTrue('### Fixed\n' in data)
        self.assertTrue('### Security\n' in data)

    def test_match_version_canonical(self):
        line = "## 0.2.1 - (2017-06-09)"
        self.assertEqual(self.CL.match_version(line), '0.2.1')

    def test_match_version_miss(self):
        line = '### Changed'
        self.assertFalse(self.CL.match_version(line))

    def test_match_version_basic(self):
        line = '## v4.1.3'
        self.assertEqual(self.CL.match_version(line), '4.1.3')

    def test_match_keep_a_changelog(self):
        line = '## [4.1.3] - 2017-06-20'
        self.assertEqual(self.CL.match_version(line), '4.1.3')

    def tearDown(self):
        try:
            os.remove('TEST_CHANGELOG.md')
        except Exception:
            pass