diff --git a/.gitignore b/.gitignore index 8b6fd2c259..9e71baaa01 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 427ed98a44..b1b81b07fb 100644 --- a/tests/docker.py +++ b/tests/docker.py @@ -2,6 +2,7 @@ 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 @@ # 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 02a6711c35..df6bab3feb 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 601f171e52..f96274a3a2 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::().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 2d211db4fb..8aca890fb6 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 @@ def run(command, comment=None, env=None, service=None, tag=None, args=None, data # 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"):