X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/d8fa8df0526de9c0968e0a3568008f58eae45364..6b5eb7d4651c7333cc3f5df4bf7aa7a1f1ffb45b:/tests/test_black.py diff --git a/tests/test_black.py b/tests/test_black.py index be6d98a..e09feff 100644 --- a/tests/test_black.py +++ b/tests/test_black.py @@ -111,6 +111,15 @@ def async_test(f: Callable[..., Coroutine[Any, None, R]]) -> Callable[..., None] return wrapper +@contextmanager +def skip_if_exception(e: str) -> Iterator[None]: + try: + yield + except Exception as exc: + if exc.__class__.__name__ == e: + unittest.skip(f"Encountered expected exception {exc}, skipping") + + class BlackRunner(CliRunner): """Modify CliRunner so that stderr is not merged with stdout. @@ -344,6 +353,23 @@ class BlackTestCase(unittest.TestCase): black.assert_equivalent(source, actual) black.assert_stable(source, actual, black.FileMode()) + @patch("black.dump_to_file", dump_to_stderr) + def test_pep_570(self) -> None: + source, expected = read_data("pep_570") + actual = fs(source) + self.assertFormatEqual(expected, actual) + black.assert_stable(source, actual, black.FileMode()) + if sys.version_info >= (3, 8): + black.assert_equivalent(source, actual) + + def test_detect_pos_only_arguments(self) -> None: + source, _ = read_data("pep_570") + root = black.lib2to3_parse(source) + features = black.get_features_used(root) + self.assertIn(black.Feature.POS_ONLY_ARGUMENTS, features) + versions = black.detect_target_versions(root) + self.assertIn(black.TargetVersion.PY38, versions) + @patch("black.dump_to_file", dump_to_stderr) def test_string_quotes(self) -> None: source, expected = read_data("string_quotes") @@ -1497,6 +1523,9 @@ class BlackTestCase(unittest.TestCase): ): ff(THIS_FILE) + # TODO: remove these decorators once the below is released + # https://github.com/aio-libs/aiohttp/commit/bfb99eb92bbc4a7462bc51dda3e480feed43882d + @skip_if_exception("ClientOSError") @unittest.skipUnless(has_blackd_deps, "blackd's dependencies are not installed") @async_test async def test_blackd_request_needs_formatting(self) -> None: @@ -1507,6 +1536,7 @@ class BlackTestCase(unittest.TestCase): self.assertEqual(response.charset, "utf8") self.assertEqual(await response.read(), b'print("hello world")\n') + @skip_if_exception("ClientOSError") @unittest.skipUnless(has_blackd_deps, "blackd's dependencies are not installed") @async_test async def test_blackd_request_no_change(self) -> None: @@ -1516,6 +1546,7 @@ class BlackTestCase(unittest.TestCase): self.assertEqual(response.status, 204) self.assertEqual(await response.read(), b"") + @skip_if_exception("ClientOSError") @unittest.skipUnless(has_blackd_deps, "blackd's dependencies are not installed") @async_test async def test_blackd_request_syntax_error(self) -> None: @@ -1529,6 +1560,7 @@ class BlackTestCase(unittest.TestCase): msg=f"Expected error to start with 'Cannot parse', got {repr(content)}", ) + @skip_if_exception("ClientOSError") @unittest.skipUnless(has_blackd_deps, "blackd's dependencies are not installed") @async_test async def test_blackd_unsupported_version(self) -> None: @@ -1539,6 +1571,7 @@ class BlackTestCase(unittest.TestCase): ) self.assertEqual(response.status, 501) + @skip_if_exception("ClientOSError") @unittest.skipUnless(has_blackd_deps, "blackd's dependencies are not installed") @async_test async def test_blackd_supported_version(self) -> None: @@ -1549,6 +1582,7 @@ class BlackTestCase(unittest.TestCase): ) self.assertEqual(response.status, 200) + @skip_if_exception("ClientOSError") @unittest.skipUnless(has_blackd_deps, "blackd's dependencies are not installed") @async_test async def test_blackd_invalid_python_variant(self) -> None: @@ -1573,6 +1607,7 @@ class BlackTestCase(unittest.TestCase): await check("pypy3.0") await check("jython3.4") + @skip_if_exception("ClientOSError") @unittest.skipUnless(has_blackd_deps, "blackd's dependencies are not installed") @async_test async def test_blackd_pyi(self) -> None: @@ -1585,6 +1620,7 @@ class BlackTestCase(unittest.TestCase): self.assertEqual(response.status, 200) self.assertEqual(await response.text(), expected) + @skip_if_exception("ClientOSError") @unittest.skipUnless(has_blackd_deps, "blackd's dependencies are not installed") @async_test async def test_blackd_python_variant(self) -> None: @@ -1617,6 +1653,7 @@ class BlackTestCase(unittest.TestCase): await check("3.4", 204) await check("py3.4", 204) + @skip_if_exception("ClientOSError") @unittest.skipUnless(has_blackd_deps, "blackd's dependencies are not installed") @async_test async def test_blackd_line_length(self) -> None: @@ -1627,6 +1664,7 @@ class BlackTestCase(unittest.TestCase): ) self.assertEqual(response.status, 200) + @skip_if_exception("ClientOSError") @unittest.skipUnless(has_blackd_deps, "blackd's dependencies are not installed") @async_test async def test_blackd_invalid_line_length(self) -> None: