Files
ruff/crates/ruff_python_parser/src/parser/tests.rs
Victor Hugo Gomes 78ee6441a7 Replace LALRPOP parser with hand-written parser
Co-authored-by: Micha Reiser <micha@reiser.io>
2024-03-07 16:44:46 +05:30

45 lines
1018 B
Rust

use crate::parser::Parser;
use crate::token_source::TokenSource;
use crate::Mode;
mod parser;
mod suite;
// This is a sanity test for what looks like an ipython directive being
// assigned to. Although this doesn't actually parse as an assignment
// statement, but rather, a directive whose value is `foo = 42`.
#[test]
fn ok_ipy_escape_command() {
use crate::Mode;
let src = r"!foo = 42";
let tokens = crate::lexer::lex(src, Mode::Ipython).collect();
let ast = crate::parse_tokens(tokens, src, Mode::Ipython);
insta::assert_debug_snapshot!(ast);
}
// Test that is intentionally ignored by default.
// Use it for quickly debugging a parser issue.
#[test]
#[ignore]
fn parser_quick_test() {
let src = r"if True:
1
...
if x < 1:
...
else:
pass
if a:
pass
elif b:
...
";
let tokens = crate::lexer::lex(src, Mode::Module).collect();
let ast = Parser::new(src, Mode::Module, TokenSource::new(tokens)).parse_program();
assert_eq!(&ast.parse_errors, &[]);
}