Skip to content

Read full stream to ensure CannotCache statements do not leak if stream is dropped prematurely #480

Read full stream to ensure CannotCache statements do not leak if stream is dropped prematurely

Read full stream to ensure CannotCache statements do not leak if stream is dropped prematurely #480

Workflow file for this run

on:
pull_request:
types: [opened, synchronize, reopened]
push:
branches:
- main
- 0.7.x
- 0.6.x
- 0.5.x
- 0.3.x
- 0.4.x
- 0.2.x
name: CI Tests
# See: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#concurrency.
# This will ensure that only one commit will be running tests at a time on each PR.
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
check_and_test:
name: Check
strategy:
fail-fast: false
matrix:
rust: ["stable"]
backend: ["postgres", "mysql", "sqlite"]
os:
[
ubuntu-latest,
macos-15-intel,
macos-15,
windows-latest,
ubuntu-22.04-arm,
]
include:
- rust: "beta"
backend: "postgres"
os: "ubuntu-latest"
- rust: "beta"
backend: "sqlite"
os: "ubuntu-latest"
- rust: "beta"
backend: "mysql"
os: "ubuntu-latest"
- rust: "nightly"
backend: "postgres"
os: "ubuntu-latest"
- rust: "nightly"
backend: "sqlite"
os: "ubuntu-latest"
- rust: "nightly"
backend: "mysql"
os: "ubuntu-latest"
runs-on: ${{ matrix.os }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Cache cargo registry
uses: Swatinem/rust-cache@v2
with:
key: ${{ runner.os }}-${{ matrix.backend }}-cargo-${{ hashFiles('**/Cargo.toml') }}
- name: Set environment variables
shell: bash
if: matrix.backend == 'mysql'
run: |
echo "RUST_TEST_THREADS=1" >> $GITHUB_ENV
- name: Set environment variables
shell: bash
if: matrix.backend == 'postgres' && matrix.os == 'windows-latest'
run: |
echo "AWS_LC_SYS_NO_ASM=1"
- name: Set environment variables
shell: bash
if: matrix.rust != 'nightly'
run: |
echo "RUSTFLAGS=-D warnings" >> $GITHUB_ENV
echo "RUSTDOCFLAGS=-D warnings" >> $GITHUB_ENV
- uses: ilammy/setup-nasm@v1
if: matrix.backend == 'postgres' && matrix.os == 'windows-latest'
- name: Install postgres (Linux)
if: runner.os == 'Linux' && matrix.backend == 'postgres'
run: |
sudo apt-get update
sudo apt-get install -y postgresql
echo "host all all 127.0.0.1/32 md5" > sudo tee -a /etc/postgresql/10/main/pg_hba.conf
sudo service postgresql restart && sleep 3
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"
sudo service postgresql restart && sleep 3
echo "DATABASE_URL=postgres://postgres:postgres@localhost/" >> $GITHUB_ENV
- name: Install mysql (Linux)
if: runner.os == 'Linux' && matrix.backend == 'mysql'
run: |
sudo systemctl start mysql.service
mysql -e "create database diesel_test; create database diesel_unit_test; grant all on \`diesel_%\`.* to 'root'@'localhost';" -uroot -proot
echo "DATABASE_URL=mysql://root:root@localhost/diesel_test" >> $GITHUB_ENV
- name: Install sqlite (Linux)
if: runner.os == 'Linux' && matrix.backend == 'sqlite'
run: |
sudo apt-get update
sudo apt-get install libsqlite3-dev
echo "DATABASE_URL=:memory:" >> $GITHUB_ENV
- name: Install postgres (MacOS)
if: runner.os == 'macOS' && matrix.backend == 'postgres'
run: |
brew install postgresql@14
brew services restart postgresql@14
sleep 3
createuser -s postgres
echo "DATABASE_URL=postgres://postgres@localhost/" >> $GITHUB_ENV
- name: Install sqlite (MacOS)
if: runner.os == 'macOS' && matrix.backend == 'sqlite'
run: |
brew install sqlite
echo "DATABASE_URL=:memory:" >> $GITHUB_ENV
- name: Install mysql (MacOS Intel)
if: matrix.os == 'macos-15-intel' && matrix.backend == 'mysql'
run: |
brew install [email protected]
/usr/local/opt/[email protected]/bin/mysql_install_db
/usr/local/opt/[email protected]/bin/mysql.server start
sleep 3
/usr/local/opt/[email protected]/bin/mysqladmin -u runner password diesel
/usr/local/opt/[email protected]/bin/mysql -e "create database diesel_test; create database diesel_unit_test; grant all on \`diesel_%\`.* to 'runner'@'localhost';" -urunner
echo "DATABASE_URL=mysql://runner:diesel@localhost/diesel_test" >> $GITHUB_ENV
- name: Install mysql (MacOS M1)
if: matrix.os == 'macos-15' && matrix.backend == 'mysql'
run: |
brew install [email protected]
ls /opt/homebrew/opt/[email protected]
/opt/homebrew/opt/[email protected]/bin/mysql_install_db
/opt/homebrew/opt/[email protected]/bin/mysql.server start
sleep 3
/opt/homebrew/opt/[email protected]/bin/mysqladmin -u runner password diesel
/opt/homebrew/opt/[email protected]/bin/mysql -e "create database diesel_test; create database diesel_unit_test; grant all on \`diesel_%\`.* to 'runner'@'localhost';" -urunner
echo "DATABASE_URL=mysql://runner:diesel@localhost/diesel_test" >> $GITHUB_ENV
- name: Install postgres (Windows)
if: runner.os == 'Windows' && matrix.backend == 'postgres'
shell: bash
run: |
choco install postgresql15 --force --params '/Password:root'
echo "DATABASE_URL=postgres://postgres:root@localhost/" >> $GITHUB_ENV
- name: Install mysql (Windows)
if: runner.os == 'Windows' && matrix.backend == 'mysql'
shell: cmd
run: |
choco install mysql
"C:\tools\mysql\current\bin\mysql" -e "create database diesel_test; create database diesel_unit_test; grant all on `diesel_%`.* to 'root'@'localhost';" -uroot
- name: Set variables for mysql (Windows)
if: runner.os == 'Windows' && matrix.backend == 'mysql'
shell: bash
run: |
echo "DATABASE_URL=mysql://root@localhost/diesel_test" >> $GITHUB_ENV
- name: Install sqlite (Windows)
if: runner.os == 'Windows' && matrix.backend == 'sqlite'
shell: cmd
run: |
choco install sqlite
cd /D C:\ProgramData\chocolatey\lib\SQLite\tools
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
lib /machine:x64 /def:sqlite3.def /out:sqlite3.lib
- name: Set variables for sqlite (Windows)
if: runner.os == 'Windows' && matrix.backend == 'sqlite'
shell: bash
run: |
echo "C:\ProgramData\chocolatey\lib\SQLite\tools" >> $GITHUB_PATH
echo "SQLITE3_LIB_DIR=C:\ProgramData\chocolatey\lib\SQLite\tools" >> $GITHUB_ENV
echo "DATABASE_URL=:memory:" >> $GITHUB_ENV
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- name: Rust version check
run: cargo +${{ matrix.rust }} version
- name: Test diesel_async
run: cargo +${{ matrix.rust }} test --manifest-path Cargo.toml --no-default-features --features "${{ matrix.backend }} deadpool bb8 mobc async-connection-wrapper migrations"
- name: Run examples (Postgres)
if: matrix.backend == 'postgres'
run: |
cargo +${{ matrix.rust }} check --manifest-path examples/postgres/pooled-with-rustls/Cargo.toml
cargo +${{ matrix.rust }} check --manifest-path examples/postgres/run-pending-migrations-with-rustls/Cargo.toml
- name: Run examples (Sqlite)
if: matrix.backend == 'sqlite'
run: |
cargo +${{ matrix.rust }} check --manifest-path examples/sync-wrapper/Cargo.toml
rustfmt_and_clippy:
name: Check rustfmt style && run clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt
- name: Cache cargo registry
uses: Swatinem/rust-cache@v2
with:
key: clippy-cargo-${{ hashFiles('**/Cargo.toml') }}
- name: Remove potential newer clippy.toml from dependencies
run: |
cargo update
cargo fetch
find ~/.cargo/registry -iname "*clippy.toml" -delete
- name: Run clippy
run: cargo +stable clippy --all --all-features
- name: Check formating
run: cargo +stable fmt --all -- --check
minimal_rust_version:
name: Check Minimal supported rust version (1.86.0)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/[email protected]
- uses: dtolnay/rust-toolchain@nightly
- uses: taiki-e/install-action@cargo-hack
- uses: taiki-e/install-action@cargo-minimal-versions
- name: Check diesel-async
# cannot test mysql yet as that crate
# has broken min-version dependencies
# cannot test sqlite yet as that crate
# as broken min-version dependencies as well
run: cargo +1.86.0 minimal-versions check -p diesel-async --features "postgres bb8 deadpool mobc"
all_features_build:
name: Check all feature combination build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@cargo-hack
- name: Check feature combinations
run: cargo hack check --feature-powerset --no-dev-deps --depth 2