absolute path for parser tests

This commit is contained in:
Protryon 2021-03-07 10:17:33 -08:00
parent b60affc40b
commit 2a616eb13d
3 changed files with 27 additions and 16 deletions

View File

@ -14,7 +14,10 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with the Leo library. If not, see <https://www.gnu.org/licenses/>. // along with the Leo library. If not, see <https://www.gnu.org/licenses/>.
use std::{fs, path::Path}; use std::{
fs,
path::{Path, PathBuf},
};
use crate::SyntaxError; use crate::SyntaxError;
@ -42,7 +45,9 @@ pub fn parser_pass_tests() {
let mut pass = 0; let mut pass = 0;
let mut fail = vec![]; let mut fail = vec![];
let mut tests = vec![]; let mut tests = vec![];
find_tests("../tests/pass/parse/", &mut tests); let mut test_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
test_dir.push("../tests/pass/parse/");
find_tests(&test_dir, &mut tests);
for (path, content) in tests.into_iter() { for (path, content) in tests.into_iter() {
match crate::parse(&path, &content) { match crate::parse(&path, &content) {
Ok(_) => { Ok(_) => {
@ -73,7 +78,9 @@ pub fn parser_fail_tests() {
let mut pass = 0; let mut pass = 0;
let mut fail = vec![]; let mut fail = vec![];
let mut tests = vec![]; let mut tests = vec![];
find_tests("../tests/fail/parse/", &mut tests); let mut test_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
test_dir.push("../tests/fail/parse/");
find_tests(&test_dir, &mut tests);
for (path, content) in tests.into_iter() { for (path, content) in tests.into_iter() {
match crate::parse(&path, &content) { match crate::parse(&path, &content) {
Ok(_) => { Ok(_) => {

View File

@ -4,9 +4,9 @@
"imports": [], "imports": [],
"circuits": {}, "circuits": {},
"functions": { "functions": {
"{\"name\":\"main\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":10,\\\"col_stop\\\":14,\\\"path\\\":\\\"./tests/serialization/main.leo\\\"}\"}": { "{\"name\":\"main\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":10,\\\"col_stop\\\":14,\\\"path\\\":\\\"test\\\"}\"}": {
"annotations": [], "annotations": [],
"identifier": "{\"name\":\"main\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":10,\\\"col_stop\\\":14,\\\"path\\\":\\\"./tests/serialization/main.leo\\\"}\"}", "identifier": "{\"name\":\"main\",\"span\":\"{\\\"line_start\\\":1,\\\"line_stop\\\":1,\\\"col_start\\\":10,\\\"col_stop\\\":14,\\\"path\\\":\\\"test\\\"}\"}",
"input": [], "input": [],
"output": null, "output": null,
"block": { "block": {
@ -24,7 +24,7 @@
"line_stop": 2, "line_stop": 2,
"col_start": 12, "col_start": 12,
"col_stop": 13, "col_stop": 13,
"path": "./tests/serialization/main.leo" "path": "test"
} }
] ]
} }
@ -38,7 +38,7 @@
"line_stop": 2, "line_stop": 2,
"col_start": 16, "col_start": 16,
"col_stop": 17, "col_stop": 17,
"path": "./tests/serialization/main.leo" "path": "test"
} }
] ]
} }
@ -49,7 +49,7 @@
"line_stop": 2, "line_stop": 2,
"col_start": 12, "col_start": 12,
"col_stop": 17, "col_stop": 17,
"path": "./tests/serialization/main.leo" "path": "test"
} }
} }
}, },
@ -58,7 +58,7 @@
"line_stop": 2, "line_stop": 2,
"col_start": 5, "col_start": 5,
"col_stop": 17, "col_stop": 17,
"path": "./tests/serialization/main.leo" "path": "test"
} }
} }
} }
@ -68,7 +68,7 @@
"line_stop": 3, "line_stop": 3,
"col_start": 17, "col_start": 17,
"col_stop": 2, "col_stop": 2,
"path": "./tests/serialization/main.leo" "path": "test"
} }
}, },
"span": { "span": {
@ -76,7 +76,7 @@
"line_stop": 3, "line_stop": 3,
"col_start": 1, "col_start": 1,
"col_stop": 2, "col_stop": 2,
"path": "./tests/serialization/main.leo" "path": "test"
} }
} }
} }

View File

@ -25,7 +25,7 @@ fn to_ast(program_filepath: &Path) -> Result<Ast, SyntaxError> {
let program_string = std::fs::read_to_string(program_filepath).expect("failed to open test"); let program_string = std::fs::read_to_string(program_filepath).expect("failed to open test");
// Parses the Leo file and constructs a leo ast. // Parses the Leo file and constructs a leo ast.
leo_parser::parse_ast(&program_filepath.to_str().unwrap(), &program_string) leo_parser::parse_ast("test", &program_string)
} }
#[test] #[test]
@ -33,7 +33,8 @@ fn to_ast(program_filepath: &Path) -> Result<Ast, SyntaxError> {
fn test_serialize() { fn test_serialize() {
// Construct an ast from the given test file. // Construct an ast from the given test file.
let ast = { let ast = {
let program_filepath = PathBuf::from("./tests/serialization/main.leo"); let mut program_filepath = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
program_filepath.push("tests/serialization/main.leo");
to_ast(&program_filepath).unwrap() to_ast(&program_filepath).unwrap()
}; };
@ -52,7 +53,8 @@ fn test_serialize() {
fn test_deserialize() { fn test_deserialize() {
// Load the expected ast. // Load the expected ast.
let expected_ast = { let expected_ast = {
let program_filepath = PathBuf::from("./tests/serialization/main.leo"); let mut program_filepath = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
program_filepath.push("tests/serialization/main.leo");
to_ast(&program_filepath).unwrap() to_ast(&program_filepath).unwrap()
}; };
@ -68,7 +70,8 @@ fn test_deserialize() {
fn test_serialize_deserialize_serialize() { fn test_serialize_deserialize_serialize() {
// Construct an ast from the given test file. // Construct an ast from the given test file.
let ast = { let ast = {
let program_filepath = PathBuf::from("./tests/serialization/main.leo"); let mut program_filepath = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
program_filepath.push("tests/serialization/main.leo");
to_ast(&program_filepath).unwrap() to_ast(&program_filepath).unwrap()
}; };
@ -88,7 +91,8 @@ fn test_serialize_deserialize_serialize() {
#[test] #[test]
fn test_generic_parser_error() { fn test_generic_parser_error() {
let error_result = { let error_result = {
let program_filepath = PathBuf::from("./tests/serialization/parser_error.leo"); let mut program_filepath = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
program_filepath.push("tests/serialization/parser_error.leo");
to_ast(&program_filepath) to_ast(&program_filepath)
} }