Commit 771fce45 authored by Justin Bronn's avatar Justin Bronn
Browse files

Fixed #17212 -- Made GEOS version regular expression more robust. Thanks, strk.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@17682 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent bf1112de
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -101,8 +101,8 @@ geos_version.argtypes = None
geos_version.restype = c_char_p

# Regular expression should be able to parse version strings such as
# '3.0.0rc4-CAPI-1.3.3', or '3.0.0-CAPI-1.4.1'
version_regex = re.compile(r'^(?P<version>(?P<major>\d+)\.(?P<minor>\d+)\.(?P<subminor>\d+))(rc(?P<release_candidate>\d+))?-CAPI-(?P<capi_version>\d+\.\d+\.\d+)$')
# '3.0.0rc4-CAPI-1.3.3', '3.0.0-CAPI-1.4.1' or '3.4.0dev-CAPI-1.8.0'
version_regex = re.compile(r'^(?P<version>(?P<major>\d+)\.(?P<minor>\d+)\.(?P<subminor>\d+))((rc(?P<release_candidate>\d+))|dev)?-CAPI-(?P<capi_version>\d+\.\d+\.\d+)$')
def geos_version_info():
    """
    Returns a dictionary containing the various version metadata parsed from
+13 −1
Original line number Diff line number Diff line
@@ -1049,6 +1049,18 @@ class GEOSTest(unittest.TestCase, TestDataMixin):

        print "\nEND - expecting GEOS_NOTICE; safe to ignore.\n"

    def test28_geos_version(self):
        "Testing the GEOS version regular expression."
        from django.contrib.gis.geos.libgeos import version_regex
        versions = [ ('3.0.0rc4-CAPI-1.3.3', '3.0.0'),
                     ('3.0.0-CAPI-1.4.1', '3.0.0'),
                     ('3.4.0dev-CAPI-1.8.0', '3.4.0') ]
        for v, expected in versions:
            m = version_regex.match(v)
            self.assertTrue(m)
            self.assertEqual(m.group('version'), expected)


def suite():
    s = unittest.TestSuite()
    s.addTest(unittest.makeSuite(GEOSTest))