Files
Loki/rust/loki-rs/tests/tools_git.rs
T
Claude f11f667a4c Lot 7 : outils git exécutés par la façade
git_status, git_diff et git_clone (rust/loki-rs/src/tools/git.rs) quand la
façade tient la conversation : dépôt deviné comme le Go (sous-dossier
demandé, racine, unique sous-dossier dépôt), sorties mêlées et bornées,
jamais d'invite, clone limité à https:// et git@hôte: et rangé dans le
dossier de la discussion. Toujours sur cette machine, cible distante ou
non, comme le Go.

Parité : TestPariteOutilsGit (deux dépôts, l'un modifié, l'autre sans
commit ; aucun appel réseau) range tests/parity_tools/git.json ;
tests/tools_git.rs le retrouve à l'identique. Le rejeu des journaux des
outils est partagé (tests/common/toolsfx.rs).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016tcGfJWefW5kUGoC2wL8cv
2026-10-15 12:19:07 +00:00

34 lines
1004 B
Rust

//! Parité des outils git avec le Go (lot 7) : `tests/parity_tools/git.json`
//! (`TestPariteOutilsGit`), rejoué dans `tools::exec_local`. Binaire à part :
//! la configuration de git de la machine est écartée par des variables
//! d'environnement, posées avant tout autre fil.
mod common;
#[tokio::test]
async fn outils_git_comme_le_go() {
if std::process::Command::new("git")
.arg("--version")
.output()
.is_err()
{
eprintln!("git absent : test sauté");
return;
}
// SAFETY : seul test de ce binaire, rien d'autre ne lit l'environnement.
unsafe {
std::env::set_var(
"GIT_CONFIG_GLOBAL",
if cfg!(windows) { "NUL" } else { "/dev/null" },
);
std::env::set_var("GIT_CONFIG_NOSYSTEM", "1");
}
let diffs = common::toolsfx::replay("git").await;
assert!(
diffs.is_empty(),
"{} écart(s) avec le Go :\n\n{}",
diffs.len(),
diffs.join("\n\n")
);
}