9#include <asmgrader/version.hpp>
11#include <boost/config/workaround.hpp>
12#include <boost/preprocessor/stringize.hpp>
15#include <range/v3/algorithm/all_of.hpp>
16#include <range/v3/algorithm/count_if.hpp>
17#include <range/v3/algorithm/fold_left.hpp>
18#include <range/v3/view/transform.hpp>
24#include <source_location>
43#if defined(__GNUC__) && !defined(__clang__)
45 compiler_info.major_version = __GNUC__;
46 compiler_info.minor_version = __GNUC_MINOR__;
47 compiler_info.patch_version = __GNUC_PATCHLEVEL__;
48#elif defined(__clang__)
50 compiler_info.major_version = __clang_major__;
51 compiler_info.minor_version = __clang_minor__;
52 compiler_info.patch_version = __clang_patchlevel__;
62 std::string_view
git_hash = BOOST_PP_STRINGIZE(ASMGRADER_VERSION_GIT_HASH);
64 std::chrono::time_point<std::chrono::system_clock>
start_time = std::chrono::system_clock::now();
79 std::source_location
loc;
84 std::source_location location = std::source_location::current())
101 std::optional<ContextInternalError>
error;
119 using ranges::fold_left_first, ranges::views::transform;
125 if (total_weight == 0) {
129 return static_cast<double>(passed_weight) / total_weight * 100;
142 return ranges::fold_left(failed_view, 0, std::plus<>{});
180 constexpr auto format(const ::asmgrader::RequirementResult::DebugInfo& from, fmt::format_context& ctx)
const {
182 if (!is_debug_format) {
186 return fmt::format_to(ctx.out(),
"{{{} at {}}}", from.msg, from.loc);
Definition asm_buffer.hpp:19
Definition grading_session.hpp:113
int num_requirements_passed() const noexcept
Definition grading_session.hpp:145
std::vector< TestResult > test_results
Definition grading_session.hpp:115
bool all_passed() const noexcept
Definition grading_session.hpp:132
double get_percentage() const noexcept
Definition grading_session.hpp:118
int num_requirements_total
Definition grading_session.hpp:116
int num_requirements_failed() const noexcept
Definition grading_session.hpp:140
std::string name
Definition grading_session.hpp:114
int num_tests_failed() const noexcept
Definition grading_session.hpp:138
int num_tests_passed() const noexcept
Definition grading_session.hpp:134
Definition grading_session.hpp:32
int major_version
Definition grading_session.hpp:35
@ Clang
Definition grading_session.hpp:33
@ GCC
Definition grading_session.hpp:33
@ Unknown
Definition grading_session.hpp:33
int minor_version
Definition grading_session.hpp:36
enum asmgrader::CompilerInfo::@1 kind
int patch_version
Definition grading_session.hpp:37
Definition grading_session.hpp:171
std::vector< StudentResult > results
Definition grading_session.hpp:172
Definition grading_session.hpp:77
std::source_location loc
Definition grading_session.hpp:79
static constexpr std::string_view DEFAULT_MSG
Definition grading_session.hpp:81
std::string_view msg
Definition grading_session.hpp:78
DebugInfo(std::string_view message=DEFAULT_MSG, std::source_location location=std::source_location::current())
Definition grading_session.hpp:83
Definition grading_session.hpp:72
std::string msg
Definition grading_session.hpp:74
DebugInfo debug_info
Definition grading_session.hpp:89
bool passed
Definition grading_session.hpp:73
Definition grading_session.hpp:151
bool names_known
Definition grading_session.hpp:154
std::string last_name
Definition grading_session.hpp:153
std::string subst_regex_string
Definition grading_session.hpp:159
std::optional< std::filesystem::path > assignment_path
Definition grading_session.hpp:156
std::string first_name
Definition grading_session.hpp:152
Definition grading_session.hpp:165
StudentInfo info
Definition grading_session.hpp:166
AssignmentResult result
Definition grading_session.hpp:167
Definition grading_session.hpp:93
int weight
Definition grading_session.hpp:99
std::optional< ContextInternalError > error
Definition grading_session.hpp:101
std::string name
Definition grading_session.hpp:94
constexpr int total_weighted() const noexcept
Definition grading_session.hpp:107
constexpr int num_failed() const noexcept
Definition grading_session.hpp:105
constexpr bool passed() const noexcept
Definition grading_session.hpp:103
int num_passed
Definition grading_session.hpp:97
int num_total
Definition grading_session.hpp:98
constexpr int passed_weighted() const noexcept
Definition grading_session.hpp:109
std::vector< RequirementResult > requirement_results
Definition grading_session.hpp:95