diff options
| author | mo8it <mo8it@proton.me> | 2024-04-01 18:38:01 +0200 |
|---|---|---|
| committer | mo8it <mo8it@proton.me> | 2024-04-01 18:38:01 +0200 |
| commit | def8d2c569a8a637396960c8513a0b1bdf88ef0c (patch) | |
| tree | 72efcb2023adda4d58dc0d60ab7e317450dc7ce2 /src/verify.rs | |
| parent | fdd7de00bd37e43a4e464d1cb5cc10c3753b3688 (diff) | |
Add VerifyState
Diffstat (limited to 'src/verify.rs')
| -rw-r--r-- | src/verify.rs | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/verify.rs b/src/verify.rs index 6e048a1..02bff99 100644 --- a/src/verify.rs +++ b/src/verify.rs @@ -10,6 +10,11 @@ use std::{ use crate::exercise::{Exercise, Mode, State}; +pub enum VerifyState<'a> { + AllExercisesDone, + Failed(&'a Exercise), +} + // Verify that the provided container of Exercise objects // can be compiled and run without any failures. // Any such failures will be reported to the end user. @@ -20,7 +25,7 @@ pub fn verify<'a>( progress: (usize, usize), verbose: bool, success_hints: bool, -) -> Result<(), &'a Exercise> { +) -> Result<VerifyState<'a>> { let (num_done, total) = progress; let bar = ProgressBar::new(total as u64); let mut percentage = num_done as f32 / total as f32 * 100.0; @@ -35,12 +40,12 @@ pub fn verify<'a>( for exercise in pending_exercises { let compile_result = match exercise.mode { - Mode::Test => compile_and_test(exercise, RunMode::Interactive, verbose, success_hints), - Mode::Compile => compile_and_run_interactively(exercise, success_hints), - Mode::Clippy => compile_only(exercise, success_hints), + Mode::Test => compile_and_test(exercise, RunMode::Interactive, verbose, success_hints)?, + Mode::Compile => compile_and_run_interactively(exercise, success_hints)?, + Mode::Clippy => compile_only(exercise, success_hints)?, }; - if !compile_result.unwrap_or(false) { - return Err(exercise); + if !compile_result { + return Ok(VerifyState::Failed(exercise)); } percentage += 100.0 / total as f32; bar.inc(1); @@ -50,7 +55,7 @@ pub fn verify<'a>( bar.finish(); println!("You completed all exercises!"); - Ok(()) + Ok(VerifyState::AllExercisesDone) } #[derive(PartialEq, Eq)] |
