fix magic comma and experimental string cache flags (#2131)
* 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>
This commit is contained in:
parent
65f0ea6159
commit
0a833b4b14
@ -1,5 +1,13 @@
|
|||||||
## Change Log
|
## 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
|
### 21.4b0
|
||||||
|
|
||||||
#### _Black_
|
#### _Black_
|
||||||
|
@ -273,9 +273,9 @@ class Mode:
|
|||||||
target_versions: Set[TargetVersion] = field(default_factory=set)
|
target_versions: Set[TargetVersion] = field(default_factory=set)
|
||||||
line_length: int = DEFAULT_LINE_LENGTH
|
line_length: int = DEFAULT_LINE_LENGTH
|
||||||
string_normalization: bool = True
|
string_normalization: bool = True
|
||||||
|
is_pyi: bool = False
|
||||||
magic_trailing_comma: bool = True
|
magic_trailing_comma: bool = True
|
||||||
experimental_string_processing: bool = False
|
experimental_string_processing: bool = False
|
||||||
is_pyi: bool = False
|
|
||||||
|
|
||||||
def get_cache_key(self) -> str:
|
def get_cache_key(self) -> str:
|
||||||
if self.target_versions:
|
if self.target_versions:
|
||||||
@ -290,6 +290,8 @@ def get_cache_key(self) -> str:
|
|||||||
str(self.line_length),
|
str(self.line_length),
|
||||||
str(int(self.string_normalization)),
|
str(int(self.string_normalization)),
|
||||||
str(int(self.is_pyi)),
|
str(int(self.is_pyi)),
|
||||||
|
str(int(self.magic_trailing_comma)),
|
||||||
|
str(int(self.experimental_string_processing)),
|
||||||
]
|
]
|
||||||
return ".".join(parts)
|
return ".".join(parts)
|
||||||
|
|
||||||
|
@ -379,11 +379,12 @@ def test_detect_pos_only_arguments(self) -> None:
|
|||||||
@patch("black.dump_to_file", dump_to_stderr)
|
@patch("black.dump_to_file", dump_to_stderr)
|
||||||
def test_string_quotes(self) -> None:
|
def test_string_quotes(self) -> None:
|
||||||
source, expected = read_data("string_quotes")
|
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)
|
self.assertFormatEqual(expected, actual)
|
||||||
black.assert_equivalent(source, actual)
|
black.assert_equivalent(source, actual)
|
||||||
black.assert_stable(source, actual, DEFAULT_MODE)
|
black.assert_stable(source, actual, mode)
|
||||||
mode = replace(DEFAULT_MODE, string_normalization=False)
|
mode = replace(mode, string_normalization=False)
|
||||||
not_normalized = fs(source, mode=mode)
|
not_normalized = fs(source, mode=mode)
|
||||||
self.assertFormatEqual(source.replace("\\\n", ""), not_normalized)
|
self.assertFormatEqual(source.replace("\\\n", ""), not_normalized)
|
||||||
black.assert_equivalent(source, not_normalized)
|
black.assert_equivalent(source, not_normalized)
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
SIMPLE_CASES = [
|
SIMPLE_CASES = [
|
||||||
"beginning_backslash",
|
"beginning_backslash",
|
||||||
"bracketmatch",
|
"bracketmatch",
|
||||||
"cantfit",
|
|
||||||
"class_blank_parentheses",
|
"class_blank_parentheses",
|
||||||
"class_methods_new_line",
|
"class_methods_new_line",
|
||||||
"collections",
|
"collections",
|
||||||
@ -26,7 +25,6 @@
|
|||||||
"comments4",
|
"comments4",
|
||||||
"comments5",
|
"comments5",
|
||||||
"comments6",
|
"comments6",
|
||||||
"comments7",
|
|
||||||
"comments_non_breaking_space",
|
"comments_non_breaking_space",
|
||||||
"comment_after_escaped_newline",
|
"comment_after_escaped_newline",
|
||||||
"composition",
|
"composition",
|
||||||
@ -48,11 +46,7 @@
|
|||||||
"function2",
|
"function2",
|
||||||
"function_trailing_comma",
|
"function_trailing_comma",
|
||||||
"import_spacing",
|
"import_spacing",
|
||||||
"long_strings",
|
|
||||||
"long_strings__edge_case",
|
|
||||||
"long_strings__regression",
|
|
||||||
"numeric_literals_py2",
|
"numeric_literals_py2",
|
||||||
"percent_precedence",
|
|
||||||
"python2",
|
"python2",
|
||||||
"python2_unicode_literals",
|
"python2_unicode_literals",
|
||||||
"remove_parens",
|
"remove_parens",
|
||||||
@ -62,6 +56,15 @@
|
|||||||
"tupleassign",
|
"tupleassign",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
EXPERIMENTAL_STRING_PROCESSING_CASES = [
|
||||||
|
"cantfit",
|
||||||
|
"comments7",
|
||||||
|
"long_strings",
|
||||||
|
"long_strings__edge_case",
|
||||||
|
"long_strings__regression",
|
||||||
|
"percent_precedence",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
SOURCES = [
|
SOURCES = [
|
||||||
"tests/test_black.py",
|
"tests/test_black.py",
|
||||||
@ -86,19 +89,23 @@ class TestSimpleFormat(BlackBaseTestCase):
|
|||||||
@parameterized.expand(SIMPLE_CASES)
|
@parameterized.expand(SIMPLE_CASES)
|
||||||
@patch("black.dump_to_file", dump_to_stderr)
|
@patch("black.dump_to_file", dump_to_stderr)
|
||||||
def test_simple_format(self, filename: str) -> None:
|
def test_simple_format(self, filename: str) -> None:
|
||||||
source, expected = read_data(filename)
|
self.check_file(filename, DEFAULT_MODE)
|
||||||
actual = fs(source)
|
|
||||||
self.assertFormatEqual(expected, actual)
|
@parameterized.expand(EXPERIMENTAL_STRING_PROCESSING_CASES)
|
||||||
black.assert_equivalent(source, actual)
|
@patch("black.dump_to_file", dump_to_stderr)
|
||||||
black.assert_stable(source, actual, DEFAULT_MODE)
|
def test_experimental_format(self, filename: str) -> None:
|
||||||
|
self.check_file(filename, black.Mode(experimental_string_processing=True))
|
||||||
|
|
||||||
@parameterized.expand(SOURCES)
|
@parameterized.expand(SOURCES)
|
||||||
@patch("black.dump_to_file", dump_to_stderr)
|
@patch("black.dump_to_file", dump_to_stderr)
|
||||||
def test_source_is_formatted(self, filename: str) -> None:
|
def test_source_is_formatted(self, filename: str) -> None:
|
||||||
path = THIS_DIR.parent / filename
|
path = THIS_DIR.parent / filename
|
||||||
source, expected = read_data(str(path), data=False)
|
self.check_file(str(path), DEFAULT_MODE, data=False)
|
||||||
actual = fs(source, mode=DEFAULT_MODE)
|
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)
|
self.assertFormatEqual(expected, actual)
|
||||||
black.assert_equivalent(source, actual)
|
black.assert_equivalent(source, actual)
|
||||||
black.assert_stable(source, actual, DEFAULT_MODE)
|
black.assert_stable(source, actual, mode)
|
||||||
self.assertFalse(ff(path))
|
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
DETERMINISTIC_HEADER = "[Deterministic header]"
|
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)
|
ff = partial(black.format_file_in_place, mode=DEFAULT_MODE, fast=True)
|
||||||
fs = partial(black.format_str, mode=DEFAULT_MODE)
|
fs = partial(black.format_str, mode=DEFAULT_MODE)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user