import unittest from releases import is_valid_release_version, should_update_version class VersionComparisonTest(unittest.TestCase): def test_validation_accepts_alpha_hotfix(self) -> None: self.assertTrue(is_valid_release_version("0.123.0-alpha.5.2")) def test_validation_rejects_extra_component(self) -> None: self.assertFalse(is_valid_release_version("0.123.0-alpha.5.2.3")) def test_next_alpha_after_public_release(self) -> None: self.assertTrue(should_update_version("0.124.0-alpha.1", "0.123.0")) def test_public_release_after_next_alpha(self) -> None: self.assertFalse(should_update_version("0.123.0", "0.124.0-alpha.1")) def test_hotfix_for_an_older_release_line(self) -> None: self.assertFalse(should_update_version("0.100.0-alpha.1.2", "0.123.0-alpha.5")) def test_hotfix_for_an_older_alpha(self) -> None: self.assertFalse(should_update_version("0.123.0-alpha.2.3", "0.123.0-alpha.10")) def test_hotfix_for_the_current_alpha(self) -> None: self.assertTrue(should_update_version("0.123.0-alpha.5.2", "0.123.0-alpha.5")) def test_hotfix_numbers_compare_numerically(self) -> None: self.assertTrue( should_update_version("0.123.0-alpha.5.10", "0.123.0-alpha.5.2") ) def test_numbered_alpha_after_bare_alpha(self) -> None: self.assertTrue(should_update_version("0.123.0-alpha.1", "0.123.0-alpha")) def test_beta_after_alpha(self) -> None: self.assertTrue(should_update_version("0.123.0-beta", "0.123.0-alpha.10")) def test_public_release_after_beta(self) -> None: self.assertTrue(should_update_version("0.123.0", "0.123.0-beta.2")) def test_equal_version(self) -> None: self.assertFalse(should_update_version("0.123.0-alpha.5", "0.123.0-alpha.5")) def test_missing_current_version(self) -> None: self.assertTrue(should_update_version("0.123.0-alpha.5", "")) def test_invalid_current_version(self) -> None: self.assertTrue(should_update_version("0.123.0-alpha.5", "0.123")) def test_invalid_release_version(self) -> None: self.assertRaises(ValueError, should_update_version, "0.123", "") if __name__ == "__main__": unittest.main()