tests: Use sqlite3.Binary() with the log files

This is needed to avoid issues in some cases where 8-bit bytestrings may
be present in the otherwise text debug log.

Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2015-09-07 16:53:23 +03:00
parent eb95ced2d2
commit a302ee342c

View file

@ -18,6 +18,12 @@ import termios
import logging import logging
logger = logging.getLogger() logger = logging.getLogger()
try:
import sqlite3
sqlite3_imported = True
except ImportError:
sqlite3_imported = False
scriptsdir = os.path.dirname(os.path.realpath(sys.modules[__name__].__file__)) scriptsdir = os.path.dirname(os.path.realpath(sys.modules[__name__].__file__))
sys.path.append(os.path.join(scriptsdir, '..', '..', 'wpaspy')) sys.path.append(os.path.join(scriptsdir, '..', '..', 'wpaspy'))
@ -80,7 +86,7 @@ def add_log_file(conn, test, run, type, path):
if contents is None: if contents is None:
return return
sql = "INSERT INTO logs(test,run,type,contents) VALUES(?, ?, ?, ?)" sql = "INSERT INTO logs(test,run,type,contents) VALUES(?, ?, ?, ?)"
params = (test, run, type, contents) params = (test, run, type, sqlite3.Binary(contents))
try: try:
conn.execute(sql, params) conn.execute(sql, params)
conn.commit() conn.commit()
@ -231,7 +237,9 @@ def main():
sys.exit(2) sys.exit(2)
if args.database: if args.database:
import sqlite3 if not sqlite3_imported:
print "No sqlite3 module found"
sys.exit(2)
conn = sqlite3.connect(args.database) conn = sqlite3.connect(args.database)
conn.execute('CREATE TABLE IF NOT EXISTS results (test,result,run,time,duration,build,commitid)') conn.execute('CREATE TABLE IF NOT EXISTS results (test,result,run,time,duration,build,commitid)')
conn.execute('CREATE TABLE IF NOT EXISTS tests (test,description)') conn.execute('CREATE TABLE IF NOT EXISTS tests (test,description)')