mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-20 21:48:47 +02:00
Tests : scripts d'essai écrits par un sh à part (plus d'ETXTBSY)
tests/engine.rs (redemarre) a échoué en CI sur « Text file busy » : un test écrivait son faux binaire pendant qu'un test voisin, dans un autre thread du même process, lançait un enfant — qui héritait du descripteur d'écriture le temps de son exec, et l'exec du script échouait. Les faux binaires (moteur, serveur de dictée) sont désormais écrits par un sh à part : le process des tests ne tient jamais le fichier ouvert en écriture. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016tcGfJWefW5kUGoC2wL8cv
This commit is contained in:
2 files changed
+25
-11
No files matched your search
@@ -9,10 +9,22 @@ use std::time::Duration;
|
||||
|
||||
/// Faux binaire Go : `serve` lance un « llama-server » dans sa session et un
|
||||
/// « moteur Strata » qui prend SA PROPRE session (comme le vrai), puis attend.
|
||||
///
|
||||
/// Écrit par un `sh` à part : si ce process tenait lui-même le fichier ouvert
|
||||
/// en écriture, un `fork` lancé au même moment par un test voisin (les tests
|
||||
/// tournent en parallèle) en hériterait, et l'`exec` du script échouerait sur
|
||||
/// ETXTBSY (« Text file busy »).
|
||||
fn faux_go(dir: &Path, corps: &str) -> PathBuf {
|
||||
let p = dir.join("faux-loki");
|
||||
std::fs::write(&p, format!("#!/bin/sh\n{corps}\n")).unwrap();
|
||||
std::fs::set_permissions(&p, std::fs::Permissions::from_mode(0o755)).unwrap();
|
||||
let ok = std::process::Command::new("sh")
|
||||
.args(["-c", r#"printf '%s' "$1" > "$2" && chmod 755 "$2""#, "sh"])
|
||||
.arg(format!("#!/bin/sh\n{corps}\n"))
|
||||
.arg(&p)
|
||||
.status()
|
||||
.unwrap()
|
||||
.success();
|
||||
assert!(ok, "faux binaire non écrit");
|
||||
assert!(std::fs::metadata(&p).unwrap().permissions().mode() & 0o111 != 0);
|
||||
p
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user