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