mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-04 10:49:50 +00:00
[internal] ComparableExpr
(f)strings and bytes made invariant under concatenation (#13301)
This commit is contained in:
parent
ca0ae0a484
commit
f27a8b8c7a
3 changed files with 173 additions and 38 deletions
47
crates/ruff_python_ast_integration_tests/tests/comparable.rs
Normal file
47
crates/ruff_python_ast_integration_tests/tests/comparable.rs
Normal file
|
@ -0,0 +1,47 @@
|
|||
use ruff_python_ast::comparable::ComparableExpr;
|
||||
use ruff_python_parser::{parse_expression, ParseError};
|
||||
|
||||
#[test]
|
||||
fn concatenated_strings_compare_equal() -> Result<(), ParseError> {
|
||||
let split_contents = r#"'a' 'b' r'\n raw'"#;
|
||||
let value_contents = r#"'ab\\n raw'"#;
|
||||
|
||||
let split_parsed = parse_expression(split_contents)?;
|
||||
let value_parsed = parse_expression(value_contents)?;
|
||||
|
||||
let split_compr = ComparableExpr::from(split_parsed.expr());
|
||||
let value_compr = ComparableExpr::from(value_parsed.expr());
|
||||
|
||||
assert_eq!(split_compr, value_compr);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn concatenated_bytes_compare_equal() -> Result<(), ParseError> {
|
||||
let split_contents = r#"b'a' b'b'"#;
|
||||
let value_contents = r#"b'ab'"#;
|
||||
|
||||
let split_parsed = parse_expression(split_contents)?;
|
||||
let value_parsed = parse_expression(value_contents)?;
|
||||
|
||||
let split_compr = ComparableExpr::from(split_parsed.expr());
|
||||
let value_compr = ComparableExpr::from(value_parsed.expr());
|
||||
|
||||
assert_eq!(split_compr, value_compr);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn concatenated_fstrings_compare_equal() -> Result<(), ParseError> {
|
||||
let split_contents = r#"f"{foo!r} this" r"\n raw" f" and {bar!s} that""#;
|
||||
let value_contents = r#"f"{foo!r} this\\n raw and {bar!s} that""#;
|
||||
|
||||
let split_parsed = parse_expression(split_contents)?;
|
||||
let value_parsed = parse_expression(value_contents)?;
|
||||
|
||||
let split_compr = ComparableExpr::from(split_parsed.expr());
|
||||
let value_compr = ComparableExpr::from(value_parsed.expr());
|
||||
|
||||
assert_eq!(split_compr, value_compr);
|
||||
Ok(())
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue