From bf715ab1cac983ef1ffea638b56ffb10fd8f3c71 Mon Sep 17 00:00:00 2001 From: Dimitris Fasarakis Hilliard Date: Sun, 1 Jan 2023 21:36:07 +0200 Subject: [PATCH] Move tests for with into parser. --- parser/src/lib.rs | 1 - parser/src/parser.rs | 57 +++++++++++++++++ ...arser__parser__tests__with_statement.snap} | 2 +- parser/src/with.rs | 61 ------------------- 4 files changed, 58 insertions(+), 63 deletions(-) rename parser/src/snapshots/{rustpython_parser__with__tests__with_statement.snap => rustpython_parser__parser__tests__with_statement.snap} (99%) delete mode 100644 parser/src/with.rs diff --git a/parser/src/lib.rs b/parser/src/lib.rs index d266d2a..ce9dde1 100644 --- a/parser/src/lib.rs +++ b/parser/src/lib.rs @@ -33,4 +33,3 @@ mod python; mod context; mod string; pub mod token; -mod with; diff --git a/parser/src/parser.rs b/parser/src/parser.rs index 6dcbacc..aad0288 100644 --- a/parser/src/parser.rs +++ b/parser/src/parser.rs @@ -259,4 +259,61 @@ class Foo(A, B): let parse_ast = parse_expression(&source, "").unwrap(); insta::assert_debug_snapshot!(parse_ast); } + + #[test] + fn test_with_statement() { + let source = "\ +with 0: pass +with 0 as x: pass +with 0, 1: pass +with 0 as x, 1 as y: pass +with 0 if 1 else 2: pass +with 0 if 1 else 2 as x: pass +with (): pass +with () as x: pass +with (0): pass +with (0) as x: pass +with (0,): pass +with (0,) as x: pass +with (0, 1): pass +with (0, 1) as x: pass +with (*a,): pass +with (*a,) as x: pass +with (0, *a): pass +with (0, *a) as x: pass +with (a := 0): pass +with (a := 0) as x: pass +with (a := 0, b := 1): pass +with (a := 0, b := 1) as x: pass +with (0 as a): pass +with (0 as a,): pass +with (0 as a, 1 as b): pass +with (0 as a, 1 as b,): pass +"; + insta::assert_debug_snapshot!(parse_program(source, "").unwrap()); + } + + #[test] + fn test_with_statement_invalid() { + for source in [ + "with 0,: pass", + "with 0 as x,: pass", + "with 0 as *x: pass", + "with *a: pass", + "with *a as x: pass", + "with (*a): pass", + "with (*a) as x: pass", + "with *a, 0 as x: pass", + "with (*a, 0 as x): pass", + "with 0 as x, *a: pass", + "with (0 as x, *a): pass", + "with (0 as x) as y: pass", + "with (0 as x), 1: pass", + "with ((0 as x)): pass", + "with a := 0 as x: pass", + "with (a := 0 as x): pass", + ] { + assert!(parse_program(source, "").is_err()); + } + } } diff --git a/parser/src/snapshots/rustpython_parser__with__tests__with_statement.snap b/parser/src/snapshots/rustpython_parser__parser__tests__with_statement.snap similarity index 99% rename from parser/src/snapshots/rustpython_parser__with__tests__with_statement.snap rename to parser/src/snapshots/rustpython_parser__parser__tests__with_statement.snap index bee9138..8ac056b 100644 --- a/parser/src/snapshots/rustpython_parser__with__tests__with_statement.snap +++ b/parser/src/snapshots/rustpython_parser__parser__tests__with_statement.snap @@ -1,5 +1,5 @@ --- -source: compiler/parser/src/with.rs +source: compiler/parser/src/parser.rs expression: "parse_program(source, \"\").unwrap()" --- [ diff --git a/parser/src/with.rs b/parser/src/with.rs deleted file mode 100644 index b05fb37..0000000 --- a/parser/src/with.rs +++ /dev/null @@ -1,61 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::parser::parse_program; - - #[test] - fn test_with_statement() { - let source = "\ -with 0: pass -with 0 as x: pass -with 0, 1: pass -with 0 as x, 1 as y: pass -with 0 if 1 else 2: pass -with 0 if 1 else 2 as x: pass -with (): pass -with () as x: pass -with (0): pass -with (0) as x: pass -with (0,): pass -with (0,) as x: pass -with (0, 1): pass -with (0, 1) as x: pass -with (*a,): pass -with (*a,) as x: pass -with (0, *a): pass -with (0, *a) as x: pass -with (a := 0): pass -with (a := 0) as x: pass -with (a := 0, b := 1): pass -with (a := 0, b := 1) as x: pass -with (0 as a): pass -with (0 as a,): pass -with (0 as a, 1 as b): pass -with (0 as a, 1 as b,): pass -"; - insta::assert_debug_snapshot!(parse_program(source, "").unwrap()); - } - - #[test] - fn test_with_statement_invalid() { - for source in [ - "with 0,: pass", - "with 0 as x,: pass", - "with 0 as *x: pass", - "with *a: pass", - "with *a as x: pass", - "with (*a): pass", - "with (*a) as x: pass", - "with *a, 0 as x: pass", - "with (*a, 0 as x): pass", - "with 0 as x, *a: pass", - "with (0 as x, *a): pass", - "with (0 as x) as y: pass", - "with (0 as x), 1: pass", - "with ((0 as x)): pass", - "with a := 0 as x: pass", - "with (a := 0 as x): pass", - ] { - assert!(parse_program(source, "").is_err()); - } - } -}