-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add tests demonstrating f-strings with debug expressions in replaceme…
…nts that contain escaped characters (#14929)
- Loading branch information
1 parent
2eac00c
commit 82faa9b
Showing
4 changed files
with
96 additions
and
4 deletions.
There are no files selected for viewing
5 changes: 5 additions & 0 deletions
5
...uff_python_formatter/resources/test/fixtures/ruff/expression/fstring_preview.options.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
[ | ||
{ | ||
"preview": "enabled" | ||
} | ||
] |
20 changes: 20 additions & 0 deletions
20
crates/ruff_python_formatter/resources/test/fixtures/ruff/expression/fstring_preview.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# This test is in its own file because it results in AST changes on stable. | ||
# We don't plan to fix it on stable because we plan on promoting f-string formatting soon. | ||
|
||
# Regression test for https://github.com/astral-sh/ruff/issues/14766 | ||
# Don't change the casing of the escaped characters in the f-string because it would be observable in the debug expression. | ||
# >>> f"{r"\xFF"=}" | ||
# 'r"ÿ"=\'\\\\xFF\'' | ||
# >>> f"{r"\xff"=}" | ||
# 'r"ÿ"=\'\\\\xff\'' | ||
f"{r"\xFF"=}" | ||
f"{r"\xff"=}" | ||
|
||
|
||
# Test for https://github.com/astral-sh/ruff/issues/14926 | ||
# We could change the casing of the escaped characters in non-raw f-string because Python interprets the inner string | ||
# before printing it as a debug expression. For now, we decided not to change the casing because it's fairly complicated | ||
# to implement and it seems uncommon (debug expressions are uncommon, escapes are uncommon). | ||
# These two strings could be formatted to the same output but we currently don't do that. | ||
f"{"\xFF\N{space}"=}" | ||
f"{"\xff\N{SPACE}"=}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
67 changes: 67 additions & 0 deletions
67
crates/ruff_python_formatter/tests/snapshots/format@expression__fstring_preview.py.snap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
--- | ||
source: crates/ruff_python_formatter/tests/fixtures.rs | ||
input_file: crates/ruff_python_formatter/resources/test/fixtures/ruff/expression/fstring_preview.py | ||
snapshot_kind: text | ||
--- | ||
## Input | ||
```python | ||
# This test is in its own file because it results in AST changes on stable. | ||
# We don't plan to fix it on stable because we plan on promoting f-string formatting soon. | ||
# Regression test for https://github.com/astral-sh/ruff/issues/14766 | ||
# Don't change the casing of the escaped characters in the f-string because it would be observable in the debug expression. | ||
# >>> f"{r"\xFF"=}" | ||
# 'r"ÿ"=\'\\\\xFF\'' | ||
# >>> f"{r"\xff"=}" | ||
# 'r"ÿ"=\'\\\\xff\'' | ||
f"{r"\xFF"=}" | ||
f"{r"\xff"=}" | ||
# Test for https://github.com/astral-sh/ruff/issues/14926 | ||
# We could change the casing of the escaped characters in non-raw f-string because Python interprets the inner string | ||
# before printing it as a debug expression. For now, we decided not to change the casing because it's fairly complicated | ||
# to implement and it seems uncommon (debug expressions are uncommon, escapes are uncommon). | ||
# These two strings could be formatted to the same output but we currently don't do that. | ||
f"{"\xFF\N{space}"=}" | ||
f"{"\xff\N{SPACE}"=}" | ||
``` | ||
|
||
## Outputs | ||
### Output 1 | ||
``` | ||
indent-style = space | ||
line-width = 88 | ||
indent-width = 4 | ||
quote-style = Double | ||
line-ending = LineFeed | ||
magic-trailing-comma = Respect | ||
docstring-code = Disabled | ||
docstring-code-line-width = "dynamic" | ||
preview = Enabled | ||
target_version = Py39 | ||
source_type = Python | ||
``` | ||
|
||
```python | ||
# This test is in its own file because it results in AST changes on stable. | ||
# We don't plan to fix it on stable because we plan on promoting f-string formatting soon. | ||
# Regression test for https://github.com/astral-sh/ruff/issues/14766 | ||
# Don't change the casing of the escaped characters in the f-string because it would be observable in the debug expression. | ||
# >>> f"{r"\xFF"=}" | ||
# 'r"ÿ"=\'\\\\xFF\'' | ||
# >>> f"{r"\xff"=}" | ||
# 'r"ÿ"=\'\\\\xff\'' | ||
f"{r"\xFF"=}" | ||
f"{r"\xff"=}" | ||
# Test for https://github.com/astral-sh/ruff/issues/14926 | ||
# We could change the casing of the escaped characters in non-raw f-string because Python interprets the inner string | ||
# before printing it as a debug expression. For now, we decided not to change the casing because it's fairly complicated | ||
# to implement and it seems uncommon (debug expressions are uncommon, escapes are uncommon). | ||
# These two strings could be formatted to the same output but we currently don't do that. | ||
f"{"\xFF\N{space}"=}" | ||
f"{"\xff\N{SPACE}"=}" | ||
``` |