| 659 | } |
| 660 | |
| 661 | func TestGenerationStartsFunctionAfterClosed(t *testing.T) { |
| 662 | gen := Generation{ |
| 663 | conn: &mockCoordinator{}, |
| 664 | done: make(chan struct{}), |
| 665 | joined: make(chan struct{}), |
| 666 | log: func(func(Logger)) {}, |
| 667 | logError: func(func(Logger)) {}, |
| 668 | } |
| 669 | |
| 670 | gen.close() |
| 671 | |
| 672 | ch := make(chan error) |
| 673 | gen.Start(func(ctx context.Context) { |
| 674 | <-ctx.Done() |
| 675 | ch <- ctx.Err() |
| 676 | }) |
| 677 | |
| 678 | select { |
| 679 | case <-time.After(time.Second): |
| 680 | t.Fatal("timed out waiting for func to run") |
| 681 | case err := <-ch: |
| 682 | if !errors.Is(err, ErrGenerationEnded) { |
| 683 | t.Fatalf("expected %v but got %v", ErrGenerationEnded, err) |
| 684 | } |
| 685 | } |
| 686 | } |