#include #include #include namespace fuc2 { int run(const Set& test_set) { int fail_count = 0; std::vector errors; std::string file_name = test_set.location.file_name(); fmt::println("################# {} \"{}\" ###############", file_name, test_set.name); for(const auto& [name, test] : test_set.tests) { bool did_fail = false; fmt::println("----------- START {}", name); try { test(); } catch(const std::exception& e) { fail_count++; did_fail = true; fmt::println("🚨 FAIL! {}", e.what()); errors.push_back(e.what()); if(test_set.options.fail_fast) { break; } } std::string pass_fail = did_fail ? "🔴" : "🟢"; fmt::println("{} {}:{}\n==========", pass_fail, file_name, name); } if(fail_count > 0) { fmt::println("🚨🚨🚨🚨🚨 FAIL COUNT: {} in {}", fail_count, file_name); for(auto& msg : errors) { fmt::println("---------\n{}", msg); } } else { fmt::println("👍 ALL PASS: {}", file_name); } return fail_count; } }