package cli import ( "context" "net" "strings" "testing" "time" ) // `llmgw server check` once ran a whole second server: words after server // that name no subcommand are refused. func TestServerTakesNoWordsItDoesNotKnow(t *testing.T) { cmd := newServerCmd() cmd.SetArgs([]string{"check", "--config", "/nonexistent"}) cmd.SilenceUsage, cmd.SilenceErrors = true, true if err := cmd.Execute(); err == nil || !strings.Contains(err.Error(), "unknown command") { t.Errorf("err %v", err) } } // A second server whose port is taken stops at once, before the router or // any control plane is built. func TestAServerWhosePortIsTakenStopsFirst(t *testing.T) { taken, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { t.Fatal(err) } defer taken.Close() ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() cmd := newServerCmd() cmd.SetArgs([]string{"--listen", taken.Addr().String(), "--admin-listen", "127.0.0.1:0", "--endpoint", "a=http://127.0.0.1:1=m"}) cmd.SilenceUsage, cmd.SilenceErrors = true, true if err := cmd.ExecuteContext(ctx); err == nil || !strings.Contains(err.Error(), "listening on") { t.Errorf("err %v", err) } }