redox-wayland-compositor/.gitlab-ci.yml
Votre Nom 8795f39f08 Sprint 0 — industrialisation : CI, tracing, tests xdg-shell, GPLv3
5 livrables d'industrialisation posés avant la phase 13 (client réel).

- .gitlab-ci.yml : pipeline minimal (fmt-check + tests core +
  tests frontend nightly). Pas de cross-compile Redox dans le MVP.
- rustfmt.toml + fmt.sh : config formatter racine + boucle sur les 23
  crates ; fmt sweep appliqué (d'où les diffs cosmétiques).
- tracing dans wayland-frontend : 22 println/eprintln remplacés par
  debug/info/warn/error selon sévérité. Préfixe "[frontend]"
  supprimé (le target tracing le fournit).
- tracing-subscriber dans le compositor : TeeWriter écrit sur
  stdout + /scheme/debug, filtre via RUST_LOG (défaut info).
  DebugSink/dlog supprimés.
- 15 tests unitaires xdg-shell après extraction de 2 helpers libres
  (clamp_to_min_max + should_throttle_configure). Couvre
  compute_resize_geom, contraintes min/max et throttling configure.
- LICENSE (GPLv3 texte officiel FSF) + .editorconfig.

Total tests : 27 → 42 automatisés (compositor-core + frontend).

Leyoda 2026 – GPLv3
2026-05-14 20:46:07 +02:00

71 lines
2.6 KiB
YAML

# Pipeline minimal redox-wayland-compositor.
#
# Le repo n'a pas de Cargo workspace racine (chaque crate dans crates/ est
# autonome — cf README pour la raison). Les jobs ci-dessous compilent et
# testent les crates qui sont indépendantes du target x86_64-unknown-redox
# (host-buildable). Pour valider la cross-compile Redox il faut redoxer +
# le sysroot Redox (~500 Mo) : volontairement laissé hors du MVP CI, à
# activer plus tard via un job `build-redox` avec image custom.
stages:
- lint
- test
# Cache partagé : évite de re-télécharger les deps wayland-rs/tracing/etc.
# à chaque push.
.cargo-cache: &cargo-cache
cache:
key: cargo-shared
paths:
- .cargo/registry/cache/
- .cargo/registry/index/
variables:
CARGO_HOME: $CI_PROJECT_DIR/.cargo
CARGO_TERM_COLOR: always
# Build wayland-rs depuis le clone local. La CI a besoin d'un clone
# frère ../wayland-rs (cf paths relatifs dans les Cargo.toml). On le
# provisionne explicitement dans le before_script de chaque job qui en
# a besoin.
WAYLAND_RS_REV: master
# ---------------------------------------------------------------------------
# Lint : formatage uniforme sur les 23 crates.
# ---------------------------------------------------------------------------
fmt-check:
stage: lint
image: rust:latest
<<: *cargo-cache
script:
- rustup component add rustfmt
- ./fmt.sh --check
# ---------------------------------------------------------------------------
# Tests compositor-core : pure Rust, zéro dep, stable suffit.
# 27 tests unitaires de la logique de composition / Z-order / hit-test.
# ---------------------------------------------------------------------------
test-core:
stage: test
image: rust:latest
<<: *cargo-cache
script:
- cd crates/redox-wl-compositor-core
- cargo test --release
# ---------------------------------------------------------------------------
# Tests wayland-frontend : 15 tests xdg-shell (compute_resize_geom,
# clamp_to_min_max, should_throttle_configure). Nightly requis à cause de
# redox-scheme (deps transitive via redox-wl-input) qui utilise
# #![feature(linked_list_cursors)].
# ---------------------------------------------------------------------------
test-frontend:
stage: test
image: rustlang/rust:nightly
<<: *cargo-cache
before_script:
# wayland-rs est référencé en path relatif (../../../wayland-rs/...).
# Le clone frère doit exister pour que cargo résolve les deps.
- git clone --depth 1 https://github.com/Smithay/wayland-rs.git ../wayland-rs
script:
- cd crates/redox-wl-wayland-frontend
- cargo test --lib