Replace LALRPOP parser with hand-written parser
Co-authored-by: Micha Reiser <micha@reiser.io>
This commit is contained in:
committed by
Dhruv Manilawala
parent
461cdad53a
commit
78ee6441a7
44
crates/ruff_python_parser/src/parser/tests.rs
Normal file
44
crates/ruff_python_parser/src/parser/tests.rs
Normal file
@@ -0,0 +1,44 @@
|
||||
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, &[]);
|
||||
}
|
||||
Reference in New Issue
Block a user