extern crate nginx_config; extern crate regex; #[macro_use] extern crate pretty_assertions; use std::io::Read; use std::fs::File; use nginx_config::parse_main; fn test_error(filename: &str) { let mut buf = String::with_capacity(1024); let path = format!("tests/errors/{}.txt", filename); let mut f = File::open(&path).unwrap(); f.read_to_string(&mut buf).unwrap(); let mut iter = buf.splitn(2, "\n---\n"); let graphql = iter.next().unwrap(); let expected = iter.next().expect("file should contain error message"); let err = parse_main(graphql).unwrap_err(); let err_text = &err.to_string(); let err_text = regex::Regex::new(r"one of \d+ options").unwrap() .replace(&err_text, "one of options"); assert_eq!(err_text, expected); } #[test] fn invalid_directive() { test_error("invalid_directive"); } #[test] fn invalid_directive_in_block() { test_error("invalid_directive_in_block"); } #[test] fn invalid_directive_with_newline() { test_error("invalid_directive_with_newline"); }