feat(cli): proxdeploy in Go
Befehle login, servers, distros, profiles, presets, vm, lxc, template list|build, batch, status, logs --follow, cancel. Renderer im Aufbau der Vorgabe (zeichengenau per Golden-File), 24-bit/256/ohne Farbe, --ascii, --quiet, --json, --dry-run; live im Terminal, zeilenweise ohne. SSE mit Wiederverbinden und Polling als Rückfall. Typen aus openapi.json per oapi-codegen; Release-Builds per cli/bauen.sh. Refs #013 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"io"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSseLesen(t *testing.T) {
|
||||
strom := ": ping\r\n\r\nid: 41\r\nevent: log\r\ndata: [1,\r\ndata: 2]\r\n\r\nevent: stand\ndata: {}\n\n: ping\n\nevent: ende\ndata: {}\n\n"
|
||||
var gesehen []Ereignis
|
||||
err := sseLesen(strings.NewReader(strom), func(e Ereignis) error {
|
||||
gesehen = append(gesehen, e)
|
||||
if e.Art == "ende" {
|
||||
return Ende
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if !errors.Is(err, Ende) {
|
||||
t.Fatalf("Fehler %v", err)
|
||||
}
|
||||
if len(gesehen) != 3 || gesehen[0].ID != "41" || string(gesehen[0].Daten) != "[1,\n2]" || gesehen[1].Art != "stand" {
|
||||
t.Errorf("gelesen: %+v", gesehen)
|
||||
}
|
||||
// Bricht der Strom vor `ende` ab, merkt der Aufrufer es (und verbindet neu).
|
||||
err = sseLesen(strings.NewReader("event: stand\ndata: {}\n\n"), func(Ereignis) error { return nil })
|
||||
if !errors.Is(err, io.ErrUnexpectedEOF) {
|
||||
t.Errorf("Abbruch: %v", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user