fix(ci): arreglar los trabajos de macOS y Windows - #1
Merged
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 testsalía con 101El test
la_lista_de_la_ui_sale_de_la_tabla_de_modelosllamaba aMainWindow::new(). En Linux headless eso devuelveErr, elif let Okse 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 decargo testejecuta cada prueba en un hilo aparte, así que winit aborta con «on macOS,EventLoopmust be created on the main thread!».Una prueba unitaria no debe abrir una ventana. Lo que se quería proteger es que
ui/main.slintno vuelva a llevar la lista de modelos escrita a mano, y eso se comprueba leyendo el propio.slintconinclude_str!: igual en las tres plataformas, sin sesión gráfica y sin falsos verdes. Comprobado con mutación: si se rellenamodel-listen el.slint, el test falla (el anterior no lo detectaba).Windows —
cargo clippy -- -D warningssalía con 1 ---------------------------------------------------DESKTOP_ENTRYse declaraba sin condición, pero su único uso está detrás de#[cfg(all(unix, not(target_os = "macos")))]: la pistadesktop-entryes de la especificación XDG. En Windows y en macOS quedaba declarada y sin usar,dead_codela señalaba y con-D warningseso es un error. Se le pone a la constante el mismocfgque a su uso. Esto también habría roto el clippy de macOS, que no llegaba a ejecutarse.Extra
actions/checkoutyactions/upload-artifacta@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 eldead_code); y clippy + test con loscfgde macOS simulados.