#!/usr/bin/env python3
import asyncio
+import logging
from concurrent.futures import ThreadPoolExecutor
from contextlib import contextmanager, redirect_stderr
from functools import partial, wraps
else:
has_blackd_deps = True
-
ff = partial(black.format_file_in_place, mode=black.FileMode(), fast=True)
fs = partial(black.format_str, mode=black.FileMode())
THIS_FILE = Path(__file__)
black.assert_equivalent(source, actual)
black.assert_stable(source, actual, black.FileMode())
- def test_comment_indentation(self) -> None:
+ def test_tab_comment_indentation(self) -> None:
contents_tab = "if 1:\n\tif 2:\n\t\tpass\n\t# comment\n\tpass\n"
contents_spc = "if 1:\n if 2:\n pass\n # comment\n pass\n"
-
- self.assertFormatEqual(fs(contents_spc), contents_spc)
- self.assertFormatEqual(fs(contents_tab), contents_spc)
+ self.assertFormatEqual(contents_spc, fs(contents_spc))
+ self.assertFormatEqual(contents_spc, fs(contents_tab))
contents_tab = "if 1:\n\tif 2:\n\t\tpass\n\t\t# comment\n\tpass\n"
contents_spc = "if 1:\n if 2:\n pass\n # comment\n pass\n"
+ self.assertFormatEqual(contents_spc, fs(contents_spc))
+ self.assertFormatEqual(contents_spc, fs(contents_tab))
- self.assertFormatEqual(fs(contents_tab), contents_spc)
- self.assertFormatEqual(fs(contents_spc), contents_spc)
+ # mixed tabs and spaces (valid Python 2 code)
+ contents_tab = "if 1:\n if 2:\n\t\tpass\n\t# comment\n pass\n"
+ contents_spc = "if 1:\n if 2:\n pass\n # comment\n pass\n"
+ self.assertFormatEqual(contents_spc, fs(contents_spc))
+ self.assertFormatEqual(contents_spc, fs(contents_tab))
+
+ contents_tab = "if 1:\n if 2:\n\t\tpass\n\t\t# comment\n pass\n"
+ contents_spc = "if 1:\n if 2:\n pass\n # comment\n pass\n"
+ self.assertFormatEqual(contents_spc, fs(contents_spc))
+ self.assertFormatEqual(contents_spc, fs(contents_tab))
def test_report_verbose(self) -> None:
report = black.Report(verbose=True)
source, expected = read_data("force_py36")
result = CliRunner().invoke(
black.main,
- ["-", "-q", "--target-version=cpy36"],
+ ["-", "-q", "--target-version=py36"],
input=BytesIO(source.encode("utf8")),
)
self.assertEqual(result.exit_code, 0)
except RuntimeError as re:
self.fail(f"`patch_click()` failed, exception still raised: {re}")
+ def test_root_logger_not_used_directly(self) -> None:
+ def fail(*args: Any, **kwargs: Any) -> None:
+ self.fail("Record created with root logger")
+
+ with patch.multiple(
+ logging.root,
+ debug=fail,
+ info=fail,
+ warning=fail,
+ error=fail,
+ critical=fail,
+ log=fail,
+ ):
+ ff(THIS_FILE)
+
@unittest.skipUnless(has_blackd_deps, "blackd's dependencies are not installed")
@async_test
async def test_blackd_request_needs_formatting(self) -> None:
await check("lol")
await check("ruby3.5")
await check("pyi3.6")
- await check("cpy1.5")
+ await check("py1.5")
await check("2.8")
- await check("cpy2.8")
+ await check("py2.8")
await check("3.0")
await check("pypy3.0")
await check("jython3.4")
self.assertEqual(response.status, expected_status)
await check("3.6", 200)
- await check("cpy3.6", 200)
+ await check("py3.6", 200)
await check("3.5,3.7", 200)
- await check("3.5,cpy3.7", 200)
+ await check("3.5,py3.7", 200)
await check("2", 204)
await check("2.7", 204)
- await check("cpy2.7", 204)
- await check("pypy2.7", 204)
+ await check("py2.7", 204)
await check("3.4", 204)
- await check("cpy3.4", 204)
- await check("pypy3.4", 204)
+ await check("py3.4", 204)
@unittest.skipUnless(has_blackd_deps, "blackd's dependencies are not installed")
@async_test