add test case for preserving newlines from stdin

This commit is contained in:
Zsolt Dollenstein 2018-08-26 21:19:22 +01:00
parent a37abdcbc5
commit 401836d02e

View File

@ -84,8 +84,11 @@ class BlackRunner(CliRunner):
This is a hack that can be removed once we depend on Click 7.x""" This is a hack that can be removed once we depend on Click 7.x"""
def __init__(self, stderrbuf: BinaryIO) -> None: def __init__(self) -> None:
self.stderrbuf = stderrbuf self.stderrbuf = BytesIO()
self.stdoutbuf = BytesIO()
self.stdout_bytes = b""
self.stderr_bytes = b""
super().__init__() super().__init__()
@contextmanager @contextmanager
@ -96,6 +99,8 @@ def isolation(self, *args: Any, **kwargs: Any) -> Generator[BinaryIO, None, None
sys.stderr = TextIOWrapper(self.stderrbuf, encoding=self.charset) sys.stderr = TextIOWrapper(self.stderrbuf, encoding=self.charset)
yield output yield output
finally: finally:
self.stdout_bytes = sys.stdout.buffer.getvalue()
self.stderr_bytes = sys.stderr.buffer.getvalue()
sys.stderr = hold_stderr sys.stderr = hold_stderr
@ -160,8 +165,7 @@ def test_black(self) -> None:
def test_piping(self) -> None: def test_piping(self) -> None:
source, expected = read_data("../black", data=False) source, expected = read_data("../black", data=False)
stderrbuf = BytesIO() result = BlackRunner().invoke(
result = BlackRunner(stderrbuf).invoke(
black.main, black.main,
["-", "--fast", f"--line-length={ll}"], ["-", "--fast", f"--line-length={ll}"],
input=BytesIO(source.encode("utf8")), input=BytesIO(source.encode("utf8")),
@ -179,9 +183,8 @@ def test_piping_diff(self) -> None:
source, _ = read_data("expression.py") source, _ = read_data("expression.py")
expected, _ = read_data("expression.diff") expected, _ = read_data("expression.diff")
config = THIS_DIR / "data" / "empty_pyproject.toml" config = THIS_DIR / "data" / "empty_pyproject.toml"
stderrbuf = BytesIO()
args = ["-", "--fast", f"--line-length={ll}", "--diff", f"--config={config}"] args = ["-", "--fast", f"--line-length={ll}", "--diff", f"--config={config}"]
result = BlackRunner(stderrbuf).invoke( result = BlackRunner().invoke(
black.main, args, input=BytesIO(source.encode("utf8")) black.main, args, input=BytesIO(source.encode("utf8"))
) )
self.assertEqual(result.exit_code, 0) self.assertEqual(result.exit_code, 0)
@ -244,11 +247,8 @@ def test_expression_diff(self) -> None:
rf"{re.escape(str(tmp_file))}\t\d\d\d\d-\d\d-\d\d " rf"{re.escape(str(tmp_file))}\t\d\d\d\d-\d\d-\d\d "
rf"\d\d:\d\d:\d\d\.\d\d\d\d\d\d \+\d\d\d\d" rf"\d\d:\d\d:\d\d\.\d\d\d\d\d\d \+\d\d\d\d"
) )
stderrbuf = BytesIO()
try: try:
result = BlackRunner(stderrbuf).invoke( result = BlackRunner().invoke(black.main, ["--diff", str(tmp_file)])
black.main, ["--diff", str(tmp_file)]
)
self.assertEqual(result.exit_code, 0) self.assertEqual(result.exit_code, 0)
finally: finally:
os.unlink(tmp_file) os.unlink(tmp_file)
@ -1219,6 +1219,18 @@ def test_preserves_line_endings(self) -> None:
if nl == "\n": if nl == "\n":
self.assertNotIn(b"\r\n", updated_contents) self.assertNotIn(b"\r\n", updated_contents)
def test_preserves_line_endings_via_stdin(self) -> None:
for nl in ["\n", "\r\n"]:
contents = nl.join(["def f( ):", " pass"])
runner = BlackRunner()
result = runner.invoke(
black.main, ["-", "--fast"], input=BytesIO(contents.encode("utf8"))
)
output = runner.stdout_bytes
self.assertIn(nl.encode("utf8"), output)
if nl == "\n":
self.assertNotIn(b"\r\n", output)
def test_assert_equivalent_different_asts(self) -> None: def test_assert_equivalent_different_asts(self) -> None:
with self.assertRaises(AssertionError): with self.assertRaises(AssertionError):
black.assert_equivalent("{}", "None") black.assert_equivalent("{}", "None")