Skip to content

Commit

Permalink
fix magic comma and experimental string cache flags (#2131)
Browse files Browse the repository at this point in the history
* fix magic comma and experimental string cache flags

* more changelog

* Update CHANGES.md

Co-authored-by: Cooper Lees <me@cooperlees.com>

* fix tests

Co-authored-by: Cooper Lees <me@cooperlees.com>
  • Loading branch information
JelleZijlstra and cooperlees committed Apr 26, 2021
1 parent 65f0ea6 commit 0a833b4
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 20 deletions.
8 changes: 8 additions & 0 deletions CHANGES.md
@@ -1,5 +1,13 @@
## Change Log

### Unreleased

#### _Black_

- Reflect the `--skip-magic-trailing-comma` and `--experimental-string-processing` flags
in the name of the cache file. Without this fix, changes in these flags would not take
effect if the cache had already been populated. (#2131)

### 21.4b0

#### _Black_
Expand Down
4 changes: 3 additions & 1 deletion src/black/__init__.py
Expand Up @@ -273,9 +273,9 @@ class Mode:
target_versions: Set[TargetVersion] = field(default_factory=set)
line_length: int = DEFAULT_LINE_LENGTH
string_normalization: bool = True
is_pyi: bool = False
magic_trailing_comma: bool = True
experimental_string_processing: bool = False
is_pyi: bool = False

def get_cache_key(self) -> str:
if self.target_versions:
Expand All @@ -290,6 +290,8 @@ def get_cache_key(self) -> str:
str(self.line_length),
str(int(self.string_normalization)),
str(int(self.is_pyi)),
str(int(self.magic_trailing_comma)),
str(int(self.experimental_string_processing)),
]
return ".".join(parts)

Expand Down
7 changes: 4 additions & 3 deletions tests/test_black.py
Expand Up @@ -379,11 +379,12 @@ def test_detect_pos_only_arguments(self) -> None:
@patch("black.dump_to_file", dump_to_stderr)
def test_string_quotes(self) -> None:
source, expected = read_data("string_quotes")
actual = fs(source)
mode = black.Mode(experimental_string_processing=True)
actual = fs(source, mode=mode)
self.assertFormatEqual(expected, actual)
black.assert_equivalent(source, actual)
black.assert_stable(source, actual, DEFAULT_MODE)
mode = replace(DEFAULT_MODE, string_normalization=False)
black.assert_stable(source, actual, mode)
mode = replace(mode, string_normalization=False)
not_normalized = fs(source, mode=mode)
self.assertFormatEqual(source.replace("\\\n", ""), not_normalized)
black.assert_equivalent(source, not_normalized)
Expand Down
37 changes: 22 additions & 15 deletions tests/test_format.py
Expand Up @@ -16,7 +16,6 @@
SIMPLE_CASES = [
"beginning_backslash",
"bracketmatch",
"cantfit",
"class_blank_parentheses",
"class_methods_new_line",
"collections",
Expand All @@ -26,7 +25,6 @@
"comments4",
"comments5",
"comments6",
"comments7",
"comments_non_breaking_space",
"comment_after_escaped_newline",
"composition",
Expand All @@ -48,11 +46,7 @@
"function2",
"function_trailing_comma",
"import_spacing",
"long_strings",
"long_strings__edge_case",
"long_strings__regression",
"numeric_literals_py2",
"percent_precedence",
"python2",
"python2_unicode_literals",
"remove_parens",
Expand All @@ -62,6 +56,15 @@
"tupleassign",
]

EXPERIMENTAL_STRING_PROCESSING_CASES = [
"cantfit",
"comments7",
"long_strings",
"long_strings__edge_case",
"long_strings__regression",
"percent_precedence",
]


SOURCES = [
"tests/test_black.py",
Expand All @@ -86,19 +89,23 @@ class TestSimpleFormat(BlackBaseTestCase):
@parameterized.expand(SIMPLE_CASES)
@patch("black.dump_to_file", dump_to_stderr)
def test_simple_format(self, filename: str) -> None:
source, expected = read_data(filename)
actual = fs(source)
self.assertFormatEqual(expected, actual)
black.assert_equivalent(source, actual)
black.assert_stable(source, actual, DEFAULT_MODE)
self.check_file(filename, DEFAULT_MODE)

@parameterized.expand(EXPERIMENTAL_STRING_PROCESSING_CASES)
@patch("black.dump_to_file", dump_to_stderr)
def test_experimental_format(self, filename: str) -> None:
self.check_file(filename, black.Mode(experimental_string_processing=True))

@parameterized.expand(SOURCES)
@patch("black.dump_to_file", dump_to_stderr)
def test_source_is_formatted(self, filename: str) -> None:
path = THIS_DIR.parent / filename
source, expected = read_data(str(path), data=False)
actual = fs(source, mode=DEFAULT_MODE)
self.check_file(str(path), DEFAULT_MODE, data=False)
self.assertFalse(ff(path))

def check_file(self, filename: str, mode: black.Mode, *, data: bool = True) -> None:
source, expected = read_data(filename, data=data)
actual = fs(source, mode=mode)
self.assertFormatEqual(expected, actual)
black.assert_equivalent(source, actual)
black.assert_stable(source, actual, DEFAULT_MODE)
self.assertFalse(ff(path))
black.assert_stable(source, actual, mode)
2 changes: 1 addition & 1 deletion tests/util.py
Expand Up @@ -12,7 +12,7 @@
DETERMINISTIC_HEADER = "[Deterministic header]"


DEFAULT_MODE = black.FileMode(experimental_string_processing=True)
DEFAULT_MODE = black.Mode()
ff = partial(black.format_file_in_place, mode=DEFAULT_MODE, fast=True)
fs = partial(black.format_str, mode=DEFAULT_MODE)

Expand Down

0 comments on commit 0a833b4

Please sign in to comment.