Tests : faux outils écrits par un sh à part (ETXTBSY)

plan_par_machine (lot 41) a vu « cpu » au lieu de « cuda » en CI : le faux
nvidia-smi, écrit par le process des tests puis lancé aussitôt, peut être
encore ouvert en écriture dans le fils qu'un test voisin vient de forker ;
son exec échoue alors sur ETXTBSY et l'outil paraît absent. Les scripts des
tests de la compilation et le faux Chrome (lot 44, lancé à côté des tests
parallèles de tests/lot6.rs) sont désormais écrits par un sh à part, comme
les autres faux binaires du dépôt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016tcGfJWefW5kUGoC2wL8cv
This commit is contained in:
Claude committed 2026-10-16 07:26:36 +00:00
1 parent e8563d992c
commit cbbe62ff97
2 files changed
+32 -11

No files matched your search

+10 -3
View File
@@ -32,9 +32,16 @@ exec sleep 600
"#,
args.display()
);
std::fs::write(&p, script).unwrap();
use std::os::unix::fs::PermissionsExt as _;
std::fs::set_permissions(&p, std::fs::Permissions::from_mode(0o755)).unwrap();
// Écrit par un `sh` à part : un `fork` d'un test voisin hériterait sinon
// du fichier ouvert en écriture, et son `exec` échouerait sur ETXTBSY.
let ok = std::process::Command::new("sh")
.args(["-c", r#"printf '%s' "$1" > "$2" && chmod 755 "$2""#, "sh"])
.arg(script)
.arg(&p)
.status()
.unwrap()
.success();
assert!(ok, "faux Chrome non écrit");
p
}