use std::io::Write; fn main() { let files = std::fs::read_dir("tests/test_cases").unwrap(); let mut output_file = std::fs::File::create("tests/datatests/mod.rs").unwrap(); output_file .write_all( b"// This file is generated by build.rs use std::path::Path; use std::fs::File; use std::io::Read; use super::common::TestCase; use super::get_library; fn integration_tests(input: &Path) { let mut str: String = \"\".to_string(); let mut file = File::open(input).unwrap(); file.read_to_string(&mut str).unwrap(); let test_case = serde_yaml::from_str::(&str).unwrap(); println!(\"\tRunning integration test {}\", test_case.name); test_case.run_test(get_library()); } ", ) .unwrap(); for file in files { let file = file.unwrap(); let path = file.path(); let path_str = path.to_str().unwrap(); if path_str.ends_with(".yaml") { println!("cargo:rerun-if-changed={}", path_str); } let file_name = path.file_stem().unwrap().to_str().unwrap(); write!( output_file, " #[test] fn {}() {{ integration_tests(Path::new(\"{}\")); }} ", file_name, path.to_str().unwrap(), ) .unwrap(); } }