From 9e4052cc2ee12751ba94909ff479bd03df141ac4 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 7 Jan 2018 14:56:08 +0300 Subject: Test utils --- tests/parser.rs | 48 ++++++++---------------------------------------- 1 file changed, 8 insertions(+), 40 deletions(-) (limited to 'tests/parser.rs') diff --git a/tests/parser.rs b/tests/parser.rs index 43d04e491..518852bb2 100644 --- a/tests/parser.rs +++ b/tests/parser.rs @@ -1,46 +1,20 @@ extern crate file; -#[macro_use(assert_diff)] -extern crate difference; extern crate libsyntax2; +extern crate testutils; -use std::path::{PathBuf, Path}; -use std::fs::read_dir; +use std::path::{Path}; use std::fmt::Write; use libsyntax2::{tokenize, parse, Node, File}; +use testutils::{collect_tests, assert_equal_text}; #[test] fn parser_tests() { - for test_case in parser_test_cases() { + for test_case in collect_tests(&["parser/ok", "parser/err"]) { parser_test_case(&test_case); } } -fn parser_test_dir() -> PathBuf { - let dir = env!("CARGO_MANIFEST_DIR"); - PathBuf::from(dir).join("tests/data/parser") -} - -fn test_from_dir(dir: &Path) -> Vec { - let mut acc = Vec::new(); - for file in read_dir(&dir).unwrap() { - let file = file.unwrap(); - let path = file.path(); - if path.extension().unwrap_or_default() == "rs" { - acc.push(path); - } - } - acc.sort(); - acc -} - -fn parser_test_cases() -> Vec { - let mut acc = Vec::new(); - acc.extend(test_from_dir(&parser_test_dir().join("ok"))); - acc.extend(test_from_dir(&parser_test_dir().join("err"))); - acc -} - fn parser_test_case(path: &Path) { let actual = { let text = file::get_text(path).unwrap(); @@ -48,19 +22,13 @@ fn parser_test_case(path: &Path) { let file = parse(text, &tokens); dump_tree(&file) }; - let expected = path.with_extension("txt"); - let expected = file::get_text(&expected).expect( - &format!("Can't read {}", expected.display()) + let expected_path = path.with_extension("txt"); + let expected = file::get_text(&expected_path).expect( + &format!("Can't read {}", expected_path.display()) ); let expected = expected.as_str(); let actual = actual.as_str(); - if expected == actual { - return - } - if expected.trim() == actual.trim() { - panic!("Whitespace difference! {}", path.display()) - } - assert_diff!(expected, actual, "\n", 0) + assert_equal_text(expected, actual, &expected_path); } fn dump_tree(file: &File) -> String { -- cgit v1.2.3