Phase 6: Kompatibilitaetsabnahme abschliessen und archivieren
This commit is contained in:
@@ -129,6 +129,66 @@ fn cli_meldet_physische_quellorte_auch_nach_verschachtelten_includes() {
|
||||
std::fs::remove_dir_all(dir).unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn release_projekt_prueft_anfangsdateien_dateieffekte_und_include_fehler() {
|
||||
struct Aufraeumen(std::path::PathBuf);
|
||||
impl Drop for Aufraeumen {
|
||||
fn drop(&mut self) {
|
||||
let _ = std::fs::remove_dir_all(&self.0);
|
||||
}
|
||||
}
|
||||
let dir = std::env::temp_dir().join(format!("tb-release-files-{}", std::process::id()));
|
||||
{
|
||||
std::fs::create_dir(&dir).unwrap();
|
||||
let _cleanup = Aufraeumen(dir.clone());
|
||||
std::fs::write(dir.join("main.bas"), "CALL Kopie\nEND\n").unwrap();
|
||||
std::fs::write(dir.join("lib.bas"), "'$INCLUDE: 'OUTER.BI'\n").unwrap();
|
||||
std::fs::write(dir.join("outer.bi"), "'$INCLUDE: 'INNER.BI'\n").unwrap();
|
||||
std::fs::write(dir.join("inner.bi"), "SUB Kopie\nOPEN \"seed.txt\" FOR INPUT AS #1\nLINE INPUT #1, s$\nCLOSE #1\nOPEN \"result.txt\" FOR APPEND AS #2\nPRINT #2, s$\nCLOSE #2\n200 ERROR 6\nEND SUB\n").unwrap();
|
||||
std::fs::write(dir.join("app.mak"), "MAIN.BAS\nLIB.BAS\n").unwrap();
|
||||
let build = tbc(&dir, "build", "app.mak");
|
||||
assert!(build.status.success(), "{build:?}");
|
||||
for entry in ["app.mak", "app.tbc"] {
|
||||
if entry == "app.tbc" {
|
||||
for source in ["main.bas", "lib.bas", "outer.bi", "inner.bi", "app.mak"] {
|
||||
std::fs::remove_file(dir.join(source)).unwrap();
|
||||
}
|
||||
}
|
||||
for _ in 0..2 {
|
||||
std::fs::write(dir.join("seed.txt"), "Grüße\n").unwrap();
|
||||
std::fs::write(dir.join("result.txt"), "Start\n").unwrap();
|
||||
let out = tbc(&dir, "run", entry);
|
||||
assert_eq!(out.status.code(), Some(2), "{out:?}");
|
||||
assert!(out.stdout.is_empty(), "{out:?}");
|
||||
assert!(
|
||||
String::from_utf8_lossy(&out.stderr)
|
||||
.to_ascii_lowercase()
|
||||
.contains("inner.bi:8:5:"),
|
||||
"{out:?}"
|
||||
);
|
||||
assert_eq!(
|
||||
std::fs::read(dir.join("seed.txt")).unwrap(),
|
||||
"Grüße\n".as_bytes()
|
||||
);
|
||||
assert_eq!(
|
||||
std::fs::read(dir.join("result.txt")).unwrap(),
|
||||
"Start\nGrüße\n".as_bytes()
|
||||
);
|
||||
}
|
||||
}
|
||||
let mut files: Vec<_> = std::fs::read_dir(&dir)
|
||||
.unwrap()
|
||||
.map(|f| f.unwrap().file_name())
|
||||
.collect();
|
||||
files.sort();
|
||||
assert_eq!(files, ["app.tbc", "result.txt", "seed.txt"]);
|
||||
}
|
||||
assert!(
|
||||
!dir.exists(),
|
||||
"Releaseprobe hat ihr Arbeitsverzeichnis nicht entfernt"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn erlaubte_grafik_und_benannte_nonfeatures_werden_per_cli_geprueft() {
|
||||
let dir = std::env::temp_dir().join(format!("tb-graphics-check-{}", std::process::id()));
|
||||
|
||||
Reference in New Issue
Block a user