def test_release(self) -> None: releaser = Semversioner(path=self.directory_name) releaser.add_change("minor", "My description") releaser.add_change("major", "My description") self.assertEqual( releaser.get_status(), { 'version': '0.0.0', 'next_version': '1.0.0', 'unreleased_changes': [{ 'type': 'major', 'description': 'My description' }, { 'type': 'minor', 'description': 'My description' }], }) releaser.release() self.assertEqual(releaser.get_status(), { 'version': '1.0.0', 'next_version': None, 'unreleased_changes': [], }) with self.assertRaises(SystemExit): releaser.release()
def test_release_stress(self) -> None: releaser = Semversioner(path=self.directory_name) expected = [] for i in range(100): releaser.add_change("major", f"My description {i}") expected.append({ 'type': 'major', 'description': f"My description {i}" }) expected = sorted(expected, key=lambda k: k['type'] + k['description']) self.assertEqual( releaser.get_status(), { 'version': '0.0.0', 'next_version': '1.0.0', 'unreleased_changes': expected, }) releaser.release() self.assertEqual(releaser.get_status(), { 'version': '1.0.0', 'next_version': None, 'unreleased_changes': [], })
def test_increase_version(self): releaser = Semversioner(self.directory_name) self.assertEqual(releaser._increase_version("1.0.0", "minor"), "1.1.0") self.assertEqual(releaser._increase_version("1.0.0", "major"), "2.0.0") self.assertEqual(releaser._increase_version("1.0.0", "patch"), "1.0.1") self.assertEqual(releaser._increase_version("0.1.1", "minor"), "0.2.0") self.assertEqual(releaser._increase_version("0.1.1", "major"), "1.0.0") self.assertEqual(releaser._increase_version("0.1.1", "patch"), "0.1.2") self.assertEqual(releaser._increase_version("9.9.9", "minor"), "9.10.0") self.assertEqual(releaser._increase_version("9.9.9", "major"), "10.0.0") self.assertEqual(releaser._increase_version("9.9.9", "patch"), "9.9.10")
def test_commands_with_no_changesets(self) -> None: releaser = Semversioner(path=self.directory_name) self.assertEqual( releaser.generate_changelog(), "# Changelog\nNote: version releases in the 0.x.y range may introduce breaking changes.\n" ) self.assertEqual(releaser.get_last_version(), "0.0.0") self.assertEqual(releaser.get_status(), { 'version': '0.0.0', 'next_version': None, 'unreleased_changes': [], }) with self.assertRaises(SystemExit): releaser.release()
def test_empty_release(self): releaser = Semversioner(self.directory_name) with self.assertRaises(SystemExit): releaser.release()
def test_generate_changelog(self): releaser = Semversioner(self.directory_name) self.assertEqual(releaser.generate_changelog(), """# Changelog Note: version releases in the 0.x.y range may introduce breaking changes. """)
def cli(ctx, path): ctx.obj = {'releaser': Semversioner(path=path)}
def cli(ctx: click.Context, path: str) -> None: ctx.obj = {'releaser': Semversioner(path=path)}
def test_is_deprecated(self) -> None: releaser = Semversioner(self.directory_name) self.assertFalse(releaser.is_deprecated())