// Command pflichttestgate ist das CI-Gate aus docs/TESTSTRATEGIE-MAIL.md // Abschnitt 4. Aufruf: pflichttestgate < geänderte-dateien.txt package main import ( "bufio" "fmt" "os" "gitea.perlbach24.de/scripte/nexarch/mail/internal/pflichttestgate" ) func main() { var changedFiles []string scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { line := scanner.Text() if line != "" { changedFiles = append(changedFiles, line) } } if err := scanner.Err(); err != nil { fmt.Fprintf(os.Stderr, "pflichttestgate: eingabe konnte nicht gelesen werden: %v\n", err) os.Exit(2) } violations := pflichttestgate.CheckDiff(changedFiles) if len(violations) == 0 { fmt.Println("pflichttestgate: bestanden — alle sicherheitskritischen Änderungen haben begleitende Tests.") return } fmt.Fprintln(os.Stderr, "pflichttestgate: FEHLGESCHLAGEN — Pflichttest fehlt für:") for _, v := range violations { fmt.Fprintf(os.Stderr, " - Package %q (Datei %q hat keine begleitende _test.go-Änderung)\n", v.Package, v.ChangedFile) } fmt.Fprintln(os.Stderr, "\nSiehe docs/TESTSTRATEGIE-MAIL.md Abschnitt 4.") os.Exit(1) }