Skip to content

Commit ebb42ec

Browse files
committed
Print test results in the nicer format by default
Let's reserve LOG(ERROR) for errors. Unfortunately, we cannot use this everywhere as test runner is also used in TonlibClient, where custom log redirections can be set up.
1 parent 29d44cd commit ebb42ec

File tree

3 files changed

+44
-5
lines changed

3 files changed

+44
-5
lines changed

tdutils/td/utils/tests.cpp

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
1717
Copyright 2017-2020 Telegram Systems LLP
1818
*/
19+
#include <iostream>
1920
#include <map>
2021

2122
#include "td/utils/Parser.h"
@@ -173,6 +174,14 @@ void TestsRunner::set_stress_flag(bool flag) {
173174
stress_flag_ = flag;
174175
}
175176

177+
void TestsRunner::set_pretty_output(bool flag) {
178+
pretty_output_ = flag;
179+
}
180+
181+
bool TestsRunner::use_pretty_output() const {
182+
return pretty_output_;
183+
}
184+
176185
void TestsRunner::run_all() {
177186
while (run_all_step()) {
178187
}
@@ -201,7 +210,11 @@ bool TestsRunner::run_all_step() {
201210
++state_.it;
202211
continue;
203212
}
204-
LOG(ERROR) << "Run test " << tag("name", name);
213+
if (pretty_output_) {
214+
std::cerr << "Running test " << name << "..." << std::endl;
215+
} else {
216+
LOG(ERROR) << "Run test " << tag("name", name);
217+
}
205218
state_.start = Time::now();
206219
state_.start_unadjusted = Time::now_unadjusted();
207220
state_.is_running = true;
@@ -214,12 +227,22 @@ bool TestsRunner::run_all_step() {
214227
auto passed = Time::now() - state_.start;
215228
auto real_passed = Time::now_unadjusted() - state_.start_unadjusted;
216229
if (test_failed_) {
217-
LOG(ERROR) << "FAILED in " << format::as_time(passed);
230+
if (pretty_output_) {
231+
std::cerr << "FAIL" << std::endl;
232+
failed_tests_.push_back(name);
233+
} else {
234+
LOG(ERROR) << "FAILED in " << format::as_time(passed);
235+
}
218236
any_test_failed_ = true;
219-
} else if (real_passed + 1e-9 > passed) {
220-
LOG(ERROR) << format::as_time(passed);
221237
} else {
222-
LOG(ERROR) << format::as_time(passed) << " real[" << format::as_time(real_passed) << "]";
238+
if (pretty_output_) {
239+
std::cerr << "PASS in " << (PSTRING() << format::as_time(passed)) << std::endl;
240+
++passed_tests_;
241+
} else if (real_passed + 1e-9 > passed) {
242+
LOG(ERROR) << format::as_time(passed);
243+
} else {
244+
LOG(ERROR) << format::as_time(passed) << " real[" << format::as_time(real_passed) << "]";
245+
}
223246
}
224247
if (regression_tester_) {
225248
regression_tester_->save_db();
@@ -231,6 +254,16 @@ bool TestsRunner::run_all_step() {
231254

232255
auto ret = state_.it != state_.end;
233256
if (!ret) {
257+
if (pretty_output_) {
258+
if (failed_tests_.empty()) {
259+
std::cerr << passed_tests_ << " test(s) passed" << std::endl;
260+
} else {
261+
std::cerr << failed_tests_.size() << " test(s) failed:" << std::endl;
262+
for (auto &failed_name : failed_tests_) {
263+
std::cerr << " - " << failed_name << std::endl;
264+
}
265+
}
266+
}
234267
state_ = State();
235268
test_failed_ = false;
236269
}

tdutils/td/utils/tests.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,12 @@ class TestsRunner : public TestContext {
113113
void add_test(string name, unique_ptr<Test> test);
114114
void add_substr_filter(string str);
115115
void set_stress_flag(bool flag);
116+
void set_pretty_output(bool flag);
116117
void run_all();
117118
bool run_all_step();
118119
void set_regression_tester(unique_ptr<RegressionTester> regression_tester);
119120
bool any_test_failed() const;
121+
bool use_pretty_output() const;
120122

121123
private:
122124
struct State {
@@ -127,8 +129,11 @@ class TestsRunner : public TestContext {
127129
size_t end{0};
128130
};
129131
bool stress_flag_{false};
132+
bool pretty_output_{false};
130133
vector<string> substr_filters_;
131134
vector<std::pair<string, unique_ptr<Test>>> tests_;
135+
vector<string> failed_tests_;
136+
size_t passed_tests_{0};
132137
State state_;
133138
std::atomic<bool> test_failed_ = false;
134139
unique_ptr<RegressionTester> regression_tester_;

test/test-td-main.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ int main(int argc, char **argv) {
3535
td::set_default_failure_signal_handler().ensure();
3636
// TODO port OptionParser to Windows
3737
auto &runner = td::TestsRunner::get_default();
38+
runner.set_pretty_output(true);
3839
for (int i = 1; i < argc; i++) {
3940
if (!std::strcmp(argv[i], "--filter")) {
4041
CHECK(i + 1 < argc);

0 commit comments

Comments
 (0)