Changeset: fb33719a7386 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/fb33719a7386
Modified Files:
        testing/sqllogictest.py
Branch: default
Log Message:

If expected error message surrounded by slashes, treat it as regexp.
So, use e.g. statement error 22018!/^conversion of string 'a' to type /


diffs (61 lines):

diff --git a/testing/sqllogictest.py b/testing/sqllogictest.py
--- a/testing/sqllogictest.py
+++ b/testing/sqllogictest.py
@@ -287,28 +287,42 @@ class SQLLogic:
                     # check whether failed as expected
                     err_code_received, err_msg_received = 
utils.parse_mapi_err_msg(msg)
                     if expected_err_code and expected_err_msg and 
err_code_received and err_msg_received:
-                        if expected_err_msg.endswith('...') and 
expected_err_code == err_code_received and 
err_msg_received.lower().startswith(expected_err_msg[:expected_err_msg.find('...')].lower()):
-                            result.append(err_code_received + '!' + 
expected_err_msg)
-                            return result
-                        result.append(err_code_received + '!' + 
err_msg_received)
-                        if expected_err_code == err_code_received and 
expected_err_msg.lower() == err_msg_received.lower():
-                            return result
+                        if expected_err_msg.startswith('/') and 
expected_err_msg.endswith('/'):
+                            res = re.match(expected_err_msg[1:-1], 
err_msg_received)
+                            if expected_err_code == err_code_received and res 
is not None:
+                                result.append(err_code_received + '!' + 
expected_err_msg)
+                                return result
+                            result.append(err_code_received + '!' + 
err_msg_received)
+                        else:
+                            if expected_err_msg.endswith('...') and 
expected_err_code == err_code_received and 
err_msg_received.lower().startswith(expected_err_msg[:expected_err_msg.find('...')].lower()):
+                                result.append(err_code_received + '!' + 
expected_err_msg)
+                                return result
+                            result.append(err_code_received + '!' + 
err_msg_received)
+                            if expected_err_code == err_code_received and 
expected_err_msg.lower() == err_msg_received.lower():
+                                return result
                     else:
                         if expected_err_code and err_code_received:
                             result.append(err_code_received + '!')
                             if expected_err_code == err_code_received:
                                 return result
                         elif expected_err_msg and err_msg_received:
-                            if expected_err_msg.endswith('...') and 
err_msg_received.lower().startswith(expected_err_msg[:expected_err_msg.find('...')].lower()):
-                                result.append(expected_err_msg)
-                                return result
-                            result.append(err_msg_received)
-                            if expected_err_msg.lower() == 
err_msg_received.lower():
-                                return result
+                            if expected_err_msg.startswith('/') and 
expected_err_msg.endswith('/'):
+                                res = re.match(expected_err_msg[1:-1], 
err_msg_received)
+                                if res is not None:
+                                    result.append(expected_err_msg)
+                                    return result
+                                result.append(err_msg_received)
+                            else:
+                                if expected_err_msg.endswith('...') and 
err_msg_received.lower().startswith(expected_err_msg[:expected_err_msg.find('...')].lower()):
+                                    result.append(expected_err_msg)
+                                    return result
+                                result.append(err_msg_received)
+                                if expected_err_msg.lower() == 
err_msg_received.lower():
+                                    return result
                     msg = "statement was expected to fail with" \
-                            + (f" error code {expected_err_code}" if 
expected_err_code else '') \
-                            + (f", error message {repr(expected_err_msg)}" if 
expected_err_msg else '') \
-                            + f", received code {err_code_received}, message 
{repr(err_msg_received)}"
+                            + (f" error code {expected_err_code}," if 
expected_err_code else '') \
+                            + (f" error message {repr(expected_err_msg)}," if 
expected_err_msg else '') \
+                            + f" received code {err_code_received}, message 
{repr(err_msg_received)}"
                     self.query_error(err_stmt or statement, str(msg), str(e))
                 return result
         except ConnectionError as e:
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to