Skip to content

fix(ci): arreglar los trabajos de macOS y Windows - #1

Merged
AcidClawX41 merged 1 commit into
mainfrom
fix/ci-macos-windows
Aug 31, 2026
Merged

AcidClawX41 merged 1 commit into
mainfrom
fix/ci-macos-windows

Conversation

@AcidClawX41

Copy link
Copy Markdown
Owner

Dos fallos distintos, los dos específicos de plataforma. En Linux todo pasaba, así que no se veían ni en local ni en el runner de Ubuntu.

macOS — cargo test salía con 101

El test la_lista_de_la_ui_sale_de_la_tabla_de_modelos llamaba a MainWindow::new(). En Linux headless eso devuelve Err, el if let Ok se saltaba el cuerpo y el test pasaba sin comprobar nada: un falso verde. En macOS no devuelve error, entra en pánico: AppKit exige que el bucle de eventos se cree en el hilo principal y el arnés de cargo test ejecuta cada prueba en un hilo aparte, así que winit aborta con «on macOS, EventLoop must be created on the main thread!».

Una prueba unitaria no debe abrir una ventana. Lo que se quería proteger es que ui/main.slint no vuelva a llevar la lista de modelos escrita a mano, y eso se comprueba leyendo el propio .slint con include_str!: igual en las tres plataformas, sin sesión gráfica y sin falsos verdes. Comprobado con mutación: si se rellena model-list en el .slint, el test falla (el anterior no lo detectaba).

Windows — cargo clippy -- -D warnings salía con 1 --------------------------------------------------- DESKTOP_ENTRY se declaraba sin condición, pero su único uso está detrás de #[cfg(all(unix, not(target_os = "macos")))]: la pista desktop-entry es de la especificación XDG. En Windows y en macOS quedaba declarada y sin usar, dead_code la señalaba y con -D warnings eso es un error. Se le pone a la constante el mismo cfg que a su uso. Esto también habría roto el clippy de macOS, que no llegaba a ejecutarse.

Extra

actions/checkout y actions/upload-artifact a @v5: las v4 corren sobre Node 20, deprecado y ya forzado a Node 24 por el runner. Era el otro aviso anotado en cada ejecución.

Verificado con Rust 1.95.0: build, test (78/78) y clippy en Linux; clippy con --target x86_64-pc-windows-gnu (que antes reproducía el dead_code); y clippy + test con los cfg de macOS simulados.

Dos fallos distintos, los dos específicos de plataforma. En Linux todo
pasaba, así que no se veían ni en local ni en el runner de Ubuntu.

macOS — `cargo test` salía con 101
---------------------------------
El test `la_lista_de_la_ui_sale_de_la_tabla_de_modelos` llamaba a
`MainWindow::new()`. En Linux headless eso devuelve `Err`, el `if let Ok`
se saltaba el cuerpo y el test pasaba sin comprobar nada: un falso verde.
En macOS no devuelve error, entra en pánico: AppKit exige que el bucle de
eventos se cree en el hilo principal y el arnés de `cargo test` ejecuta
cada prueba en un hilo aparte, así que winit aborta con «on macOS,
`EventLoop` must be created on the main thread!».

Una prueba unitaria no debe abrir una ventana. Lo que se quería proteger
es que `ui/main.slint` no vuelva a llevar la lista de modelos escrita a
mano, y eso se comprueba leyendo el propio `.slint` con `include_str!`:
igual en las tres plataformas, sin sesión gráfica y sin falsos verdes.
Comprobado con mutación: si se rellena `model-list` en el `.slint`, el
test falla (el anterior no lo detectaba).

Windows — `cargo clippy -- -D warnings` salía con 1
---------------------------------------------------
`DESKTOP_ENTRY` se declaraba sin condición, pero su único uso está detrás
de `#[cfg(all(unix, not(target_os = "macos")))]`: la pista `desktop-entry`
es de la especificación XDG. En Windows y en macOS quedaba declarada y sin
usar, `dead_code` la señalaba y con `-D warnings` eso es un error. Se le
pone a la constante el mismo `cfg` que a su uso. Esto también habría roto
el clippy de macOS, que no llegaba a ejecutarse.

Extra
-----
`actions/checkout` y `actions/upload-artifact` a `@v5`: las v4 corren sobre
Node 20, deprecado y ya forzado a Node 24 por el runner. Era el otro aviso
anotado en cada ejecución.

Verificado con Rust 1.95.0: build, test (78/78) y clippy en Linux; clippy
con `--target x86_64-pc-windows-gnu` (que antes reproducía el `dead_code`);
y clippy + test con los `cfg` de macOS simulados.
@AcidClawX41
AcidClawX41 merged commit 6464cf4 into main Aug 31, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant