package main import ( "context" "errors" "testing" "sub2api-cn-relay-manager/internal/app" ) func TestRunCallsApplicationServerRunnerAfterBootstrap(t *testing.T) { serverApp := app.NewServer("127.0.0.1:0", nil) bootstrapCalled := false runnerCalled := false err := run( context.Background(), func(context.Context) (*app.Server, error) { bootstrapCalled = true return serverApp, nil }, func(_ context.Context, got *app.Server) error { runnerCalled = true if got != serverApp { t.Fatal("run() passed unexpected server instance to runner") } return nil }, ) if err != nil { t.Fatalf("run() returned error: %v", err) } if !bootstrapCalled { t.Fatal("run() did not call bootstrap") } if !runnerCalled { t.Fatal("run() did not call server runner") } } func TestRunReturnsBootstrapError(t *testing.T) { wantErr := errors.New("bootstrap failed") err := run( context.Background(), func(context.Context) (*app.Server, error) { return nil, wantErr }, func(context.Context, *app.Server) error { t.Fatal("run() called runner after bootstrap error") return nil }, ) if !errors.Is(err, wantErr) { t.Fatalf("run() error = %v, want %v", err, wantErr) } } func TestRunReturnsApplicationRunError(t *testing.T) { wantErr := errors.New("server run failed") serverApp := app.NewServer("127.0.0.1:0", nil) err := run( context.Background(), func(context.Context) (*app.Server, error) { return serverApp, nil }, func(context.Context, *app.Server) error { return wantErr }, ) if !errors.Is(err, wantErr) { t.Fatalf("run() error = %v, want %v", err, wantErr) } }