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"""
def __init__(self, stderrbuf: BinaryIO) -> None:
self.stderrbuf = stderrbuf
def __init__(self) -> None:
self.stderrbuf = BytesIO()
self.stdoutbuf = BytesIO()
self.stdout_bytes = b""
self.stderr_bytes = b""
super().__init__()
@contextmanager
@ -96,6 +99,8 @@ def isolation(self, *args: Any, **kwargs: Any) -> Generator[BinaryIO, None, None
sys.stderr = TextIOWrapper(self.stderrbuf, encoding=self.charset)
yield output
finally:
self.stdout_bytes = sys.stdout.buffer.getvalue()
self.stderr_bytes = sys.stderr.buffer.getvalue()
sys.stderr = hold_stderr
@ -160,8 +165,7 @@ def test_black(self) -> None:
def test_piping(self) -> None:
source, expected = read_data("../black", data=False)
stderrbuf = BytesIO()
result = BlackRunner(stderrbuf).invoke(
result = BlackRunner().invoke(
black.main,
["-", "--fast", f"--line-length={ll}"],
input=BytesIO(source.encode("utf8")),
@ -179,9 +183,8 @@ def test_piping_diff(self) -> None:
source, _ = read_data("expression.py")
expected, _ = read_data("expression.diff")
config = THIS_DIR / "data" / "empty_pyproject.toml"
stderrbuf = BytesIO()
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"))
)
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"\d\d:\d\d:\d\d\.\d\d\d\d\d\d \+\d\d\d\d"
)
stderrbuf = BytesIO()
try:
result = BlackRunner(stderrbuf).invoke(
black.main, ["--diff", str(tmp_file)]
)
result = BlackRunner().invoke(black.main, ["--diff", str(tmp_file)])
self.assertEqual(result.exit_code, 0)
finally:
os.unlink(tmp_file)
@ -1219,6 +1219,18 @@ def test_preserves_line_endings(self) -> None:
if nl == "\n":
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:
with self.assertRaises(AssertionError):
black.assert_equivalent("{}", "None")