view src/tests/test_parse_files.rs @ 72:7ac23f4336b1

Add ast.AsyncWith.
author Bastien Orivel <eijebong@bananium.fr>
date Mon, 13 Jun 2016 18:09:15 +0200
parents d255a932553f
children c06d12a81637
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, err));
            }
        };
        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"));