mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-11 17:26:57 +02:00
- Les barres de progression qui se redessinent avec \r (téléchargement du modèle par l'installeur de Strata) n'apparaissaient jamais : le journal ne découpait que sur \n et restait figé pendant tout le téléchargement. Une version toutes les 10 s est montrée ; \r\n reste une fin de ligne. - Le suivi du job relançait une requête chaque seconde sans attendre la précédente : quand le serveur était occupé, deux réponses ajoutaient les mêmes lignes au journal. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
30 lines
967 B
Go
30 lines
967 B
Go
package loki
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
// Une barre de progression (\r sans \n) doit apparaître dans le journal, sans
|
|
// le noyer ; \r\n reste une fin de ligne ordinaire, même coupé entre deux écritures.
|
|
func TestSinkWriterProgression(t *testing.T) {
|
|
var got []string
|
|
setBuildSink(func(l string) { got = append(got, l) })
|
|
defer setBuildSink(nil)
|
|
|
|
s := &sinkWriter{}
|
|
s.Write([]byte("Step 5\r"))
|
|
s.Write([]byte("\n modèle : 1 / 76 GB\r modèle : 2 / 76 GB\r"))
|
|
s.Write([]byte(" modèle : 3 / 76 GB\r"))
|
|
s.lastProg = time.Now().Add(-time.Minute) // 10 s écoulées
|
|
s.Write([]byte(" modèle : 40 / 76 GB\r[ok] fini\n"))
|
|
|
|
// « 3 » finissait sa propre écriture : il attendait de savoir si un saut de
|
|
// ligne suivait, et part donc avec l'écriture suivante.
|
|
want := []string{"Step 5", "modèle : 1 / 76 GB", "modèle : 3 / 76 GB", "[ok] fini"}
|
|
if !reflect.DeepEqual(got, want) {
|
|
t.Fatalf("lignes %q, attendu %q", got, want)
|
|
}
|
|
}
|