#[path = "support/bib_skeleton.rs"]
mod bib_skeleton;
use std::fs;
use std::path::Path;
use bib_skeleton::{count_entries, project_badness, project_texlab};
#[test]
fn texlab_recognizes_badness_clean_entries() {
let dir = Path::new(env!("CARGO_MANIFEST_DIR"))
.join("tests")
.join("bib_corpus");
let mut checked = 0usize;
for entry in fs::read_dir(&dir).expect("read bib_corpus dir") {
let path = entry.expect("dir entry").path();
if path.extension().and_then(|e| e.to_str()) != Some("bib") {
continue;
}
let text = fs::read_to_string(&path).expect("read bib corpus file");
if !badness::bib::parse(&text).errors.is_empty() {
continue;
}
let name = path.file_name().unwrap().to_string_lossy();
let badness_entries = count_entries(&project_badness(&text));
let texlab_entries = count_entries(&project_texlab(&text));
assert!(
texlab_entries >= badness_entries,
"entry-recognition floor violated for badness-clean corpus file `{name}`: \
badness recognized {badness_entries} structured entries but texlab only {texlab_entries}"
);
checked += 1;
}
assert!(checked > 0, "no clean bib corpus files were checked");
}