#include #include #include namespace fuc2 { int run(const Set& test_set) { int fail_count = 0; std::vector errors; fmt::println("################# {} \"{}\" ###############", test_set.location.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, name); } if(fail_count > 0) { fmt::println("🚨🚨🚨🚨🚨 FAIL COUNT: {} in {}", fail_count, test_set.location.file_name()); for(auto& msg : errors) { fmt::println("---------\n{}", msg); } } else { fmt::println("👍 ALL PASS: {}", test_set.location.file_name()); } return fail_count; } }