diff --git a/ubuntutools/distro_info.py b/ubuntutools/distro_info.py index d170f8c..6e6b476 100644 --- a/ubuntutools/distro_info.py +++ b/ubuntutools/distro_info.py @@ -106,6 +106,10 @@ class DistroInfo(object): """Get list of all supported distributions based on the given date.""" raise NotImplementedError() + def valid(self, codename): + """Check if the given codename is known.""" + return codename in self.all + def unsupported(self, date=None): """Get list of all unsupported distributions based on the given date.""" if date is None: @@ -167,6 +171,11 @@ class DebianDistroInfo(DistroInfo): raise DistroDataOutdated() return distros[-2]["series"] + def valid(self, codename): + """Check if the given codename is known.""" + return DistroInfo.valid(self, codename) or \ + codename in ["unstable", "testing", "stable", "old"] + class UbuntuDistroInfo(DistroInfo): """provides information about Ubuntu's distributions""" diff --git a/ubuntutools/misc.py b/ubuntutools/misc.py index 4e41258..8183fab 100644 --- a/ubuntutools/misc.py +++ b/ubuntutools/misc.py @@ -177,5 +177,5 @@ def codename_to_distribution(codename): if not info: continue - if codename in info().all: + if info().valid(codename): return distro diff --git a/ubuntutools/test/test_distro_info.py b/ubuntutools/test/test_distro_info.py index ee66fc5..7e0a376 100644 --- a/ubuntutools/test/test_distro_info.py +++ b/ubuntutools/test/test_distro_info.py @@ -58,6 +58,12 @@ class DebianDistroInfoTestCase(unittest.TestCase): """Test: Get latest testing Debian distribution.""" self.assertEqual(self._distro_info.testing(self._date), "squeeze") + def test_valid(self): + """Test: Check for valid Debian distribution.""" + self.assertTrue(self._distro_info.valid("sid")) + self.assertTrue(self._distro_info.valid("stable")) + self.assertFalse(self._distro_info.valid("foobar")) + def test_unsupported(self): """Test: List all unsupported Debian distribution.""" unsupported = ["buzz", "rex", "bo", "hamm", "slink", "potato", "woody", @@ -111,3 +117,8 @@ class UbuntuDistroInfoTestCase(unittest.TestCase): "gutsy", "intrepid", "jaunty"]) self.assertEqual(unsupported - set(self._distro_info.unsupported()), set()) + + def test_valid(self): + """Test: Check for valid Ubuntu distribution.""" + self.assertTrue(self._distro_info.valid("lucid")) + self.assertFalse(self._distro_info.valid("42"))