/
germanubis
/
sqlx
ΠΠ±Π·ΠΎΡ
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
ΠΠΎΠΉΡΠΈ
/
germanubis
/
sqlx
ΠΠΎΠ΄
ΠΠ°ΠΏΡΠΎΡΡ
0
ΠΠ°Π΄Π°ΡΠΈ
ΠΠΈΠΊΠΈ
ΠΠ°ΠΊΠ΅ΡΡ
0
Π Π΅Π»ΠΈΠ·Ρ
0
ΠΠ½Π°Π»ΠΈΡΠΈΠΊΠ°
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
v0.5.0
tests/docker.py
69 ΡΡΡΠΎΠΊ
2 KB
Ryan Leckey
feat(mysql): support configuring the active charset and collation (via an automatic SET NAMES)
21 ΠΈΡΠ» 2020, 09:07
21 ΠΈΡΠ» 2020, 09:07
cd4e8dc
ΠΠΎΠ΄
ΠΠ²ΡΠΎΡΡΡΠ²ΠΎ
Π ΡΡΠΌ ΠΊΠΎΠ΄?
import subprocess import time from os import path # base dir of sqlx workspace dir_workspace = path.dirname(path.dirname(path.realpath(__file__))) # dir of tests dir_tests = path.join(dir_workspace, "tests") # start database server and return a URL to use to connect def start_database(driver, database, cwd): if driver == "sqlite": # short-circuit for sqlite return f"sqlite://{path.join(cwd, database)}" res = subprocess.run( ["docker-compose", "up", "-d", driver], stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=dir_tests, ) if res.returncode != 0: print(res.stderr, file=sys.stderr) if b"done" in res.stderr: time.sleep(30) # determine appropriate port for driver if driver.startswith("mysql") or driver.startswith("mariadb"): port = 3306 elif driver.startswith("postgres"): port = 5432 elif driver.startswith("mssql"): port = 1433 else: raise NotImplementedError # find port res = subprocess.run( ["docker", "inspect", f"-f='{{{{(index (index .NetworkSettings.Ports \"{port}/tcp\") 0).HostPort}}}}'", f"sqlx_{driver}_1"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=dir_tests, ) if res.returncode != 0: print(res.stderr, file=sys.stderr) port = int(res.stdout[1:-2].decode()) # construct appropriate database URL if driver.startswith("mysql") or driver.startswith("mariadb"): return f"mysql://root:password@127.0.0.1:{port}/{database}" elif driver.startswith("postgres"): return f"postgres://postgres:password@localhost:{port}/{database}" elif driver.startswith("mssql"): return f"mssql://sa:Password123!@127.0.0.1:{port}/{database}" else: raise NotImplementedError