diff --git a/pylsp_ruff/plugin.py b/pylsp_ruff/plugin.py index 2c3f3d9..4a05017 100644 --- a/pylsp_ruff/plugin.py +++ b/pylsp_ruff/plugin.py @@ -224,7 +224,7 @@ def create_diagnostic(check: RuffCheck, settings: PluginSettings) -> Diagnostic: # Ruff intends to implement severity codes in the future, # see https://github.com/charliermarsh/ruff/issues/645. severity = DiagnosticSeverity.Warning - if check.code == "None" or check.code == "E999" or check.code[0] == "F": + if check.code == "None" or check.code == "invalid-syntax" or check.code[0] == "F": severity = DiagnosticSeverity.Error # Check if check.code starts contained in given severities diff --git a/pyproject.toml b/pyproject.toml index 85883b0..72697d4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ readme = "README.md" requires-python = ">=3.8" license = {text = "MIT"} dependencies = [ - "ruff>=0.2.0", + "ruff>=0.8.0", "python-lsp-server", "cattrs!=23.2.1", "lsprotocol>=2023.0.1", diff --git a/tests/test_ruff_lint.py b/tests/test_ruff_lint.py index fa915fc..52ef6a5 100644 --- a/tests/test_ruff_lint.py +++ b/tests/test_ruff_lint.py @@ -24,6 +24,10 @@ def using_const(): return t """ +DOC_INVALID = r""" +a = +""" + @pytest.fixture() def workspace(tmp_path): @@ -74,6 +78,24 @@ def test_ruff_lint(workspace): os.remove(name) +def test_ruff_invalid(workspace): + name, doc = temp_document(DOC_INVALID, workspace) + try: + diags = ruff_lint.pylsp_lint(workspace, doc) + assert len(diags) == 1 + diag = diags[0] + + assert diag["source"] == "ruff" + assert diag["code"] == "invalid-syntax" + assert diag["message"] == "Expected an expression" + assert diag["range"]["start"] == {"line": 1, "character": 4} + assert diag["range"]["end"] == {"line": 2, "character": 0} + assert diag["severity"] == lsp.DiagnosticSeverity.Error + assert diag["tags"] == [] + finally: + os.remove(name) + + def test_ruff_config_param(workspace): with patch("pylsp_ruff.plugin.Popen") as popen_mock: mock_instance = popen_mock.return_value @@ -268,7 +290,7 @@ def f(): diags = ruff_lint.pylsp_lint(workspace, doc) diag_codes = [diag["code"] for diag in diags] - assert "E999" not in diag_codes + assert "invalid-syntax" not in diag_codes assert "E402" in diag_codes assert "F401" in diag_codes assert "F841" in diag_codes