view src/tests/test_parse_files.rs @ 25:86604a156ed0

Rename tests_convert_dump to test_parse_files.
author Bastien Orivel <eijebong@bananium.fr>
date Fri, 03 Jun 2016 23:35:38 +0200
parents src/tests/tests_convert_dump.rs@199ba034e4af
children d255a932553f
line wrap: on
line source

use ast_convert;
use ast_dump;
use python_tb;
use python_parse;
use std::io::Read;
use std::fs::File;

fn test_parse_file(filename: &str) {
    let code = {
        let mut file = match File::open(filename) {
            Ok(file) => file,
            Err(err) => {
                panic!(format!("Can't find {}", filename));
            }
        };
        let mut code = String::new();
        file.read_to_string(&mut code).unwrap();
        code
    };

    let module = match python_parse::parse_ast(code.clone()) {
        Ok(module) => module,
        Err(err) => {
            python_tb::traceback(err);
            panic!(format!("Error while parsing file “{}”:", filename));
        }
    };

    let module_ast = ast_convert::convert_ast("__main__".to_string(), &module);
    let dumped_ast = ast_dump::dump_ast(&module_ast);
    assert_eq!(code, dumped_ast + "\n");
}

include!(concat!(env!("OUT_DIR"), "/generated_parse_tests.rs"));