X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/6316e293ac30a2837ec20eba289fd28a2a18cf89..4dfec562ed3332212cb938d6d4da9671b503ac93:/tests/test_black.py diff --git a/tests/test_black.py b/tests/test_black.py index 3415549..1c22e54 100644 --- a/tests/test_black.py +++ b/tests/test_black.py @@ -17,6 +17,7 @@ ff = partial(black.format_file_in_place, line_length=ll, fast=True) fs = partial(black.format_str, line_length=ll) THIS_FILE = Path(__file__) THIS_DIR = THIS_FILE.parent +EMPTY_LINE = '# EMPTY LINE WITH WHITESPACE' + ' (this comment will be removed)' def dump_to_stderr(*output: str) -> str: @@ -25,7 +26,7 @@ def dump_to_stderr(*output: str) -> str: def read_data(name: str) -> Tuple[str, str]: """read_data('test_name') -> 'input', 'output'""" - if not name.endswith('.py'): + if not name.endswith(('.py', '.out')): name += '.py' _input: List[str] = [] _output: List[str] = [] @@ -33,6 +34,7 @@ def read_data(name: str) -> Tuple[str, str]: lines = test.readlines() result = _input for line in lines: + line = line.replace(EMPTY_LINE, '') if line.rstrip() == '# output': result = _output continue @@ -148,6 +150,22 @@ class BlackTestCase(unittest.TestCase): black.assert_equivalent(source, actual) black.assert_stable(source, actual, line_length=ll) + @patch("black.dump_to_file", dump_to_stderr) + def test_comments3(self) -> None: + source, expected = read_data('comments3') + actual = fs(source) + self.assertFormatEqual(expected, actual) + black.assert_equivalent(source, actual) + black.assert_stable(source, actual, line_length=ll) + + @patch("black.dump_to_file", dump_to_stderr) + def test_comments4(self) -> None: + source, expected = read_data('comments4') + actual = fs(source) + self.assertFormatEqual(expected, actual) + black.assert_equivalent(source, actual) + black.assert_stable(source, actual, line_length=ll) + @patch("black.dump_to_file", dump_to_stderr) def test_cantfit(self) -> None: source, expected = read_data('cantfit') @@ -188,6 +206,14 @@ class BlackTestCase(unittest.TestCase): # black.assert_equivalent(source, actual) black.assert_stable(source, actual, line_length=ll) + @patch("black.dump_to_file", dump_to_stderr) + def test_fmtonoff(self) -> None: + source, expected = read_data('fmtonoff') + actual = fs(source) + self.assertFormatEqual(expected, actual) + black.assert_equivalent(source, actual) + black.assert_stable(source, actual, line_length=ll) + def test_report(self) -> None: report = black.Report() out_lines = [] @@ -282,6 +308,30 @@ class BlackTestCase(unittest.TestCase): node = black.lib2to3_parse(expected) self.assertFalse(black.is_python36(node)) + def test_debug_visitor(self) -> None: + source, _ = read_data('debug_visitor.py') + expected, _ = read_data('debug_visitor.out') + out_lines = [] + err_lines = [] + + def out(msg: str, **kwargs: Any) -> None: + out_lines.append(msg) + + def err(msg: str, **kwargs: Any) -> None: + err_lines.append(msg) + + with patch("black.out", out), patch("black.err", err): + black.DebugVisitor.show(source) + actual = '\n'.join(out_lines) + '\n' + log_name = '' + if expected != actual: + log_name = black.dump_to_file(*out_lines) + self.assertEqual( + expected, + actual, + f"AST print out is different. Actual version dumped to {log_name}", + ) + if __name__ == '__main__': unittest.main()