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 |
#pragma once |
||||||
#include <source_location> |
#include <source_location> |
||||||
#include <string> |
#include <string> |
||||||
#include <stdexcept> |
|
||||||
#include <iostream> |
|
||||||
#include <fmt/core.h> |
#include <fmt/core.h> |
||||||
#include <functional> |
#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