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: 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@v1.13.0 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