WASI integration tests fail when the test host is macOS
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Start with the named date, tail, and touch tests, checking how their platform conditions and rstest ignore attributes behave under wasi_runner. Then read src/uu/touch/src/platform/wasi.rs and the macOS job in wasi.yml. Done means the listed tests pass on macOS with the WASI runner while the macOS job remains in place.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
The WASI integration tests run only on ubuntu-latest. When the same tests run on macos-latest, 6 tests fail.
CI run with a macOS job: https://github.com/uutils/coreutils/actions/runs/41220415692/job/124593786020?pr=16082
Result: 3485 passed; 6 failed; 405 ignored.
The job uses macos-26-arm64, wasmtime v50.0.1 and wasm32-wasip1 with --cfg wasi_runner.
Failing tests
| Test | Actual output (WASI binary) | Expected by the test |
|---|---|---|
test_date::test_date_format_locale_ampm_markers::case_2_spanish_upper |
PM |
P. M. |
test_date::test_date_format_locale_ampm_markers::case_3_spanish_time |
08:17:48 PM |
08:17:48 p. m. |
test_date::test_date_format_locale_ampm_markers::case_4_british_lower |
pm |
p.m. |
test_date::test_date_format_locale_ampm_markers::case_5_japanese |
PM |
午後 |
test_tail::test_stdin_redirect_dir_when_target_os_is_macos |
tail: Is a directory |
tail: cannot open 'standard input' for reading: No such file or directory |
test_touch::test_touch_set_time_on_unreadable_unwritable_file |
touch: setting times of 'no_rights': Not supported (exit code 1) |
success |
Cause
The test crate runs on the host. The binary under test is the WASI guest.
- date and tail: the tests use
#[cfg(target_vendor = "apple")]. That condition is true for the host, so the tests expect native macOS output. The WASI guest does not see the host locale database. It also reports a directory read asIs a directory. - date: the test has
#[cfg_attr(wasi_runner, ignore = "...")], but cases 2 to 5 still ran. Case 1 did not fail. - touch: the test creates a file with mode
000and callstouch -d ... -c. On a macOS host, wasmtime returnsNot supportedforutimensaton that file. The same test passes on the Linux job. This was reproduced locally on macOS.
Reproduce
Run on a macOS host:
export RUSTFLAGS="--cfg wasi_runner"
cargo build --target wasm32-wasip1 --no-default-features --features feat_wasm
UUTESTS_BINARY_PATH="$(pwd)/target/wasm32-wasip1/debug/coreutils.wasm" \
UUTESTS_WASM_RUNNER=wasmtime \
cargo test --test tests --features nproc -- \
test_date::test_date_format_locale_ampm_markers \
test_tail::test_stdin_redirect_dir_when_target_os_is_macos \
test_touch::test_touch_set_time_on_unreadable_unwritable_file
Proposed fix
- Add
not(wasi_runner)to thetarget_vendor = "apple"conditions in the date and tail tests. - Make sure the
wasi_runnerignore applies to everyrstestcase in the date test. - For touch, either ignore the test on macOS under
wasi_runner, or retryutimensatwithSYMLINK_NOFOLLOWinsrc/uu/touch/src/platform/wasi.rswhen the path is not a symlink. - Keep the macOS job in
wasi.ymlso these differences stay covered.
- Lingua principale
- Rust
- Stelle
- 24.3k
- Fork
- 2.1k
- Merge medio
- 1g 22h
- PR unite (30g)
- 396
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di uutils/coreutils
-
U - od
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
U - pr
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
U - nl
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
U - uniq
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
U - unexpand
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di uutils/coreutils
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
GiganticMinecraft/seichi-portal-backend#1651 ·
I maintainer di solito rispondono entro 1 giorno
-
Android visitors are offered the Linux .deb on cap.so's homepage and download pageForse già presa @patrickballard l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
CapSoftware/Cap#3677 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno