Changeset: ad13c411bec6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ad13c411bec6
Modified Files:
        testing/sqltest.py
Branch: default
Log Message:

adding line number in sqltest in error output


diffs (88 lines):

diff --git a/testing/sqltest.py b/testing/sqltest.py
--- a/testing/sqltest.py
+++ b/testing/sqltest.py
@@ -10,6 +10,7 @@ import pymonetdb
 import difflib
 from abc import ABCMeta, abstractmethod
 import MonetDBtesting.process as process
+import inspect
 
 TSTDB=os.getenv("TSTDB")
 MAPIPORT=os.getenv("MAPIPORT")
@@ -155,7 +156,7 @@ class RunnableTestResult(metaclass=ABCMe
     did_run = False
 
     @abstractmethod
-    def run(self, query:str, *args, stdin=None):
+    def run(self, query:str, *args, stdin=None, lineno=None):
         """Run query with specific client"""
         pass
 
@@ -175,12 +176,14 @@ class TestCaseResult(object):
         self.rowcount = -1
         self.description = None
         self.id = kwargs.get('id')
+        self.lineno = None
 
     def fail(self, msg, data=None):
         """ logs errors to test case err file"""
         err_file = self.test_case.err_file
         if len(self.assertion_errors) == 0:
-            print('', file=err_file)
+            lineno = self.lineno or 'N/A'
+            print(f'line {lineno}', file=err_file)
             if self.query:
                 print(self.query, file=err_file)
             elif self.id:
@@ -308,9 +311,10 @@ class MclientTestResult(TestCaseResult, 
         return count
 
 
-    def run(self, query:str, *args, stdin=None):
+    def run(self, query:str, *args, stdin=None, lineno=None):
         # ensure runs only once
         if self.did_run is False:
+            self.lineno = lineno
             conn_ctx = self.test_case.conn_ctx
             kwargs = dict(
                 host = conn_ctx.hostname,
@@ -416,9 +420,10 @@ class PyMonetDBTestResult(TestCaseResult
                 err_msg = tmp[0].strip()
         return err_code, err_msg
 
-    def run(self, query:str, *args, stdin=None):
+    def run(self, query:str, *args, stdin=None, lineno=None):
         # ensure runs only once
         if self.did_run is False:
+            self.lineno = lineno
             if query:
                 self.query = query
                 try:
@@ -447,8 +452,9 @@ class MonetDBeTestResult(TestCaseResult,
     def _parse_error(self, err: str):
         pass
 
-    def run(self, query:str, *args, stdin=None):
+    def run(self, query:str, *args, stdin=None, lineno=None):
         if self.did_run is False:
+            self.lineno = lineno
             if query:
                 self.query = query
                 try:
@@ -552,13 +558,15 @@ class SQLTestCase():
         return self._conn_ctx or self.default_conn_ctx()
 
     def execute(self, query:str, *args, client='pymonetdb', stdin=None, 
result_id=None):
+        frame = inspect.currentframe().f_back
+        lineno = frame.f_lineno
         if client == 'mclient':
             res = MclientTestResult(self, id=result_id)
         elif self.in_memory:
             res = MonetDBeTestResult(self, id=result_id)
         else:
             res = PyMonetDBTestResult(self, id=result_id)
-        res.run(query, *args, stdin=stdin)
+        res.run(query, *args, stdin=stdin, lineno=lineno)
         self.test_results.append(res)
         return res
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to