X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/489d00ed8f4fb90d5788609a474632ab5a16591f..df2ae3bbe6c45298aabb6c04e85cb353205626f1:/tests/test_black.py diff --git a/tests/test_black.py b/tests/test_black.py index b8af711..6638dc4 100644 --- a/tests/test_black.py +++ b/tests/test_black.py @@ -11,7 +11,7 @@ import sys from tempfile import TemporaryDirectory from typing import Any, BinaryIO, Generator, List, Tuple, Iterator import unittest -from unittest.mock import patch +from unittest.mock import patch, MagicMock from click import unstyle from click.testing import CliRunner @@ -400,6 +400,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_fmtonoff2(self) -> None: + source, expected = read_data("fmtonoff2") + 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_remove_empty_parentheses_after_class(self) -> None: source, expected = read_data("class_blank_parentheses") @@ -1162,6 +1170,49 @@ class BlackTestCase(unittest.TestCase): with self.assertRaises(AssertionError): black.assert_equivalent("{}", "None") + def test_symlink_out_of_root_directory(self) -> None: + # prepare argumens + path = MagicMock() + root = THIS_DIR + child = MagicMock() + include = re.compile(black.DEFAULT_INCLUDES) + exclude = re.compile(black.DEFAULT_EXCLUDES) + report = black.Report() + + # set the behavior of mock arguments + # child should behave like a symlink which resolved path is clearly + # outside of the root directory + path.iterdir.return_value = [child] + child.resolve.return_value = Path("/a/b/c") + child.is_symlink.return_value = True + + # call the method + # it should not raise any error + list(black.gen_python_files_in_dir(path, root, include, exclude, report)) + + # check the call of the methods of the mock objects + path.iterdir.assert_called_once() + child.resolve.assert_called_once() + child.is_symlink.assert_called_once() + + # set the behavior of mock arguments + # child should behave like a strange file which resolved path is clearly + # outside of the root directory + child.is_symlink.return_value = False + + # call the method + # it should raise a ValueError + with self.assertRaises(ValueError): + list(black.gen_python_files_in_dir(path, root, include, exclude, report)) + + # check the call of the methods of the mock objects + path.iterdir.assert_called() + self.assertEqual(path.iterdir.call_count, 2) + child.resolve.assert_called() + self.assertEqual(child.resolve.call_count, 2) + child.is_symlink.assert_called() + self.assertEqual(child.is_symlink.call_count, 2) + if __name__ == "__main__": - unittest.main() + unittest.main(module="test_black")