Changeset: 650f413e080f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/650f413e080f
Modified Files:
        geom/sql/conformance/Tests/All
        geom/sql/conformance/Tests/T49.test
        geom/sql/functions/Tests/All
        sql/test/pg_regress/Tests/All
        sql/test/pg_regress/Tests/polygon.test
        testing/Mtest.py.in
        testing/Mz.py.in
Branch: Jul2021
Log Message:

Implemented version check for geos library in testing.


diffs (191 lines):

diff --git a/geom/sql/conformance/Tests/All b/geom/sql/conformance/Tests/All
--- a/geom/sql/conformance/Tests/All
+++ b/geom/sql/conformance/Tests/All
@@ -46,8 +46,8 @@ HAVE_GEOM?T44
 HAVE_GEOM?T45
 HAVE_GEOM?T46
 HAVE_GEOM?T47
-HAVE_GEOM?T48
-#HAVE_GEOM?T49 # disabled because depends on geos library version
+HAVE_GEOM&GEOS_VERSION>=3.9?T48
+HAVE_GEOM&GEOS_VERSION>=3.9?T49
 HAVE_GEOM?T50
 HAVE_GEOM?T51
 HAVE_GEOM?T52
diff --git a/geom/sql/conformance/Tests/T49.test 
b/geom/sql/conformance/Tests/T49.test
--- a/geom/sql/conformance/Tests/T49.test
+++ b/geom/sql/conformance/Tests/T49.test
@@ -1,5 +1,5 @@
 query T rowsort
 SELECT ST_AsText(ST_Union(shore, boundary)) FROM lakes, named_places WHERE 
lakes.name = 'Blue Lake' AND named_places.name = 'Goose Island'
 ----
-POLYGON ((52 18, 66 23, 73 9, 48 6, 52 18))
+POLYGON ((66 23, 73 9, 48 6, 52 18, 66 23))
 
diff --git a/geom/sql/functions/Tests/All b/geom/sql/functions/Tests/All
--- a/geom/sql/functions/Tests/All
+++ b/geom/sql/functions/Tests/All
@@ -20,7 +20,7 @@ HAVE_GEOM?ST_AsText
 
 HAVE_GEOM?ST_IsClosed
 HAVE_GEOM?ST_IsEmpty
-HAVE_GEOM?ST_IsSimple
+HAVE_GEOM&GEOS_VERSION>=3.8?ST_IsSimple
 HAVE_GEOM?ST_IsValid
 HAVE_GEOM?ST_IsRing
 
diff --git a/sql/test/pg_regress/Tests/All b/sql/test/pg_regress/Tests/All
--- a/sql/test/pg_regress/Tests/All
+++ b/sql/test/pg_regress/Tests/All
@@ -29,7 +29,7 @@ HAVE_GEOM?point
 #HAVE_GEOM?lseg   # lseg is NOT supported in MonetDB. lseg (Line Segment) is 
also not part of OpenGIS standard so exclude this test
 HAVE_GEOM?box     # box is not supported in MonetDB but it can be replaced 
with mbr (= minimum bounded rectangle)
 HAVE_GEOM?path    # path is not supported in MonetDB but it can be replaced 
with linestring
-HAVE_GEOM?polygon
+HAVE_GEOM&GEOS_VERSION>=3.10?polygon
 #HAVE_GEOM?circle # circle is NOT supported in MonetDB. It is also not part of 
OpenGIS standard so exclude this test
 #HAVE_GEOM?geometry  # tables CIRCLE_TBL and LSEG_TBL do not exist as they 
have been disabled above. All queries fail
 date
diff --git a/sql/test/pg_regress/Tests/polygon.test 
b/sql/test/pg_regress/Tests/polygon.test
--- a/sql/test/pg_regress/Tests/polygon.test
+++ b/sql/test/pg_regress/Tests/polygon.test
@@ -15,7 +15,7 @@ POLYGON ((3 1, 3 3, 1 0, 3 1))
 statement error
 INSERT INTO POLYGON_TBL(f1) VALUES ('POLYGON((0.0 0.0, 0.0 0.0))')
 
-statement error
+statement ok
 INSERT INTO POLYGON_TBL(f1) VALUES ('POLYGON((0.0 1.0, 1.0 1.0, 0.0 1.0))')
 
 statement ok
@@ -57,6 +57,8 @@ SELECT '' AS four, POLYGON_TBL.* FROM PO
 (empty)
 POLYGON ((0 1, 0 1, 0 1, 0 1))
 (empty)
+POLYGON ((0 1, 1 1, 0 1))
+(empty)
 POLYGON ((0 2, 0 1, 0 1, 0 1, 0 2))
 (empty)
 POLYGON ((2 0, 2 4, 0 0, 2 0))
@@ -71,6 +73,8 @@ SELECT * FROM POLYGON_TBL_VW
 ----
 POLYGON ((0 1, 0 1, 0 1, 0 1))
 POLYGON ((0 1, 0 1, 0 1, 0 1))
