Files
Loki/rust/loki-rs/tests/parity_tools/git.json
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

191 lines
3.9 KiB
JSON

{
"cwd": "ws",
"memory_dir": "memory/generale",
"files": [
{
"path": "ws/depot/a.txt",
"content": "un\ndeux\ntrois\n",
"age": 30
},
{
"path": "ws/depot/b.txt",
"content": "bêta\n",
"age": 30
},
{
"path": "ws/vide/x.txt",
"content": "x\n",
"age": 30
}
],
"git_setup": [
{
"dir": "ws/depot",
"args": [
"init",
"-q",
"-b",
"main"
]
},
{
"dir": "ws/depot",
"args": [
"add",
"a.txt",
"b.txt"
]
},
{
"dir": "ws/depot",
"args": [
"-c",
"user.name=Loki",
"-c",
"user.email=loki@test",
"commit",
"-q",
"-m",
"départ"
]
},
{
"dir": "ws/vide",
"args": [
"init",
"-q",
"-b",
"main"
]
}
],
"edits": [
{
"path": "ws/depot/a.txt",
"content": "un\n2\ntrois\n",
"age": 10
},
{
"path": "ws/depot/neuf.txt",
"content": "neuf\n",
"age": 10
}
],
"cases": [
{
"name": "statut_ambigu",
"tool": "git_status",
"args": {},
"label": "",
"result": "[erreur] plusieurs dépôts ici (depot, vide) : précise dir"
},
{
"name": "statut",
"tool": "git_status",
"args": {
"dir": "depot"
},
"label": "",
"result": "## main\n M a.txt\n?? neuf.txt"
},
{
"name": "diff",
"tool": "git_diff",
"args": {
"dir": "depot"
},
"label": "",
"result": "diff --git a/a.txt b/a.txt\nindex 3d5dd13..283e2c0 100644\n--- a/a.txt\n+++ b/a.txt\n@@ -1,3 +1,3 @@\n un\n-deux\n+2\n trois"
},
{
"name": "diff_fichier",
"tool": "git_diff",
"args": {
"dir": "depot",
"file": "b.txt"
},
"label": "b.txt",
"result": "(aucune sortie)"
},
{
"name": "diff_sans_commit",
"tool": "git_diff",
"args": {
"dir": "vide"
},
"label": "",
"result": "(aucune sortie)"
},
{
"name": "statut_sans_commit",
"tool": "git_status",
"args": {
"dir": "vide"
},
"label": "",
"result": "## No commits yet on main\n?? x.txt"
},
{
"name": "dossier_sortant",
"tool": "git_status",
"args": {
"dir": "../x"
},
"label": "",
"result": "[erreur] dossier invalide : ../x"
},
{
"name": "dossier_absent",
"tool": "git_status",
"args": {
"dir": "nulle-part"
},
"label": "",
"result": "[erreur] chdir {{ROOT}}/ws/nulle-part: no such file or directory"
},
{
"name": "clone_url_locale",
"tool": "git_clone",
"args": {
"url": "file:///etc"
},
"label": "file:///etc",
"result": "[erreur] URL refusée — seuls https:// et git@hôte: sont acceptés"
},
{
"name": "clone_commande",
"tool": "git_clone",
"args": {
"url": "ext::sh -c id"
},
"label": "ext::sh -c id",
"result": "[erreur] URL refusée — seuls https:// et git@hôte: sont acceptés"
},
{
"name": "clone_existant",
"tool": "git_clone",
"args": {
"url": "https://exemple.invalid/u/depot.git"
},
"label": "https://exemple.invalid/u/depot.git",
"result": "[erreur] le dossier depot existe déjà"
},
{
"name": "clone_dossier_sortant",
"tool": "git_clone",
"args": {
"dir": "../r",
"url": "git@exemple.invalid:u/r"
},
"label": "git@exemple.invalid:u/r",
"result": "[erreur] dossier cible invalide"
}
],
"after": {
"ws/depot/a.txt": "un\n2\ntrois\n",
"ws/depot/b.txt": "bêta\n",
"ws/depot/neuf.txt": "neuf\n",
"ws/vide/x.txt": "x\n"
}
}