aboutsummaryrefslogtreecommitdiff
path: root/backend/tests/common.py
blob: cb455e43761bd4128a2abe00bc0c22570cead7ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
"""
Utilities for testing
"""

from typing import Any
import bz2, gzip, sqlite3

def createTestFile(filename: str, content: str) -> None:
	""" Creates a file with the given name and contents """
	with open(filename, 'w') as file:
		file.write(content)

def readTestFile(filename: str) -> str:
	""" Returns the contents of a file with the given name """
	with open(filename) as file:
		return file.read()

def createTestBz2(filename: str, content: str) -> None:
	""" Creates a bzip2 file with the given name and contents """
	with bz2.open(filename, mode='wb') as file:
		file.write(content.encode())

def createTestGzip(filename: str, content: str) -> None:
	""" Creates a gzip file with the given name and contents """
	with gzip.open(filename, mode='wt') as file:
		file.write(content)

TableRows = set[tuple[Any, ...]]
def createTestDbTable(filename: str, createCmd: str | None, insertCmd: str, rows: TableRows) -> None:
	""" Creates an sqlite db with a table specified by creation+insertion commands and records.
		If 'createCmd' is None, just insert into an existing table."""
	dbCon = sqlite3.connect(filename)
	dbCur = dbCon.cursor()
	if createCmd is not None:
		dbCur.execute(createCmd)
	for row in rows:
		dbCur.execute(insertCmd, row)
	dbCon.commit()
	dbCon.close()

def readTestDbTable(filename: str, selectCmd: str) -> TableRows:
	""" Returns the records in a sqlite db with the given name, using the given select command """
	rows: set[tuple[Any, ...]] = set()
	dbCon = sqlite3.connect(filename)
	dbCur = dbCon.cursor()
	for row in dbCur.execute(selectCmd):
		rows.add(row)
	dbCon.close()
	return rows