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
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()
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)
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