All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
65f0ea6)
* 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>
+### 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)
+
target_versions: Set[TargetVersion] = field(default_factory=set)
line_length: int = DEFAULT_LINE_LENGTH
string_normalization: bool = True
target_versions: Set[TargetVersion] = field(default_factory=set)
line_length: int = DEFAULT_LINE_LENGTH
string_normalization: bool = True
magic_trailing_comma: bool = True
experimental_string_processing: bool = False
magic_trailing_comma: bool = True
experimental_string_processing: bool = False
def get_cache_key(self) -> str:
if self.target_versions:
def get_cache_key(self) -> str:
if self.target_versions:
str(self.line_length),
str(int(self.string_normalization)),
str(int(self.is_pyi)),
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)),
@patch("black.dump_to_file", dump_to_stderr)
def test_string_quotes(self) -> None:
source, expected = read_data("string_quotes")
@patch("black.dump_to_file", dump_to_stderr)
def test_string_quotes(self) -> None:
source, expected = read_data("string_quotes")
+ mode = black.Mode(experimental_string_processing=True)
+ actual = fs(source, mode=mode)
self.assertFormatEqual(expected, actual)
black.assert_equivalent(source, actual)
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)
not_normalized = fs(source, mode=mode)
self.assertFormatEqual(source.replace("\\\n", ""), not_normalized)
black.assert_equivalent(source, not_normalized)
SIMPLE_CASES = [
"beginning_backslash",
"bracketmatch",
SIMPLE_CASES = [
"beginning_backslash",
"bracketmatch",
"class_blank_parentheses",
"class_methods_new_line",
"collections",
"class_blank_parentheses",
"class_methods_new_line",
"collections",
"comments4",
"comments5",
"comments6",
"comments4",
"comments5",
"comments6",
"comments_non_breaking_space",
"comment_after_escaped_newline",
"composition",
"comments_non_breaking_space",
"comment_after_escaped_newline",
"composition",
"function2",
"function_trailing_comma",
"import_spacing",
"function2",
"function_trailing_comma",
"import_spacing",
- "long_strings",
- "long_strings__edge_case",
- "long_strings__regression",
"python2",
"python2_unicode_literals",
"remove_parens",
"python2",
"python2_unicode_literals",
"remove_parens",
+EXPERIMENTAL_STRING_PROCESSING_CASES = [
+ "cantfit",
+ "comments7",
+ "long_strings",
+ "long_strings__edge_case",
+ "long_strings__regression",
+ "percent_precedence",
+]
+
SOURCES = [
"tests/test_black.py",
SOURCES = [
"tests/test_black.py",
@parameterized.expand(SIMPLE_CASES)
@patch("black.dump_to_file", dump_to_stderr)
def test_simple_format(self, filename: str) -> None:
@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
@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)
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)
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)
fs = partial(black.format_str, mode=DEFAULT_MODE)
ff = partial(black.format_file_in_place, mode=DEFAULT_MODE, fast=True)
fs = partial(black.format_str, mode=DEFAULT_MODE)