Files
zellij/.github/workflows/rust.yml
Aram Drevekenin c7c4ce42b8 Allow renaming sessions from session mode (#5754)
* feat: allow renaming sessions from session mode

* rustfmt

* fix tests

* manually download protoc

* add pr
2026-10-22 18:11:26 +02:00

296 lines
8.3 KiB
YAML

name: Rust
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
jobs:
build:
name: Build
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Install Protoc
shell: bash
run: |
case "${{ runner.os }}" in
Linux) asset=protoc-23.4-linux-x86_64.zip ;;
macOS) asset=protoc-23.4-osx-universal_binary.zip ;;
Windows) asset=protoc-23.4-win64.zip ;;
esac
curl -sSfL -o "$RUNNER_TEMP/protoc.zip" "https://github.com/protocolbuffers/protobuf/releases/download/v23.4/$asset"
unzip -q -o "$RUNNER_TEMP/protoc.zip" -d "$RUNNER_TEMP/protoc"
echo "$RUNNER_TEMP/protoc/bin" >> "$GITHUB_PATH"
- name: Setup toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
rustflags: ""
- name: Build
run: cargo xtask build
build-windows:
name: Build (Windows)
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Install Protoc
shell: bash
run: |
case "${{ runner.os }}" in
Linux) asset=protoc-23.4-linux-x86_64.zip ;;
macOS) asset=protoc-23.4-osx-universal_binary.zip ;;
Windows) asset=protoc-23.4-win64.zip ;;
esac
curl -sSfL -o "$RUNNER_TEMP/protoc.zip" "https://github.com/protocolbuffers/protobuf/releases/download/v23.4/$asset"
unzip -q -o "$RUNNER_TEMP/protoc.zip" -d "$RUNNER_TEMP/protoc"
echo "$RUNNER_TEMP/protoc/bin" >> "$GITHUB_PATH"
- name: Setup toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
target: wasm32-wasip1
rustflags: ""
- name: Install NASM
uses: ilammy/setup-nasm@v1
- name: Build
run: cargo xtask build
test:
name: Test
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Install Protoc
shell: bash
run: |
case "${{ runner.os }}" in
Linux) asset=protoc-23.4-linux-x86_64.zip ;;
macOS) asset=protoc-23.4-osx-universal_binary.zip ;;
Windows) asset=protoc-23.4-win64.zip ;;
esac
curl -sSfL -o "$RUNNER_TEMP/protoc.zip" "https://github.com/protocolbuffers/protobuf/releases/download/v23.4/$asset"
unzip -q -o "$RUNNER_TEMP/protoc.zip" -d "$RUNNER_TEMP/protoc"
echo "$RUNNER_TEMP/protoc/bin" >> "$GITHUB_PATH"
- name: Setup toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
rustflags: ""
- name: Test
run: cargo xtask test
test-windows:
name: Test (Windows)
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Install Protoc
shell: bash
run: |
case "${{ runner.os }}" in
Linux) asset=protoc-23.4-linux-x86_64.zip ;;
macOS) asset=protoc-23.4-osx-universal_binary.zip ;;
Windows) asset=protoc-23.4-win64.zip ;;
esac
curl -sSfL -o "$RUNNER_TEMP/protoc.zip" "https://github.com/protocolbuffers/protobuf/releases/download/v23.4/$asset"
unzip -q -o "$RUNNER_TEMP/protoc.zip" -d "$RUNNER_TEMP/protoc"
echo "$RUNNER_TEMP/protoc/bin" >> "$GITHUB_PATH"
- name: Setup toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
rustflags: ""
- name: Test zellij-utils
run: cargo test --no-default-features -p zellij-utils --lib
- name: Test zellij-server
run: cargo test --no-default-features -p zellij-server --lib
- name: Test zellij-client
run: cargo test --no-default-features -p zellij-client --lib
integration-test:
name: Integration Test
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Install Protoc
shell: bash
run: |
case "${{ runner.os }}" in
Linux) asset=protoc-23.4-linux-x86_64.zip ;;
macOS) asset=protoc-23.4-osx-universal_binary.zip ;;
Windows) asset=protoc-23.4-win64.zip ;;
esac
curl -sSfL -o "$RUNNER_TEMP/protoc.zip" "https://github.com/protocolbuffers/protobuf/releases/download/v23.4/$asset"
unzip -q -o "$RUNNER_TEMP/protoc.zip" -d "$RUNNER_TEMP/protoc"
echo "$RUNNER_TEMP/protoc/bin" >> "$GITHUB_PATH"
- name: Setup toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
rustflags: ""
- name: Install cargo-nextest
uses: taiki-e/install-action@v2
with:
tool: cargo-nextest
- name: Run whole-app integration tests
run: cargo xtask integration-test -- -E 'not binary(desktop_app)'
desktop-app-smoke-test:
name: Desktop App Smoke Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Protoc
shell: bash
run: |
case "${{ runner.os }}" in
Linux) asset=protoc-23.4-linux-x86_64.zip ;;
macOS) asset=protoc-23.4-osx-universal_binary.zip ;;
Windows) asset=protoc-23.4-win64.zip ;;
esac
curl -sSfL -o "$RUNNER_TEMP/protoc.zip" "https://github.com/protocolbuffers/protobuf/releases/download/v23.4/$asset"
unzip -q -o "$RUNNER_TEMP/protoc.zip" -d "$RUNNER_TEMP/protoc"
echo "$RUNNER_TEMP/protoc/bin" >> "$GITHUB_PATH"
- name: Install a virtual display and software rendering
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends xvfb libxkbcommon-x11-0 libegl1 libgl1-mesa-dri
- name: Setup toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
rustflags: ""
- name: Install cargo-nextest
uses: taiki-e/install-action@v2
with:
tool: cargo-nextest
- name: Run the desktop app tests under Xvfb
env:
ZELLIJ_REQUIRE_DESKTOP_TESTS: "1"
run: cargo xtask integration-test -- --test desktop_app
test-no-web:
name: Test (No Web)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Protoc
shell: bash
run: |
case "${{ runner.os }}" in
Linux) asset=protoc-23.4-linux-x86_64.zip ;;
macOS) asset=protoc-23.4-osx-universal_binary.zip ;;
Windows) asset=protoc-23.4-win64.zip ;;
esac
curl -sSfL -o "$RUNNER_TEMP/protoc.zip" "https://github.com/protocolbuffers/protobuf/releases/download/v23.4/$asset"
unzip -q -o "$RUNNER_TEMP/protoc.zip" -d "$RUNNER_TEMP/protoc"
echo "$RUNNER_TEMP/protoc/bin" >> "$GITHUB_PATH"
- name: Setup toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
rustflags: ""
- name: Test without web support
run: cargo xtask test --no-web
assets:
name: Check Bundled Assets
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
rustflags: ""
- name: Test xtask
run: cargo test -p xtask
- name: Check bundled assets
run: cargo xtask assets --check
desktop-files:
name: Validate Desktop Files
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install validators
run: sudo apt-get update && sudo apt-get install -y --no-install-recommends appstream desktop-file-utils
- name: Validate the software-centre listing
run: appstreamcli validate --no-net assets/dev.zellij.Zellij.metainfo.xml
- name: Validate the launcher
run: desktop-file-validate assets/dev.zellij.Zellij.desktop
format:
name: Check Formatting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
rustflags: ""
- name: Check Format
run: cargo xtask format --check