MCPcopy Index your code
hub / github.com/endbasic/endbasic / regenerate

Function regenerate

core/tests/testutils/mod.rs:509–582  ·  view source on GitHub ↗
(golden: &Path, generated: &mut W)

Source from the content-addressed store, hash-verified

507/// for checking this condition.
508#[allow(clippy::write_with_newline)]
509async fn regenerate<W: Write>(golden: &Path, generated: &mut W) -> io::Result<()> {
510 let tests = read_sources(golden)?;
511
512 let mut first = true;
513 for test in tests {
514 if !first {
515 write!(generated, "\n")?;
516 }
517 write!(generated, "# Test: {}\n", test.name)?;
518 first = false;
519 let labels = labels_for(&test);
520
521 let console = Rc::from(RefCell::from(String::new()));
522 let mut upcalls_by_name: HashMap<SymbolKey, Rc<dyn Callable>> = HashMap::default();
523 callables::register_all(&mut upcalls_by_name, console.clone());
524 let mut compiler = Compiler::new(&upcalls_by_name, &[]).expect("Cannot fail");
525 let mut image = Image::default();
526 let mut vm = Vm::new_with_limits(
527 upcalls_by_name.clone(),
528 Limits { max_call_stack: 4096, max_heap_entries: U24::from(128) },
529 );
530
531 for source in test.sources {
532 write!(generated, "\n{}\n\n", labels.source)?;
533 write!(generated, "```basic\n")?;
534 if !source.is_empty() {
535 write!(generated, "{}\n", source)?;
536 }
537 write!(generated, "```\n")?;
538
539 if let Err(e) = compiler.compile_more(&mut image, &mut source.as_bytes()) {
540 write!(generated, "\n{}\n\n", labels.compiler_errors)?;
541 write!(generated, "```plain\n")?;
542 write!(generated, "{}\n", e)?;
543 write!(generated, "```\n")?;
544 continue;
545 }
546
547 write!(generated, "\n{}\n\n", labels.disassembly)?;
548 write!(generated, "```asm\n")?;
549 for line in image.disasm() {
550 write!(generated, "{}\n", line)?;
551 }
552 write!(generated, "```\n")?;
553
554 console.borrow_mut().clear();
555 match run_image(&mut vm, &image).await {
556 Ok(0) => (),
557 Ok(i) => {
558 write!(generated, "\n{}\n\n", labels.exit_code)?;
559 write!(generated, "```plain\n")?;
560 write!(generated, "{}\n", i)?;
561 write!(generated, "```\n")?;
562 }
563 Err(e) => {
564 write!(generated, "\n{}\n\n", labels.runtime_errors)?;
565 write!(generated, "```plain\n")?;
566 write!(generated, "{}\n", e)?;

Callers 1

run_one_testFunction · 0.85

Calls 9

read_sourcesFunction · 0.85
labels_forFunction · 0.85
register_allFunction · 0.85
run_imageFunction · 0.85
compile_moreMethod · 0.80
as_bytesMethod · 0.80
disasmMethod · 0.80
is_emptyMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected