From 7c6f0f9128665c1a605caaa552347b936578f952 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 7 Jan 2018 15:34:11 +0300 Subject: G: shebang --- tests/testutils/src/lib.rs | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'tests/testutils') diff --git a/tests/testutils/src/lib.rs b/tests/testutils/src/lib.rs index 9fc85cc24..b34517c5f 100644 --- a/tests/testutils/src/lib.rs +++ b/tests/testutils/src/lib.rs @@ -6,7 +6,33 @@ use std::fs::read_dir; use difference::Changeset; -pub fn assert_equal_text( +pub fn dir_tests( + paths: &[&str], + f: F +) +where + F: Fn(&str) -> String +{ + for path in collect_tests(paths) { + let actual = { + let text = file::get_text(&path).unwrap(); + f(&text) + }; + let path = path.with_extension("txt"); + if !path.exists() { + println!("\nfile: {}", path.display()); + println!("No .txt file with expected result, creating..."); + file::put_text(&path, actual).unwrap(); + panic!("No expected result") + } + let expected = file::get_text(&path).unwrap(); + let expected = expected.as_str(); + let actual = actual.as_str(); + assert_equal_text(expected, actual, &path); + } +} + +fn assert_equal_text( expected: &str, actual: &str, path: &Path @@ -16,7 +42,7 @@ pub fn assert_equal_text( } } -pub fn collect_tests(paths: &[&str]) -> Vec { +fn collect_tests(paths: &[&str]) -> Vec { paths.iter().flat_map(|path| { let path = test_data_dir().join(path); test_from_dir(&path).into_iter() -- cgit v1.2.3