59 lines
1.9 KiB
Markdown
Executable File
59 lines
1.9 KiB
Markdown
Executable File
|
|
|
|
### Running Tests
|
|
SQLx uses docker to run many compatible database systems for integration testing. You'll need to [install docker](https://docs.docker.com/engine/) to run the full suite. You can validate your docker installation with:
|
|
|
|
$ docker run hello-world
|
|
|
|
Start the databases with `docker compose` (or `docker-compose`) before running tests:
|
|
|
|
$ docker compose up -d
|
|
|
|
Run clippy for the check matrix:
|
|
|
|
$ ./x.py --clippy
|
|
|
|
This runs only the check/clippy matrix and skips unit and integration tests.
|
|
|
|
For the full test matrix, run all tests against all supported databases using:
|
|
|
|
$ ./x.py
|
|
|
|
### Limiting the Matrix
|
|
|
|
The full matrix (runtimes, TLS backends, and DB versions) is large. Use the filters in `x.py` to keep runs small.
|
|
|
|
List all targets (tags):
|
|
|
|
$ ./x.py --list-targets
|
|
|
|
Run by prefix (uses `tag.startswith`):
|
|
|
|
$ ./x.py --target sqlite_tokio
|
|
$ ./x.py --target postgres_17_tokio
|
|
$ ./x.py --target mysql_8
|
|
$ ./x.py --target mariadb_10_11
|
|
|
|
Note: integration tags do not include TLS, so a target like `postgres_17_tokio`
|
|
still runs all `TLS_VARIANTS`. To limit TLS locally, edit `TLS_VARIANTS` (and
|
|
`CHECK_TLS` for the check phase).
|
|
|
|
Run exactly one target:
|
|
|
|
$ ./x.py --target-exact mysql_8_client_ssl_no_password_tokio
|
|
|
|
Run only one integration test binary:
|
|
|
|
$ ./x.py --test sqlite
|
|
$ ./x.py --test any
|
|
|
|
Pass extra args to cargo:
|
|
|
|
$ ./x.py -- --nocapture
|
|
|
|
To shrink the matrix globally, edit the lists at the top of `tests/x.py`:
|
|
`CHECK_TLS`, `TLS_VARIANTS`, `POSTGRES_VERSIONS`, `MYSQL_VERSIONS`, `MARIADB_VERSIONS`.
|
|
|
|
If you see test failures, or want to run a more specific set of tests against a specific database, you can specify both the features to be tests and the DATABASE_URL. e.g.
|
|
|
|
$ DATABASE_URL=mysql://root:password@127.0.0.1:49183/sqlx cargo test --no-default-features --features macros,offline,any,all-types,mysql,runtime-async-std-native-tls |