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

Use f-strings instead of .format method; complain on unrecognized commands.


diffs (153 lines):

diff --git a/testing/sqllogictest.py b/testing/sqllogictest.py
--- a/testing/sqllogictest.py
+++ b/testing/sqllogictest.py
@@ -122,6 +122,9 @@ def prepare_copyfrom_stmt(stmt:[str]=[])
     tail='\n'.join(tail)
     return head + '\n' + tail, head, stmt
 
+def dq(s):
+    return s.replace('"', '""')
+
 class SQLLogic:
     def __init__(self, report=None, out=sys.stdout):
         self.dbh = None
@@ -224,40 +227,40 @@ class SQLLogic:
         self.crs.execute('select s.name, t.name, case when t.type in (select 
table_type_id from sys.table_types where table_type_name like \'%VIEW%\') then 
\'VIEW\' else \'TABLE\' end from sys.tables t, sys.schemas s where not t.system 
and t.schema_id = s.id')
         for row in self.crs.fetchall():
             try:
-                self.crs.execute('drop {} "{}"."{}" cascade'.format(row[2], 
row[0].replace('"', '""'), row[1].replace('"', '""')))
+                self.crs.execute(f'drop {row[2]} "{dq(row[0])}"."{dq(row[1])}" 
cascade')
             except pymonetdb.Error:
                 # perhaps already dropped because of the cascade
                 pass
         self.crs.execute('select s.name, f.name, ft.function_type_keyword from 
functions f, schemas s, function_types ft where not f.system and f.schema_id = 
s.id and f.type = ft.function_type_id')
         for row in self.crs.fetchall():
             try:
-                self.crs.execute('drop all {} "{}"."{}"'.format(row[2], 
row[0].replace('"', '""'), row[1].replace('"', '""')))
+                self.crs.execute(f'drop all {row[2]} 
"{dq(row[0])}"."{dq(row[1])}"')
             except pymonetdb.Error:
                 # perhaps already dropped
                 pass
         self.crs.execute('select s.name, q.name from sys.sequences q, schemas 
s where q.schema_id = s.id')
         for row in self.crs.fetchall():
             try:
-                self.crs.execute('drop sequence 
"{}"."{}"'.format(row[0].replace('"', '""'), row[1].replace('"', '""')))
+                self.crs.execute(f'drop sequence 
"{dq(row[0])}"."{dq(row[1])}"')
             except pymonetdb.Error:
                 # perhaps already dropped
                 pass
         self.crs.execute("select name from sys.users where name not in 
('monetdb', '.snapshot')")
         for row in self.crs.fetchall():
             try:
-                self.crs.execute('alter user "{}" SET SCHEMA 
"sys"'.format(row[0].replace('"', '""')))
+                self.crs.execute(f'alter user "{dq(row[0])}" SET SCHEMA "sys"')
             except pymonetdb.Error:
                 pass
         self.crs.execute('select name from sys.schemas where not system')
         for row in self.crs.fetchall():
             try:
-                self.crs.execute('drop schema "{}" 
cascade'.format(row[0].replace('"', '""')))
+                self.crs.execute(f'drop schema "{dq(row[0])}" cascade')
             except pymonetdb.Error:
                 pass
         self.crs.execute("select name from sys.users where name not in 
('monetdb', '.snapshot')")
         for row in self.crs.fetchall():
             try:
-                self.crs.execute('drop user "{}"'.format(row[0].replace('"', 
'""')))
+                self.crs.execute(f'drop user "{dq(row[0])}"')
             except pymonetdb.Error:
                 pass
 
@@ -303,8 +306,8 @@ class SQLLogic:
                             if expected_err_msg.lower() == 
err_msg_received.lower():
                                 return result
                     msg = "statement was expected to fail with" \
-                            + (" error code {}".format(expected_err_code) if 
expected_err_code else '')\
-                            + (", error message 
{}".format(str(expected_err_msg)) if expected_err_msg else '')
+                            + (f" error code {expected_err_code}" if 
expected_err_code else '')\
+                            + (f", error message {str(expected_err_msg)}" if 
expected_err_msg else '')
                     self.query_error(err_stmt or statement, str(msg), str(e))
                 return result
         except ConnectionError as e:
@@ -321,9 +324,9 @@ class SQLLogic:
             if expectok:
                 if expected_rowcount is not None:
                     result.append('rowcount')
-                    result.append('{}'.format(affected_rowcount))
+                    result.append(f'{affected_rowcount}')
                     if expected_rowcount != affected_rowcount:
-                        self.query_error(err_stmt or statement, "statement was 
expecting to succeed with {} rows but received {} 
rows!".format(expected_rowcount, affected_rowcount))
+                        self.query_error(err_stmt or statement, f"statement 
was expecting to succeed with {expected_rowcount} rows but received 
{affected_rowcount} rows!")
                 return result
             msg = None
         self.query_error(err_stmt or statement, expectok and "statement was 
expected to succeed but didn't" or "statement was expected to fail but didn't", 
msg)
@@ -385,7 +388,7 @@ class SQLLogic:
         return ndata
 
     def raise_error(self, message):
-        print('Syntax error in test file, line {}:'.format(self.qline), 
file=self.out)
+        print(f'Syntax error in test file, line {self.qline}:', file=self.out)
         print(message, file=self.out)
         raise SQLLogicSyntaxError(message)
 
@@ -452,7 +455,7 @@ class SQLLogic:
                     rescols.append('T')
             rescols = ''.join(rescols)
             if len(crs.description) != len(columns):
-                self.query_error(query, 'received {} columns, expected {} 
columns'.format(len(crs.description), len(columns)), data=data)
+                self.query_error(query, f'received {len(crs.description)} 
columns, expected {len(columns)} columns', data=data)
                 columns = rescols
                 err = True
         else:
@@ -461,7 +464,7 @@ class SQLLogic:
             rescols = 'T'
         if sorting != 'python' and crs.rowcount * len(columns) != nresult:
             if not err:
-                self.query_error(query, 'received {} rows, expected {} 
rows'.format(crs.rowcount, nresult // len(columns)), data=data)
+                self.query_error(query, f'received {crs.rowcount} rows, 
expected {nresult // len(columns)} rows', data=data)
                 err = True
         if self.res is not None:
             for row in data:
@@ -555,7 +558,7 @@ class SQLLogic:
             if (len(ndata)):
                 ncols = len(ndata[0])
             if len(ndata)*ncols != nresult:
-                self.query_error(query, 'received {} rows, expected {} 
rows'.format(len(ndata)*ncols, nresult), data=data)
+                self.query_error(query, f'received {len(ndata)*ncols} rows, 
expected {nresult} rows', data=data)
                 err = True
             for row in ndata:
                 for col in row:
@@ -651,7 +654,7 @@ class SQLLogic:
         if hashlabel:
             result1.append(hashlabel)
         if len(result) > self.threshold:
-            result2 = ['{} values hashing to {}'.format(len(result), h if 
resdata is None else resh)]
+            result2 = [f'{len(result)} values hashing to {h if resdata is None 
else resh}']
         else:
             result2 = result
         return result1, result2
@@ -908,12 +911,13 @@ class SQLLogic:
                         self.writeline(line.rstrip())
                     self.writeline('----')
                     if hash:
-                        self.writeline('{} values hashing to {}'.format(
-                            nresult, hash))
+                        self.writeline(f'{nresult} values hashing to {hash}')
                     else:
                         for line in expected:
                             self.writeline(line)
                 self.writeline()
+            else:
+                self.raise_error(f'unrecognized command {words[0]}')
 
 if __name__ == '__main__':
     import argparse
@@ -961,7 +965,7 @@ if __name__ == '__main__':
             if not opts.nodrop:
                 sql.drop()
             if opts.verbose:
-                print('now testing {}'. format(test))
+                print(f'now testing {test}')
             try:
                 sql.parse(test, approve=opts.approve, verbose=opts.verbose,
                           defines=opts.define, run_until=opts.run_until)
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to