From 00b077ab14736a5dda598db0521bf1205922fd9b Mon Sep 17 00:00:00 2001 From: qwerty2501 <939468+qwerty2501@users.noreply.github.com> Date: Fri, 20 Oct 2023 06:54:01 +0900 Subject: [PATCH] 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. --- .gitignore | 4 ++++ tests/docker.py | 7 ++++++- tests/sqlite/.gitignore | 2 +- tests/sqlite/any.rs | 3 +-- tests/x.py | 23 ++++++++++++++++------- 5 files changed, 28 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 8b6fd2c2..9e71baaa 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/tests/docker.py b/tests/docker.py index 427ed98a..b1b81b07 100644 --- a/tests/docker.py +++ b/tests/docker.py @@ -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], diff --git a/tests/sqlite/.gitignore b/tests/sqlite/.gitignore index 02a6711c..df6bab3f 100644 --- a/tests/sqlite/.gitignore +++ b/tests/sqlite/.gitignore @@ -1,2 +1,2 @@ -sqlite.db +sqlite.test.db diff --git a/tests/sqlite/any.rs b/tests/sqlite/any.rs index 601f171e..f96274a3 100644 --- a/tests/sqlite/any.rs +++ b/tests/sqlite/any.rs @@ -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) diff --git a/tests/x.py b/tests/x.py index 2d211db4..8aca890f 100755 --- a/tests/x.py +++ b/tests/x.py @@ -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"):