mssql: more character encodings and locales #169
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: SQLx | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
jobs: | |
format: | |
name: Format | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- run: cargo fmt --all -- --check | |
check: | |
name: Check | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
runtime: [async-std, tokio, actix] | |
tls: [native-tls, rustls] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
- run: | |
cargo check | |
--manifest-path sqlx-core/Cargo.toml | |
--no-default-features | |
--features offline,all-databases,all-types,migrate,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
- run: | |
cargo check | |
--no-default-features | |
--features offline,all-databases,all-types,migrate,runtime-${{ matrix.runtime }}-${{ matrix.tls }},macros | |
test: | |
name: Unit Test | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
runtime: [ | |
# Disabled because of https://github.com/rust-lang/cargo/issues/12964 | |
# async-std, | |
# actix, | |
tokio | |
] | |
tls: [ | |
# native-tls, | |
rustls | |
] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
- run: | |
cargo test | |
--manifest-path sqlx-core/Cargo.toml | |
--features offline,all-databases,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
cli: | |
name: CLI Binaries | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest] #, macOS-latest] | |
include: | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-musl | |
args: --features openssl-vendored | |
bin: target/debug/cargo-sqlx | |
- os: windows-latest | |
target: x86_64-pc-windows-msvc | |
bin: target/debug/cargo-sqlx.exe | |
# FIXME: macOS build fails because of missing pin-project-internal | |
# - os: macOS-latest | |
# target: x86_64-apple-darwin | |
# bin: target/debug/cargo-sqlx | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
- run: | |
cargo build | |
--manifest-path sqlx-cli/Cargo.toml | |
--bin cargo-sqlx | |
${{ matrix.args }} | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: cargo-sqlx-${{ matrix.target }} | |
path: ${{ matrix.bin }} | |
sqlite: | |
name: SQLite | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
runtime: [async-std, tokio, actix] | |
tls: [native-tls, rustls] | |
needs: check | |
steps: | |
- uses: actions/checkout@v4 | |
- run: mkdir /tmp/sqlite3-lib && wget -O /tmp/sqlite3-lib/ipaddr.so https://github.com/nalgeon/sqlean/releases/download/0.15.2/ipaddr.so | |
- uses: Swatinem/rust-cache@v2 | |
- run: | |
cargo test | |
--no-default-features | |
--features any,macros,migrate,sqlite,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
-- | |
--test-threads=1 | |
env: | |
DATABASE_URL: sqlite://tests/sqlite/sqlite.db | |
RUSTFLAGS: --cfg sqlite_ipaddr | |
LD_LIBRARY_PATH: /tmp/sqlite3-lib | |
postgres: | |
name: Postgres | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
postgres: [14, 10] | |
runtime: [async-std, tokio, actix] | |
tls: [native-tls, rustls] | |
needs: check | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
key: ${{ runner.os }}-postgres-${{ matrix.runtime }}-${{ matrix.tls }} | |
- uses: actions-rs/cargo@v1 | |
env: | |
# FIXME: needed to disable `ltree` tests in Postgres 9.6 | |
# but `PgLTree` should just fall back to text format | |
RUSTFLAGS: --cfg postgres_${{ matrix.postgres }} | |
with: | |
command: build | |
args: > | |
--features postgres,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
- run: | | |
docker compose -f tests/docker-compose.yml run -d -p 5432:5432 --name postgres_${{ matrix.postgres }} postgres_${{ matrix.postgres }} | |
docker exec postgres_${{ matrix.postgres }} bash -c "until pg_isready; do sleep 1; done" | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: > | |
--no-default-features | |
--features any,postgres,macros,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
env: | |
DATABASE_URL: postgres://postgres:password@localhost:5432/sqlx | |
# FIXME: needed to disable `ltree` tests in Postgres 9.6 | |
# but `PgLTree` should just fall back to text format | |
RUSTFLAGS: --cfg postgres_${{ matrix.postgres }} | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: > | |
--no-default-features | |
--features any,postgres,macros,migrate,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
env: | |
DATABASE_URL: postgres://postgres:password@localhost:5432/sqlx?sslmode=verify-ca&sslrootcert=./tests/certs/ca.crt | |
# FIXME: needed to disable `ltree` tests in Postgres 9.6 | |
# but `PgLTree` should just fall back to text format | |
RUSTFLAGS: --cfg postgres_${{ matrix.postgres }} | |
postgres_ssl_client_cert: | |
name: Postgres with SSL client cert | |
runs-on: ubuntu-22.04 | |
needs: check | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
key: linux-postgres-ssl-client-cert | |
- run: docker compose up --wait postgres_16 | |
working-directory: tests | |
- run: cargo test --no-default-features --features any,postgres,macros,all-types,runtime-actix-rustls | |
env: | |
DATABASE_URL: postgres://postgres@localhost:5432/sqlx?sslmode=verify-ca&sslrootcert=./tests/certs/ca.crt&sslcert=./tests/certs/client.crt&sslkey=./tests/keys/client.key | |
mysql: | |
name: MySQL | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
mysql: [8, 5_7] | |
runtime: [async-std, tokio, actix] | |
tls: [native-tls, rustls] | |
needs: check | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
key: ${{ runner.os }}-mysql-${{ matrix.runtime }}-${{ matrix.tls }} | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: > | |
--features mysql,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
- run: docker compose -f tests/docker-compose.yml run -d -p 3306:3306 mysql_${{ matrix.mysql }} | |
- run: sleep 60 | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: > | |
--no-default-features | |
--features any,mysql,macros,migrate,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
env: | |
DATABASE_URL: mysql://root:password@localhost:3306/sqlx?ssl-mode=disabled | |
# MySQL 5.7 supports TLS but not TLSv1.3 as required by RusTLS. | |
- uses: actions-rs/cargo@v1 | |
if: ${{ !(matrix.mysql == '5_7' && matrix.tls == 'rustls') }} | |
with: | |
command: test | |
args: > | |
--no-default-features | |
--features any,mysql,macros,migrate,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
env: | |
DATABASE_URL: mysql://root:password@localhost:3306/sqlx | |
mariadb: | |
name: MariaDB | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
mariadb: [10_6, 10_3] | |
runtime: [async-std, tokio, actix] | |
tls: [native-tls, rustls] | |
needs: check | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
key: ${{ runner.os }}-mysql-${{ matrix.runtime }}-${{ matrix.tls }} | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: > | |
--features mysql,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
- run: docker compose -f tests/docker-compose.yml run -d -p 3306:3306 mariadb_${{ matrix.mariadb }} | |
- run: sleep 30 | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: > | |
--no-default-features | |
--features any,mysql,macros,migrate,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
env: | |
DATABASE_URL: mysql://root:password@localhost:3306/sqlx | |
mssql: | |
name: MSSQL | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
mssql: [2019, 2022] | |
runtime: [async-std, tokio, actix] | |
tls: [native-tls, rustls] | |
needs: check | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
key: ${{ runner.os }}-mssql-${{ matrix.runtime }}-${{ matrix.tls }}-${{ hashFiles('**/Cargo.lock') }} | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: > | |
--features mssql,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
- run: docker compose -f tests/docker-compose.yml run -d -p 1433:1433 mssql_${{ matrix.mssql }} | |
- run: sleep 80 # MSSQL takes a "bit" to startup | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: > | |
--no-default-features | |
--features any,mssql,macros,migrate,all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
env: | |
DATABASE_URL: mssql://sa:Password123!@localhost/sqlx |