Phase 6: IDE-Exportanbindung abschließen und Change archivieren
This commit is contained in:
@@ -488,3 +488,51 @@ fn cursor_after_shortening_uses_original_position_and_open_after_save_uses_fresh
|
||||
.unwrap());
|
||||
assert_eq!(p.document(p.members()[0]).unwrap().code(), "PRINT 7\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn libraries_are_binary_members_with_relative_save_as_and_no_source_views() {
|
||||
let t = Temp::new();
|
||||
let lib = t.write("lib.bas", "SUB Answer\nPRINT 42\nEND SUB\n");
|
||||
let mut compiler = tb_vm::project::ProjectCompiler::default();
|
||||
let bytes = SourceLoader::default()
|
||||
.load(&lib)
|
||||
.unwrap()
|
||||
.compile_library(&mut compiler)
|
||||
.unwrap()
|
||||
.to_tbl()
|
||||
.unwrap();
|
||||
let tbl = t.0.join("lib.tbl");
|
||||
fs::write(&tbl, &bytes).unwrap();
|
||||
fs::remove_file(lib).unwrap();
|
||||
let main = t.write("main.bas", "CALL Answer\nEND\n");
|
||||
let mak = t.write("p.mak", "lib.tbl\nmain.bas\n'$STARTUP: \"main.bas\"\n");
|
||||
let mut p = Project::open(&mak, vec![]).unwrap();
|
||||
let id = p.members()[0];
|
||||
assert!(p.document(id).unwrap().is_library());
|
||||
assert!(p.open_view(id).is_err());
|
||||
assert!(p.replace_text(id, 0..0, "bad").is_err());
|
||||
assert!(p.save_file(id, None).is_err());
|
||||
assert!(p.set_startup(Some(id)).is_err());
|
||||
assert_eq!(p.source_members().len(), 1);
|
||||
p.sources()
|
||||
.unwrap()
|
||||
.compile(&mut compiler, "consumer")
|
||||
.unwrap();
|
||||
fs::create_dir(t.0.join("sub")).unwrap();
|
||||
p.save_project(&t.plan("sub/p.mak")).unwrap();
|
||||
let text = fs::read_to_string(t.0.join("sub/p.mak")).unwrap();
|
||||
assert!(text.contains("../lib.tbl"), "{text}");
|
||||
assert_eq!(fs::read(&tbl).unwrap(), bytes);
|
||||
let mut reopened = Project::open(&t.0.join("sub/p.mak"), vec![]).unwrap();
|
||||
let id = reopened.members()[0];
|
||||
reopened.remove_file(id, None).unwrap();
|
||||
assert!(tbl.exists());
|
||||
reopened.add_file(&tbl).unwrap();
|
||||
assert_eq!(reopened.manifest().members().last().unwrap(), &tbl);
|
||||
assert!(reopened.find_document(&main).is_some());
|
||||
reopened
|
||||
.sources()
|
||||
.unwrap()
|
||||
.compile(&mut compiler, "consumer")
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user