| 126 | } |
| 127 | |
| 128 | func (r *TestRun) Cleanup(ctx context.Context) (err error) { |
| 129 | c, ok := r.runner.(Cleanable) |
| 130 | if !ok { |
| 131 | return nil |
| 132 | } |
| 133 | |
| 134 | select { |
| 135 | case <-r.done: |
| 136 | default: |
| 137 | // Test wasn't executed, so we don't need to clean up. |
| 138 | return nil |
| 139 | } |
| 140 | |
| 141 | defer func() { |
| 142 | e := recover() |
| 143 | if e != nil { |
| 144 | err = xerrors.Errorf("panic: %v", e) |
| 145 | } |
| 146 | }() |
| 147 | |
| 148 | err = c.Cleanup(ctx, r.id, r.logs) |
| 149 | //nolint:revive // we use named returns because we mutate it in a defer |
| 150 | return |
| 151 | } |
| 152 | |
| 153 | type syncBuffer struct { |
| 154 | buf *bytes.Buffer |