feat: start adding padding to test output
This commit is contained in:
parent
5770ea2456
commit
2ba712eef6
|
@ -492,14 +492,45 @@ impl Project {
|
||||||
};
|
};
|
||||||
|
|
||||||
if !tests.is_empty() {
|
if !tests.is_empty() {
|
||||||
println!(
|
println!("\n{}\n", "Running tests...".bold().underline().purple());
|
||||||
"\n{}\n",
|
|
||||||
"Running tests...".bold().underline().purple().to_string()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let fmt_tests = |is_passing: bool, test: Script, remaining_budget: ExBudget| -> String {
|
let mut results = Vec::new();
|
||||||
let ExBudget { mem, cpu } = initial_budget - remaining_budget;
|
|
||||||
|
for test in tests {
|
||||||
|
match test.program.eval(initial_budget) {
|
||||||
|
(Ok(..), remaining_budget, _) => {
|
||||||
|
results.push((true, test, initial_budget - remaining_budget));
|
||||||
|
// println!("{}", fmt_tests);
|
||||||
|
}
|
||||||
|
(Err(_), remaining_budget, _) => {
|
||||||
|
results.push((false, test, initial_budget - remaining_budget));
|
||||||
|
// println!("{}", fmt_tests());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let (max_mem, max_cpu) =
|
||||||
|
results
|
||||||
|
.iter()
|
||||||
|
.fold((0, 0), |(max_mem, max_cpu), (_, _, budget)| {
|
||||||
|
if budget.mem >= max_mem && budget.cpu >= max_cpu {
|
||||||
|
(budget.mem, budget.cpu)
|
||||||
|
} else if budget.mem > max_mem {
|
||||||
|
(budget.mem, max_cpu)
|
||||||
|
} else if budget.cpu > max_cpu {
|
||||||
|
(max_mem, budget.cpu)
|
||||||
|
} else {
|
||||||
|
(max_mem, max_cpu)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let max_mem = max_mem.to_string().len() as i32;
|
||||||
|
let max_cpu = max_cpu.to_string().len() as i32;
|
||||||
|
|
||||||
|
let fmt_tests = |is_passing: bool, test: Script, spent_budget: ExBudget| -> String {
|
||||||
|
let ExBudget { mem, cpu } = spent_budget;
|
||||||
|
|
||||||
format!(
|
format!(
|
||||||
" [{}] [mem: {}, cpu: {}] {}::{}",
|
" [{}] [mem: {}, cpu: {}] {}::{}",
|
||||||
if is_passing {
|
if is_passing {
|
||||||
|
@ -507,22 +538,15 @@ impl Project {
|
||||||
} else {
|
} else {
|
||||||
"FAIL".bold().red().to_string()
|
"FAIL".bold().red().to_string()
|
||||||
},
|
},
|
||||||
mem,
|
padding_right(mem.to_string(), max_mem, " "),
|
||||||
cpu,
|
padding_right(cpu.to_string(), max_cpu, " "),
|
||||||
test.module,
|
test.module.blue(),
|
||||||
test.name
|
test.name.bright_blue()
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
for test in tests {
|
for (is_passing, test, spent_budget) in results {
|
||||||
match test.program.eval(initial_budget) {
|
println!("{}", fmt_tests(is_passing, test, spent_budget))
|
||||||
(Ok(..), remaining_budget, _) => {
|
|
||||||
println!("{}", fmt_tests(true, test, remaining_budget));
|
|
||||||
}
|
|
||||||
(Err(_), remaining_budget, _) => {
|
|
||||||
println!("{}", fmt_tests(false, test, remaining_budget));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -682,3 +706,16 @@ fn is_aiken_path(path: &Path, dir: impl AsRef<Path>) -> bool {
|
||||||
.expect("is_aiken_path(): to_str"),
|
.expect("is_aiken_path(): to_str"),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn padding_right(text: String, n: i32, delimiter: &str) -> String {
|
||||||
|
let mut text = text.clone();
|
||||||
|
let diff = n - text.len() as i32;
|
||||||
|
|
||||||
|
if diff.is_positive() {
|
||||||
|
for _ in 0..diff {
|
||||||
|
text.push_str(delimiter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
text
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
use aiken/builtin
|
||||||
|
|
||||||
|
test bar() {
|
||||||
|
builtin.length_of_bytearray(#[2, 2, 3]) == 3
|
||||||
|
}
|
Loading…
Reference in New Issue