ebox/.github/workflows/ci.yml
Kinneyzhang fad54d7fb1 feat(ebox): project layouts into TP surface plans
Assign retained TP identity before layout and emit pure, runtime-free surface plans with exact character and text-property equivalence. Keep live publication unchanged for the staged cutover and add focused surface, package, docs, and CI contracts.\n\nVerified: make check EMACS=/Applications/Emacs.app/Contents/MacOS/Emacs\nVerified: WERROR byte compilation for all 16 active Lisp files\nVerified: focused ebox-surface checkdoc has zero warnings
2026-08-06 04:13:13 +08:00

94 lines
2.8 KiB
YAML

name: CI
on:
push:
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Check out TP runtime dependency
run: git clone --depth 1 https://github.com/Kinneyzhang/tp.git ../tp
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y emacs-nox python3
- name: Run local verification suite
run: make ci EMACS=emacs PYTHON=python3
- name: Run package-lint
run: make package-lint-install EMACS=emacs
native-build:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Install Rust verification toolchain
run: rustup toolchain install stable --profile minimal --component rustfmt,clippy
- name: Check native formatting
run: cargo +stable fmt --manifest-path native/Cargo.toml -- --check
- name: Lint native targets
run: cargo +stable clippy --locked --manifest-path native/Cargo.toml --all-targets -- -D warnings
- name: Test native runtime
run: cargo +stable test --locked --manifest-path native/Cargo.toml
- name: Build native module
run: cargo +stable build --locked --manifest-path native/Cargo.toml --release
- name: Verify platform module artifact
shell: bash
run: |
case "$RUNNER_OS" in
Linux) test -f native/target/release/libebox_native_reflow.so ;;
macOS) test -f native/target/release/libebox_native_reflow.dylib ;;
Windows) test -f native/target/release/ebox_native_reflow.dll ;;
*) exit 1 ;;
esac
native-msrv:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Install Rust minimum supported toolchain
run: rustup toolchain install 1.82.0 --profile minimal
- name: Test native runtime at MSRV
run: cargo +1.82.0 test --locked --manifest-path native/Cargo.toml
- name: Build native module at MSRV
run: cargo +1.82.0 build --locked --manifest-path native/Cargo.toml --release
- name: Verify MSRV platform module artifact
shell: bash
run: |
case "$RUNNER_OS" in
Linux) test -f native/target/release/libebox_native_reflow.so ;;
macOS) test -f native/target/release/libebox_native_reflow.dylib ;;
Windows) test -f native/target/release/ebox_native_reflow.dll ;;
*) exit 1 ;;
esac