| 461 | } |
| 462 | |
| 463 | void OnEnd() override { |
| 464 | TraceProcessor->End(); |
| 465 | if (GetIsForked()) { |
| 466 | return; |
| 467 | } |
| 468 | |
| 469 | if (!PrintSummary_) { |
| 470 | return; |
| 471 | } |
| 472 | |
| 473 | fprintf(stderr, "[%sDONE%s] ok: %s%u%s", |
| 474 | YellowColor().data(), OldColor().data(), |
| 475 | LightGreenColor().data(), GoodTests(), OldColor().data()); |
| 476 | if (FailTests()) |
| 477 | fprintf(stderr, ", err: %s%u%s", |
| 478 | LightRedColor().data(), FailTests(), OldColor().data()); |
| 479 | fprintf(stderr, "\n"); |
| 480 | |
| 481 | if (ShowFails) { |
| 482 | for (size_t i = 0; i < Fails.size(); ++i) { |
| 483 | printf("%s", Fails[i].data()); |
| 484 | } |
| 485 | } |
| 486 | } |
| 487 | |
| 488 | bool CheckAccess(TString name, size_t num) override { |
| 489 | if (num < Start) { |