455 lines
10 KiB
YAML
455 lines
10 KiB
YAML
name: Rust tests
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches: [main]
|
|
types:
|
|
- opened
|
|
- reopened
|
|
- synchronize
|
|
- ready_for_review
|
|
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
|
|
jobs:
|
|
cancel-others:
|
|
if: github.event_name == 'pull_request'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Cancel Previous Runs
|
|
uses: styfle/cancel-workflow-action@0.9.1
|
|
with:
|
|
access_token: ${{ github.token }}
|
|
|
|
xtask:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Check xtask cache
|
|
uses: actions/cache@v3
|
|
id: xtask-cache
|
|
with:
|
|
path: target/debug/xtask
|
|
key: xtask-${{ hashFiles('xtask/**') }}
|
|
|
|
- name: Install rust stable toolchain
|
|
if: steps.xtask-cache.outputs.cache-hit != 'true'
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: stable
|
|
override: true
|
|
|
|
- name: Build
|
|
if: steps.xtask-cache.outputs.cache-hit != 'true'
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: build
|
|
args: -p xtask
|
|
|
|
test-matrix-sdk-features:
|
|
name: 🐧 [m], ${{ matrix.name }}
|
|
needs: xtask
|
|
if: github.event_name == 'push' || !github.event.pull_request.draft
|
|
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: true
|
|
matrix:
|
|
name:
|
|
- no-encryption
|
|
- no-sled
|
|
- no-encryption-and-sled
|
|
- sled-cryptostore
|
|
- rustls-tls
|
|
- markdown
|
|
- socks
|
|
- sso-login
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v1
|
|
|
|
- name: Install Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Load cache
|
|
uses: Swatinem/rust-cache@v1
|
|
|
|
- name: Install nextest
|
|
uses: taiki-e/install-action@nextest
|
|
|
|
- name: Get xtask
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: target/debug/xtask
|
|
key: xtask-${{ hashFiles('xtask/**') }}
|
|
|
|
- name: Test
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: run
|
|
args: -p xtask -- ci test-features ${{ matrix.name }}
|
|
|
|
test-matrix-sdk-examples:
|
|
name: 🐧 [m]-examples
|
|
needs: xtask
|
|
runs-on: ubuntu-latest
|
|
if: github.event_name == 'push' || !github.event.pull_request.draft
|
|
|
|
steps:
|
|
- name: Checkout the repo
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Load cache
|
|
uses: Swatinem/rust-cache@v1
|
|
|
|
- name: Install nextest
|
|
uses: taiki-e/install-action@nextest
|
|
|
|
- name: Get xtask
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: target/debug/xtask
|
|
key: xtask-${{ hashFiles('xtask/**') }}
|
|
|
|
- name: Test
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: run
|
|
args: -p xtask -- ci examples
|
|
|
|
test-matrix-sdk-crypto:
|
|
name: 🐧 [m]-crypto
|
|
needs: xtask
|
|
runs-on: ubuntu-latest
|
|
if: github.event_name == 'push' || !github.event.pull_request.draft
|
|
|
|
steps:
|
|
- name: Checkout the repo
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Load cache
|
|
uses: Swatinem/rust-cache@v1
|
|
|
|
- name: Install nextest
|
|
uses: taiki-e/install-action@nextest
|
|
|
|
- name: Get xtask
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: target/debug/xtask
|
|
key: xtask-${{ hashFiles('xtask/**') }}
|
|
|
|
- name: Test
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: run
|
|
args: -p xtask -- ci test-crypto
|
|
|
|
test-all-crates:
|
|
name: ${{ matrix.name }}
|
|
if: github.event_name == 'push' || !github.event.pull_request.draft
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: true
|
|
matrix:
|
|
include:
|
|
- name: 🐧 all crates, 🦀 stable
|
|
rust: stable
|
|
os: ubuntu-latest
|
|
|
|
- name: 🐧 all crates, 🦀 beta
|
|
rust: beta
|
|
os: ubuntu-latest
|
|
|
|
- name: 🍏 all crates, 🦀 stable
|
|
rust: stable
|
|
os: macos-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v1
|
|
|
|
- name: Install Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: ${{ matrix.rust }}
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Load cache
|
|
uses: Swatinem/rust-cache@v1
|
|
|
|
- name: Install nextest
|
|
uses: taiki-e/install-action@nextest
|
|
|
|
- name: Test
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: nextest
|
|
args: run --workspace --exclude matrix-sdk-integration-testing
|
|
|
|
- name: Test documentation
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: test
|
|
args: --doc
|
|
|
|
test-wasm:
|
|
name: 🕸️ ${{ matrix.name }}
|
|
needs: xtask
|
|
if: github.event_name == 'push' || !github.event.pull_request.draft
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
fail-fast: true
|
|
matrix:
|
|
include:
|
|
- name: '[m]-qrcode'
|
|
cmd: matrix-sdk-qrcode
|
|
|
|
- name: '[m]-base'
|
|
cmd: matrix-sdk-base
|
|
|
|
- name: '[m]-common'
|
|
cmd: matrix-sdk-common
|
|
|
|
- name: '[m]-indexeddb, no crypto'
|
|
cmd: indexeddb-no-crypto
|
|
|
|
- name: '[m]-indexeddb, with crypto'
|
|
cmd: indexeddb-with-crypto
|
|
|
|
- name: '[m], no-default, wasm-flags'
|
|
cmd: matrix-sdk-no-default
|
|
|
|
- name: '[m], indexeddb stores'
|
|
cmd: matrix-sdk-indexeddb-stores
|
|
|
|
- name: '[m], indexeddb stores, no crypto'
|
|
cmd: matrix-sdk-indexeddb-stores-no-crypto
|
|
|
|
- name: '[m], wasm-example'
|
|
cmd: matrix-sdk-command-bot
|
|
|
|
steps:
|
|
- name: Checkout the repo
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
target: wasm32-unknown-unknown
|
|
components: clippy
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Install wasm-pack
|
|
uses: jetli/wasm-pack-action@v0.3.0
|
|
with:
|
|
version: latest
|
|
|
|
- name: Load cache
|
|
uses: Swatinem/rust-cache@v1
|
|
|
|
- name: Install nextest
|
|
uses: taiki-e/install-action@nextest
|
|
|
|
- name: Get xtask
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: target/debug/xtask
|
|
key: xtask-${{ hashFiles('xtask/**') }}
|
|
|
|
- name: Rust Check
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: run
|
|
args: -p xtask -- ci wasm ${{ matrix.cmd }}
|
|
|
|
- name: Wasm-Pack test
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: run
|
|
args: -p xtask -- ci wasm-pack ${{ matrix.cmd }}
|
|
|
|
test-appservice:
|
|
name: ${{ matrix.os-name }} [m]-appservice
|
|
needs: xtask
|
|
if: github.event_name == 'push' || !github.event.pull_request.draft
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: true
|
|
matrix:
|
|
include:
|
|
- os: ubuntu-latest
|
|
os-name: 🐧
|
|
|
|
- os: macos-latest
|
|
os-name: 🍏
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v1
|
|
|
|
- name: Install Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Load cache
|
|
uses: Swatinem/rust-cache@v1
|
|
|
|
- name: Install nextest
|
|
uses: taiki-e/install-action@nextest
|
|
|
|
- name: Get xtask
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: target/debug/xtask
|
|
key: xtask-${{ hashFiles('xtask/**') }}
|
|
|
|
- name: Run checks
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: run
|
|
args: -p xtask -- ci test-appservice
|
|
|
|
formatting:
|
|
name: Check Formatting
|
|
runs-on: ubuntu-latest
|
|
if: github.event_name == 'push' || !github.event.pull_request.draft
|
|
|
|
steps:
|
|
- name: Checkout the repo
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: nightly
|
|
components: rustfmt
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Cargo fmt
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: fmt
|
|
args: -- --check
|
|
|
|
typos:
|
|
name: Spell Check with Typos
|
|
runs-on: ubuntu-latest
|
|
if: github.event_name == 'push' || !github.event.pull_request.draft
|
|
|
|
steps:
|
|
- name: Checkout Actions Repository
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Check the spelling of the files in our repo
|
|
uses: crate-ci/typos@master
|
|
|
|
clippy:
|
|
name: Run clippy
|
|
needs: xtask
|
|
runs-on: ubuntu-latest
|
|
if: github.event_name == 'push' || !github.event.pull_request.draft
|
|
|
|
steps:
|
|
- name: Checkout the repo
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: nightly
|
|
components: clippy
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Load cache
|
|
uses: Swatinem/rust-cache@v1
|
|
|
|
- name: Get xtask
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: target/debug/xtask
|
|
key: xtask-${{ hashFiles('xtask/**') }}
|
|
|
|
- name: Clippy
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: run
|
|
args: -p xtask -- ci clippy
|
|
|
|
integration-tests:
|
|
name: Integration test
|
|
if: github.event_name == 'push' || !github.event.pull_request.draft
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout the repo
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Load cache
|
|
uses: Swatinem/rust-cache@v1
|
|
|
|
- name: Install nextest
|
|
uses: taiki-e/install-action@nextest
|
|
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: 3.8
|
|
|
|
- uses: michaelkaye/setup-matrix-synapse@main
|
|
with:
|
|
uploadLogs: true
|
|
httpPort: 8228
|
|
disableRateLimiting: true
|
|
|
|
- name: Test
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: nextest
|
|
args: run -p matrix-sdk-integration-testing
|