Address clippy warnings and add to gh actions #281
Workflow file for this run
This file contains hidden or 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 | |
| clippy: | |
| name: Clippy | |
| runs-on: ubuntu-22.04 | |
| strategy: | |
| matrix: | |
| runtime: [async-std, tokio] | |
| tls: [native-tls, rustls] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Run clippy for core with all features | |
| run: | | |
| cargo clippy --manifest-path sqlx-core/Cargo.toml \ | |
| --no-default-features \ | |
| --features offline,all-databases,all-types,migrate,runtime-${{ matrix.runtime }}-${{ matrix.tls }} \ | |
| -- -D warnings | |
| env: | |
| RUSTFLAGS: -D warnings | |
| - name: Run clippy for root with all features | |
| run: | | |
| cargo clippy \ | |
| --no-default-features \ | |
| --features offline,all-databases,all-types,migrate,runtime-${{ matrix.runtime }}-${{ matrix.tls }},macros \ | |
| -- -D warnings | |
| env: | |
| RUSTFLAGS: -D warnings | |
| - name: Run clippy for all targets | |
| run: | | |
| cargo clippy \ | |
| --no-default-features \ | |
| --all-targets \ | |
| --features offline,all-databases,migrate,runtime-${{ matrix.runtime }}-${{ matrix.tls }} \ | |
| -- -D warnings | |
| env: | |
| RUSTFLAGS: -D warnings | |
| check: | |
| name: Check | |
| runs-on: ubuntu-22.04 | |
| strategy: | |
| matrix: | |
| runtime: [async-std, tokio] | |
| 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 }} | |
| env: | |
| RUSTFLAGS: -D warnings | |
| - run: | |
| cargo check | |
| --no-default-features | |
| --features offline,all-databases,all-types,migrate,runtime-${{ matrix.runtime }}-${{ matrix.tls }},macros | |
| - run: | |
| cargo check | |
| --no-default-features | |
| --lib --tests | |
| --features offline,all-databases,migrate,runtime-${{ matrix.runtime }}-${{ matrix.tls }} | |
| 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 }} | |
| clippy-per-db: | |
| name: Clippy per Database | |
| runs-on: ubuntu-22.04 | |
| strategy: | |
| matrix: | |
| db: [postgres, mysql, sqlite, mssql] | |
| runtime: [tokio] | |
| tls: [rustls] | |
| needs: clippy | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: Swatinem/rust-cache@v2 | |
| - name: Run clippy for ${{ matrix.db }} | |
| run: | | |
| cargo clippy \ | |
| --no-default-features \ | |
| --features ${{ matrix.db }},all-types,runtime-${{ matrix.runtime }}-${{ matrix.tls }},macros,migrate \ | |
| -- -D warnings | |
| env: | |
| RUSTFLAGS: -D warnings | |
| 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 |