Changeset: c2718b187150 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c2718b187150
Modified Files:
sql/odbc/tests/Tests/ODBCconnect.py
Branch: Aug2024
Log Message:
Add tests for SQLBrowseConnect
diffs (77 lines):
diff --git a/sql/odbc/tests/Tests/ODBCconnect.py
b/sql/odbc/tests/Tests/ODBCconnect.py
--- a/sql/odbc/tests/Tests/ODBCconnect.py
+++ b/sql/odbc/tests/Tests/ODBCconnect.py
@@ -56,7 +56,10 @@ class Execution:
if self.checks:
parts.append('--- test history: ---')
for wanted, found in self.checks:
- parts.append(f'wanted {wanted!r}, found {found!r}')
+ if len(wanted) == 1:
+ parts.append(f'wanted {wanted[0]!r}, found {found!r}')
+ else:
+ parts.append(f'wanted all of {wanted!r}, found {found!r}')
parts.append('--- end ---')
if self.remaining:
parts += [
@@ -66,11 +69,13 @@ class Execution:
]
return '\n'.join(parts)
- def expect(self, pattern):
+ def expect(self, pattern, *more_patterns):
+ patterns = [pattern, *more_patterns]
line = self.next_line()
- self.checks.append((pattern, line))
- if pattern not in line:
- raise Exception(f'Wanted {pattern!r}, found {line!r}')
+ self.checks.append((patterns, line))
+ for p in patterns:
+ if p not in line:
+ raise Exception(f'Wanted {p!r}, found {line!r}')
def next_line(self):
if not self.remaining:
@@ -169,4 +174,43 @@ ex = Execution('-d', f'DRIVER={{MonetDB}
ex.expect('OK')
ex.end()
+# non-NUL terminated connection string
+ex = Execution('-0', '-d',
f'DSN={dsn}-Wrong;Database={dbname};Uid={user};Pwd={password}')
+ex.expect('OK')
+ex.end()
+
+# Test browsing
+
+ex = Execution('-b', 'Driver={MonetDB}')
+ex.expect('Info')
+ex.expect('08001')
+# browse not complete, uid and pwd mandatory, database optional
+ex.expect('BROWSE', 'UID:User=?', 'PWD:Password=?', '*DATABASE')
+ex.end()
+
+# same as above, but with another iteration of browsing
+ex = Execution('-b', 'Driver={MonetDB}',
f'Driver={{MonetDB}};UID={user};PWD={password};Port={port}')
+# first iteration
+ex.expect('Info')
+ex.expect('08001')
+ex.expect('BROWSE', 'UID:User=?', 'PWD:Password=?', '*DATABASE')
+# second iteration
+ex.expect('OK', ';', 'HOST=')
+ex.end()
+
+# similar to above, but not NUL-terminated
+ex = Execution('-0', '-b', 'Driver={MonetDB}')
+ex.expect('Info')
+ex.expect('08001')
+# browse not complete, uid and pwd mandatory, database optional
+ex.expect('BROWSE', 'UID:User=?', 'PWD:Password=?', '*DATABASE')
+ex.end()
+
+# it should also work when the user and password are in the dsn
+ex = Execution('-b', f'DSN={dsn}')
+ex.expect('OK', ';')
+ex.end()
+
+# clear 'ex', otherwise the atexit handler will write things
+# to stderr
ex = None
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]