A small source refactor to make it easier to include in other projects without potentially clashing. Not that there's other people with fuc2 directories.
parent
ca5cad83e2
commit
4f58ff285e
@ -0,0 +1,11 @@ |
||||
#pragma once |
||||
#include <fuc2/testing.hpp> |
||||
|
||||
/*
|
||||
* This is kind of dumb right now but soon I'll have different run |
||||
* functions if you want to fork or thread and such. Possibly also |
||||
* for TAP output. |
||||
*/ |
||||
namespace fuc2 { |
||||
int run(const Set& test_set); |
||||
} |
||||
@ -1,8 +1,6 @@ |
||||
#pragma once |
||||
#include <source_location> |
||||
#include <string> |
||||
#include <stdexcept> |
||||
#include <iostream> |
||||
#include <fmt/core.h> |
||||
#include <functional> |
||||
|
||||
@ -0,0 +1,46 @@ |
||||
#include <string> |
||||
#include <fmt/core.h> |
||||
#include <fuc2/run.hpp> |
||||
|
||||
namespace fuc2 { |
||||
int run(const Set& test_set) { |
||||
int fail_count = 0; |
||||
std::vector<std::string> 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; |
||||
} |
||||
} |
||||
Loading…
Reference in new issue