Is tests/x.py maintained? And I tried fix it. (#2754)

* chore:Added ipaddr extension library to gitignore

* fix:In a Linux environment, shared libraries in the current directory are not loaded, so add the current directory to the LD_LIBRARY_PATH environment variable.

* fix: Since confrict primary key when running multiple sqlite tests, removed specific primary key in insert.

* chore: Since avoid git modified targeting, copy the db file to new test db file.

* fix: Since docker mysql 5.7 using yaSSL(It only supports TLSv1.1), avoid running when using rustls.
This commit is contained in:
qwerty2501 2023-10-20 06:54:01 +09:00 committed by GitHub
parent 080d57af3a
commit 00b077ab14
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 28 additions and 11 deletions

4
.gitignore vendored
View file

@ -13,3 +13,7 @@ target/
# Shared-memory and WAL files created by SQLite.
*-shm
*-wal
# Integration testing extension library for SQLite.
ipaddr.dylib
ipaddr.so

View file

@ -2,6 +2,7 @@ import subprocess
import sys
import time
from os import path
import shutil
# base dir of sqlx workspace
dir_workspace = path.dirname(path.dirname(path.realpath(__file__)))
@ -13,8 +14,12 @@ 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":
database = path.join(cwd, database)
(base_path, ext) = path.splitext(database)
new_database = f"{base_path}.test{ext}"
shutil.copy(database, new_database)
# short-circuit for sqlite
return f"sqlite://{path.join(cwd, database)}"
return f"sqlite://{path.join(cwd, new_database)}"
res = subprocess.run(
["docker-compose", "up", "-d", driver],

View file

@ -1,2 +1,2 @@
sqlite.db
sqlite.test.db

View file

@ -6,8 +6,7 @@ async fn it_encodes_bool_with_any() -> anyhow::Result<()> {
sqlx::any::install_default_drivers();
let mut conn = new::<Any>().await?;
let res = sqlx::query("INSERT INTO accounts VALUES (?, ?, ?)")
.bind(87)
let res = sqlx::query("INSERT INTO accounts (name, is_active) VALUES (?, ?)")
.bind("Harrison Ford")
.bind(true)
.execute(&mut conn)

View file

@ -79,6 +79,12 @@ def run(command, comment=None, env=None, service=None, tag=None, args=None, data
environ["RUSTFLAGS"] += " --cfg sqlite_ipaddr"
else:
environ["RUSTFLAGS"] = "--cfg sqlite_ipaddr"
if platform.system() == "Linux":
if os.environ.get("LD_LIBRARY_PATH"):
environ["LD_LIBRARY_PATH"]= os.environ.get("LD_LIBRARY_PATH") + ":"+ os.getcwd()
else:
environ["LD_LIBRARY_PATH"]=os.getcwd()
if service is not None:
database_url = start_database(service, database="sqlite/sqlite.db" if service == "sqlite" else "sqlx", cwd=dir_tests)
@ -110,7 +116,7 @@ def run(command, comment=None, env=None, service=None, tag=None, args=None, data
*command.split(" "),
*command_args
],
env=dict(**os.environ, **environ),
env=dict(list(os.environ.items()) + list(environ.items())),
cwd=cwd,
)
@ -201,12 +207,15 @@ for runtime in ["async-std", "tokio"]:
#
for version in ["8", "5_7"]:
run(
f"cargo test --no-default-features --features any,mysql,macros,_unstable-all-types,runtime-{runtime},tls-{tls}",
comment=f"test mysql {version}",
service=f"mysql_{version}",
tag=f"mysql_{version}" if runtime == "async-std" else f"mysql_{version}_{runtime}",
)
# Since docker mysql 5.7 using yaSSL(It only supports TLSv1.1), avoid running when using rustls.
# https://github.com/docker-library/mysql/issues/567
if not(version == "5_7" and tls == "rustls"):
run(
f"cargo test --no-default-features --features any,mysql,macros,_unstable-all-types,runtime-{runtime},tls-{tls}",
comment=f"test mysql {version}",
service=f"mysql_{version}",
tag=f"mysql_{version}" if runtime == "async-std" else f"mysql_{version}_{runtime}",
)
## +client-ssl
if tls != "none" and not(version == "5_7" and tls == "rustls"):