+POLYGON ((0 1, 1 1, 0 1))
+POLYGON ((0 1, 1 1, 0 1))
 POLYGON ((0 2, 0 1, 0 1, 0 1, 0 2))
 POLYGON ((0 2, 0 1, 0 1, 0 1, 0 2))
 POLYGON ((2 0, 2 4, 0 0, 2 0))
@@ -84,6 +88,9 @@ SELECT '' AS three, p.*
    WHERE p.f1 && 'POLYGON((3.0 1.0, 3.0 3.0, 1.0 0.0, 3.0 1.0))'
 ----
 (empty)
+POLYGON ((0 1, 1 1, 0 1))
+POLYGON ((0 1, 1 1, 0 1))
+(empty)
 POLYGON ((2 0, 2 4, 0 0, 2 0))
 POLYGON ((2 0, 2 4, 0 0, 2 0))
 (empty)
@@ -108,6 +115,9 @@ SELECT '' AS four, p.*
 POLYGON ((0 1, 0 1, 0 1, 0 1))
 POLYGON ((0 1, 0 1, 0 1, 0 1))
 (empty)
+POLYGON ((0 1, 1 1, 0 1))
+POLYGON ((0 1, 1 1, 0 1))
+(empty)
 POLYGON ((0 2, 0 1, 0 1, 0 1, 0 2))
 POLYGON ((0 2, 0 1, 0 1, 0 1, 0 2))
 (empty)
diff --git a/testing/Mtest.py.in b/testing/Mtest.py.in
--- a/testing/Mtest.py.in
+++ b/testing/Mtest.py.in
@@ -59,6 +59,8 @@ isatty = os.isatty(sys.stdout.fileno())
 
 mapiportre = re.compile(r'mapi:monetdb://[-.a-zA-Z0-9]+:(?P<port>\d+)/')
 
+geos_version = '@GEOS_VERSION@'
+
 # default is no color (these three functions may get redefined)
 def prred(str, write = sys.stdout.write):
     write(str)
@@ -2026,6 +2028,35 @@ def RunTest(env, TST, COND, oktests, len
                     elem = SkipTest(env, TST, EXT, reason, length)
                     break
                 passwd = cond[7:]
+            elif cond.startswith('GEOS_VERSION>='):
+                if not geos_version:
+                    reason = "no geos version information available"
+                    elem = SkipTest(env, TST, EXT, reason, length)
+                    break
+                req_vers = cond[14:].split('.')
+                act_vers = geos_version.split('.')
+                if not negate:
+                    for i in range(len(act_vers)):
+                        if i >= len(req_vers):
+                            break
+                        if int(act_vers[i]) > int(req_vers[i]):
+                            break
+                        if int(act_vers[i]) < int(req_vers[i]):
+                            reason = "geos version too low"
+                            elem = SkipTest(env, TST, EXT, reason, length)
+                            break
+                else:
+                    for i in range(len(act_vers)):
+                        if i >= len(req_vers):
+                            break
+                        if int(act_vers[i]) < int(req_vers[i]):
+                            break
+                        if int(act_vers[i]) > int(req_vers[i]):
+                            reason = "geos version too high"
+                            elem = SkipTest(env, TST, EXT, reason, length)
+                            break
+                if reason is not None:
+                    break
             elif cond not in CONDITIONALS:
                 reason = "as conditional '%s' is unknown." % cond
                 elem = SkipTest(env, TST, EXT, reason, length)
diff --git a/testing/Mz.py.in b/testing/Mz.py.in
--- a/testing/Mz.py.in
+++ b/testing/Mz.py.in
@@ -57,6 +57,8 @@ isatty = os.isatty(sys.stdout.fileno())
 
 mapiportre = re.compile(r'mapi:monetdb://[-.a-zA-Z0-9]+:(?P<port>\d+)/')
 
+geos_version = '@GEOS_VERSION@'
+
 # default is no color (these three functions may get redefined)
 def prred(str, write = sys.stdout.write):
     write(str)
@@ -1106,6 +1108,32 @@ def RunTest(env, test, oktests, pSrvr):
                     reason = "impossible combination of PASSWD= and negation"
                     break
                 passwd = cond[7:]
+            elif cond.startswith('GEOS_VERSION>='):
+                if not geos_version:
+                    reason = "no geos version information available"
+                    break
+                req_vers = cond[14:].split('.')
+                act_vers = geos_version.split('.')
+                if not negate:
+                    for i in range(len(act_vers)):
+                        if i >= len(req_vers):
+                            break
+                        if int(act_vers[i]) > int(req_vers[i]):
+                            break
+                        if int(act_vers[i]) < int(req_vers[i]):
+                            reason = "geos version too low"
+                            break
+                else:
+                    for i in range(len(act_vers)):
+                        if i >= len(req_vers):
+                            break
+                        if int(act_vers[i]) < int(req_vers[i]):
+                            break
+                        if int(act_vers[i]) > int(req_vers[i]):
+                            reason = "geos version too high"
+                            break
+                if reason is not None:
+                    break
             elif cond not in CONDITIONALS:
                 reason = "as conditional '%s' is unknown." % cond
                 break
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to